KKSU
2024-11-18 16c771f45be5915143528a1fbba7136460f219d7
refactor(dev): 更新开发环境配置并优化代码

- 修改数据库、Redis、RabbitMQ等服务的连接信息
- 更新支付宝和微信支付的相关配置
- 调整静态资源路径和系统配置- 注释掉部分代码以备后续使用
- 优化定时任务类WxxcxJob,暂时禁用获取access_token和发票记录更新功能
4 files modified
1753 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java 2 ●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/quartz/WxxcxJob.java 83 ●●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 58 ●●●●● patch | view | raw | blame | history
src/test/java/cc/mrbird/febs/AgentTest.java 1610 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java
@@ -33,7 +33,7 @@
    @ApiModelProperty(value = "验证码", example = "123456")
    private String code;
    @NotBlank(message = "邀请码不能为空")
//    @NotBlank(message = "邀请码不能为空")
    @ApiModelProperty(value = "邀请码")
    private String inviteId;
src/main/java/cc/mrbird/febs/mall/quartz/WxxcxJob.java
@@ -1,19 +1,13 @@
package cc.mrbird.febs.mall.quartz;
import cc.mrbird.febs.common.properties.XcxProperties;
import cc.mrbird.febs.common.utils.HttpCurlUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.common.utils.SpringContextHolder;
import cc.mrbird.febs.mall.entity.MallMemberCoupon;
import cc.mrbird.febs.mall.mapper.MallMemberCouponMapper;
import cc.mrbird.febs.mall.service.MallInvoiceService;
import cc.mrbird.febs.pay.util.WechatConfigure;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -22,10 +16,7 @@
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Component
@@ -48,34 +39,34 @@
     * 获取access_token
     * 有效期两小时
     */
    @Scheduled(cron = "0 0 0/1 * * ? ")
    public void getAccessToken() throws IOException {
        log.info("执行access_token刷新");
        String appId = xcxProperties.getXcxAppid();
        String appSecret = xcxProperties.getXcxSecret();
        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
        String jsonStr = restTemplate.getForObject(url, String.class);
        /**
         * 返回结果
         * {"access_token":"ACCESS_TOKEN","expires_in":7200}
         */
        if (!jsonStr.contains("access_token")) {
            System.out.println("获取微信access_token失败");
        }
        String accessTokenKey = WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY;
        JSONObject jsonObject = JSONObject.parseObject(jsonStr);
        String accessToken = jsonObject.getString(accessTokenKey);
        if (StrUtil.isEmpty(accessToken)) {
            log.error("获取access token失败: {}" , jsonObject.getString("errmsg"));
            throw new ApiException("获取access token失败");
        } else {
            log.info("wx access_token : {}",accessToken);
            redisUtils.set(accessTokenKey,accessToken);
        }
    }
//    @Scheduled(cron = "0 0 0/1 * * ? ")
//    public void getAccessToken() throws IOException {
//        log.info("执行access_token刷新");
//        String appId = xcxProperties.getXcxAppid();
//        String appSecret = xcxProperties.getXcxSecret();
//        String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
//        String jsonStr = restTemplate.getForObject(url, String.class);
//
//        /**
//         * 返回结果
//         * {"access_token":"ACCESS_TOKEN","expires_in":7200}
//         */
//        if (!jsonStr.contains("access_token")) {
//            System.out.println("获取微信access_token失败");
//        }
//
//        String accessTokenKey = WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY;
//        JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//        String accessToken = jsonObject.getString(accessTokenKey);
//        if (StrUtil.isEmpty(accessToken)) {
//            log.error("获取access token失败: {}" , jsonObject.getString("errmsg"));
//            throw new ApiException("获取access token失败");
//        } else {
//            log.info("wx access_token : {}",accessToken);
//            redisUtils.set(accessTokenKey,accessToken);
//        }
//
//    }
    @Scheduled(cron = "0 0 0/1 * * ? ")
    public void expireCoupon() {
@@ -90,14 +81,14 @@
    }
    /**
     * 更新发票记录表数据
     * 定时,每天凌晨一点
     * 已完成的订单,更新到发票记录中
     */
    @Scheduled(cron = "0 0 1 * * ?")
    public void mallInvoiceJob() {
        mallInvoiceService.mallInvoiceJob();
    }
//    /**
//     * 更新发票记录表数据
//     * 定时,每天凌晨一点
//     * 已完成的订单,更新到发票记录中
//     */
//    @Scheduled(cron = "0 0 1 * * ?")
//    public void mallInvoiceJob() {
//        mallInvoiceService.mallInvoiceJob();
//    }
}
src/main/resources/application-dev.yml
@@ -2,7 +2,7 @@
  datasource:
    dynamic:
      # 是否开启 SQL日志输出,生产环境建议关闭,有性能损耗
      p6spy: true
      p6spy: false
      hikari:
        connection-timeout: 30000
        max-lifetime: 1800000
@@ -15,20 +15,20 @@
      datasource:
        # 数据源-1,名称为 base
        base:
          username: db_blnka
          password: blnka!@#123
          username: db_e2
          password: db_e20806123!@#
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://121.37.162.173:3306/db_blnka?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
          url: jdbc:mysql://47.250.124.232:3306/db_e2?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
  redis:
    # Redis数据库索引(默认为 0)
    database: 4
    database: 1
    # Redis服务器地址
    host: 120.27.238.55
    host: 47.250.124.232
    # Redis服务器连接端口
    port: 6479
    port: 6379
    # Redis 密码
    password: d3y6dsdl;f.327
    password: lianghua1!qaz2@WSX
    lettuce:
      pool:
        # 连接池中的最小空闲连接
@@ -42,49 +42,41 @@
    # 连接超时时间(毫秒)
    timeout: 5000
  rabbitmq:
    host: 120.27.238.55
    host: 47.250.124.232
    port: 5672
    username: ct_rabbit
    password: 123456
    username: e20210816
    password: e20210816
    publisher-confirm-type: correlated
pay:
  ali:
    appId: 2021002182686737
    appId: 2016120704000539
    # 支付宝公钥
    publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1WQMo5SqNK644piwb1iK83RUwNyw6bEr/+diP/+FUx2HBuidRJwGmwRE4PVzX2NXT/HsXIZdVFXYl8JbZA2uphXILmKr039CSTKpB+5v2hzKtnrBFNtLn+pKI5cchhDdk5IFo5esNV7yWbFlZKF4sztn1/s0uwn7DHyaNRdr7480kVxVUHqwl+t2G8SqifyvUMhT0Fq9a72yft7vgC7PYh2TF21vrH8pV4xbTcZ54evMl0wyDj6W1xsW+hYsdWy/gEogpvZ+qtQyL6LbjUhpSHeNJcGP004ilFB4ksfQqUrEcxROYV9bhTb+1QY+rmmuv4PCSesdHDNqFRj1ReeNzwIDAQAB
    publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAobfti31eIy4U59JUrL+eMosuY97jk444eFyMeoxkG1ljJ3GytPV7YlLL6TVgvON6eR0eFvWKK4MoTEW0TkpxgmuurkpTSXDB0bNiuYJQyiju4Bikt83dQo64YKYDSwBNA9hFPHFM1mhWpJM/3mYjbbLT9AoL8q+n1fBxFtcAMmxXBqZiECT8qzuTV3VfTufXsNhY9LJXcDkAr98GZDEbH+Zhr5die2Rzpvj9o8aSs6J0IU+PJpU+SPZEjpITAPtLauKEV2MFGUaxnli1PgJexW8OW9smCDZPhIce6vYYwn0wQKtnFla0zWPe2r85egggE0y9SJs5zQX5F3OlJzLS/wIDAQAB
    # 支付宝私钥
    privateKey: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDOhu+hD2kuMh5s7IQuKjexeC4DmXxrAr/bu10rNB304NaIRUNAkGPI9tep7ZRBZqa/Tjrfom8LeeBnbA1n+SgxROSREEXDA1E3/XJY+vYivehVTD2TuA2GEnEtLXUgxQJVfz/CNIOa3rCc1nj9n4/kv03Sx/yqiKnLd6h9dRvdaY9k7DwnWPu1FT5T3bpTiU+oKaUODkcfUPpMH8aQaolzKY07M0cqZFn75Z0KFAoM6p/TDoF7JKpwdzGO5xuJe8YT4xx2OcLY++d/dzSoQvvsKh8r1yE37Z5B9FxHSHe1GuR2wOQxhgXUyaj7gden/pAVspzbjZTDdQppjzNavnzdAgMBAAECggEAKAJL+c+aeLCM5F0NXkQfdenqQBhD2hc2Q8MQUYZPJ1lHNi700FUof44SSYEU73aLZxQoo5o8GOULa/2quzGxb5oBDXkxio3h9g7LUCGN/Tz8/Uk/xJYrSIXaFv5vamHACgAUwfKabC4n2LpTxg5bOd01nlfPwtmmyxvrMCK3uzSWzxDLag0jVh9DGA97D00UOkL9QpEJ26dpBuF7pf9Nt0BtfyJMFrCbJXY2F3j65VNN4f2rOG7/DTGm434Sektj9Bc31ept9MfPw9VyRbV7EMvG5be9iDqBvLbRGhQVtBjv3N/E7p3uUI5HyxM8GOjQhSwSOJQ0gQS8vNdNN90qoQKBgQDqxoTFOsPM3+LoQj1r7CjoXhooEfpikyHpK2l8mzM4+La9ajzUJzTWT8nc0k2Qha8AvBZzJ2+kSKAjtwc/VNTu0IeEn480V9zVyBFkcC294d3A1keN5ch9wP1it5fWsVh+62T9xGXlQQIpuYeQm1BXj7kltd7vE8t6fLrmnhVkpwKBgQDhMqgZoRQGmcgrVc8F//lBO7g6ku/+GfNJnve64sRi5ZifwSiNSULVqDWmdHJiVWyYXoTvt1o3bqQorawe0c+wEzknn8ZipNDnN9tybxhKqD6pzCbRv6yWmU+9X9ZhSxYJeumn3sqxyZB7rnqJQ7/vpsoNZRvp0LS85iJVJFXO2wKBgB7O3i1jgL4pwwTnbFf1LYkQkC4h7dFxrUmDwNvxIc+gE5rXjhPo8S4OWlb34eXNJSHbjLafvi64uQr2waS15RtRkfb9WTVtMjV7g4zCi74XHZpohAtC1ARshtOlc+9gZlSBX0dNtnFXDombJwb62pgi7BDexNpqppD0PTJ2HCiRAoGAREmZIdRvfyToxwNJOLeLPNXAIrrl3Xa/CGcVFe2nwZl/s4neIyHBC4rrYeNTwC/JM1cOFqbRy5dYXiFz3RCgWvMpVLOlc8oossSEXeoEQrdL8S8/4kCuNCifPnyuRGiBcTR9X/M2Ib1Oe8LH05HgxOodwPwU/8zS0akzZgATqRsCgYA5TDAX996ThMjHr+qjLh5gdIJ+85jxP0+tqVk5Vwl3niS3qJGoLIofIgHYee9U6c1wLJU+lUTaxYpuaJPwQFbdMGGGB8i3c2XczVBShCUEedelTghl7Izwh/DILmlAQCvYsC+wWMcFdU3LhYvFGXmTx9ToRBLdtd6v45+7MXcHQw==
    privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCht+2LfV4jLhTn0lSsv54yiy5j3uOTjjh4XIx6jGQbWWMncbK09XtiUsvpNWC843p5HR4W9YorgyhMRbROSnGCa66uSlNJcMHRs2K5glDKKO7gGKS3zd1CjrhgpgNLAE0D2EU8cUzWaFakkz/eZiNtstP0Cgvyr6fV8HEW1wAybFcGpmIQJPyrO5NXdV9O59ew2Fj0sldwOQCv3wZkMRsf5mGvl2J7ZHOm+P2jxpKzonQhT48mlT5I9kSOkhMA+0tq4oRXYwUZRrGeWLU+Al7Fbw5b2yYINk+Ehx7q9hjCfTBAq2cWVrTNY97avzl6CCATTL1ImznNBfkXc6UnMtL/AgMBAAECggEAXLwJBr0sV0YcjNcK4Ui8YcV4I6Lzo3ChpzuC/t80pI48kqjbTnOafkZ2UdPfFlHnsD3nPEkvI0aBvEMYYvDDaINxVtaeLfXv3t1cFn7I7zRLzsuy4Qe3AmyvBBUOvFp+z16cTU23Pxfz30nlDRZK6KPscPu14EOkHcVUREGkBkU6Gqft38Vd21ClRmh76oWsYCGzJkx547blVMAWJw+fGgHerrdwaSOlvD8Tj20dnCU7ifvUNQiWsdn6wOdUz24o4oB8kSBmZbOYCviljvqeHo2SZlIuneiXwz9TanOvlIaGkVeHnJvNd3S6FRXTmcTZQpW9RtDBZF0o1Oh+W44Q6QKBgQDbVwsD3GdFFlYWUMvtTGUcHqtzrvWDln6Lh0vtEmQIA28aDBre2URRYm+AhqfsjiAz1WwVVVeBjbSk7ZJv0kWWvJiA8/2XyZhHdDidWvhndQJD5HLK9IqPNDd6WA9cW/SQs2ehtqUVM55IzsYZK2Tbnb9UYuIHTHiMExL/jOGq0wKBgQC8v2rPC02+qVJyx82Gq6CD57EuirKTA1ZUFQIBRbfccqMoYaJogREUjlUNN5mZAuQ6yLqOHi79v6G/7NegP4WavIRJ/W9jqjLXP1AJ/jeo9IGu96HCsV2+M/5DRD/zrZakQMJPZYrgZOqjtL1qLcKdpuXumT0VAyy41yoU0jvDpQKBgQCvyABR5c71dUMkuzfTQ0g80u+A1JR6Ep/z3kghBH4aVfYyH8VhFypDNuo5TLFDSVvRbpciObTZZOGC08ppx1Bxz09A+Ukg3jUl/qRop0EwWHuqQWkl8fkhby2O5Qfacu97D+xbk26VoTqXCu+DuF0qDDALxvtx8f0h9R9iolswdQKBgE5+sLWwNsHe+vnfHBswjw2sMmRvq/o1vhYzsmTDEMauKipmCDu7yVWqJ7bac5dNu4qy5dqqtNI0etktbzMml7KVSdLXghaJtqELpIazYYRzQud39p7YUmsChnCFFq+JdoeSovyP9ySA84/nX4qjwzb7LM6AjgWKD3RDjy2fjNk9AoGBANEJdXJhwon+cMfPT9XfCVee0Cr//91WzfGYnVpevRuYp/q29rcZ0mZiXPfvge0vogZEFHIzsQfjtW84W4H81aSbFj9lncIzRl4O8yFGsr1Y9wkewmQqylM+A/I4eu9UcpK/hJX5G07EnCuZCabj12CGnA3uA9Icgg28jbg2BCR6
    # 回调地址
    noticeUrl: http://120.27.238.55:8801/api/pay/aliCallBack
    domain: https://openapi.alipaydev.com/gateway.do
    domain: https://openapi.alipay.com/gateway.do
#xcx:
#  wechar_login_url: https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
#  xcx_appid: wx5cc58f796224af61
#  xcx_secret: 71403646f666f9b9dca308d4f357765c
#  debug: true
#  wecharPaynotifyUrl: http://groupbuy.csxuncong.com/api/xcxPay/wxpayCallback
#  certLocalPath: /home/xuncongCert/apiclient_cert.p12
#  wecharpayMchid: 1605533690
#  wecharpaySecret: CSxc168888CSxc168888CSxc168888xc
xcx:
  wechar_login_url: https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code
  xcx_appid: wx2948b3b914a9722e
  xcx_secret: 1685dfd99a43e213ed8be07870b898ba
  xcx_appid: wxad2fdb2fcad10fb2
  xcx_secret: 9bb58d655bff419feec3a6d948ca8b8d
  debug: false
  wecharPaynotifyUrl: http://groupbuy.csxuncong.com/api/xcxPay/wxpayCallback
  wecharRechargePaynotifyUrl: http://groupbuy.csxuncong.com/api/xcxPay/rechargeCallBack
  certLocalPath: /home/yyscCert/apiclient_cert.p12
  wecharpayMchid: 1631084809
  wecharpaySecret: YYSC13875978057YYSC13875978057SH
  wecharPaynotifyUrl: http://api.blnka.cn/api/xcxPay/wxpayCallback
  wecharRechargePaynotifyUrl: http://api.blnka.cn/api/xcxPay/rechargeCallBack
  certLocalPath: /home/blnkaCert/apiclient_cert.p12
  wecharpayMchid: 1658958205
  wecharpaySecret: daL341aN5orDt13puXadsAf2rpuXdq4r
  wecharpaySecretV3: daL341aN5orDt13puXadsAf2rpuX12v3
  gaodeKey: 95ede7157929f5f6b6c758971be924b1
  serviceName: yiyuanshucai
static:
  resource:
    url: http://blnka.csxuncong.com/file/
    url: http://file.blnka.cn/file/
    path: /mnt/sdc/webresource/file/
system:
  job: false
  job: true
src/test/java/cc/mrbird/febs/AgentTest.java
@@ -1,815 +1,815 @@
package cc.mrbird.febs;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.common.exception.FebsException;
import cc.mrbird.febs.common.utils.LoginUserUtil;
import cc.mrbird.febs.common.utils.RedisUtils;
import cc.mrbird.febs.mall.conversion.MallGoodsConversion;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.quartz.ProfitJob;
import cc.mrbird.febs.mall.service.IAgentService;
import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
import cc.mrbird.febs.mall.vo.*;
import cc.mrbird.febs.pay.util.WechatConfigure;
import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
import cc.mrbird.febs.rabbit.producter.AgentProducer;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.exceptions.ApiException;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.aspectj.weaver.loadtime.Agent;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * @author wzy
 * @date 2021-09-25
 **/
@Slf4j
@SpringBootTest
public class AgentTest {
    @Autowired
    private AgentProducer agentProducer;
    @Autowired
    private DataDictionaryCustomMapper dataDictionaryCustomMapper;
    @Autowired
    private IAgentService agentService;
    @Autowired
    private MallGoodsStyleMapper mallGoodsStyleMapper;
    @Autowired
    private  MallActAwardSetMapper mallActAwardSetMapper;
    @Autowired
    private  MallMemberMapper mallMemberMapper;
    @Autowired
    private  MallActWinRecordMapper mallActWinRecordMapper;
    @Autowired
    private  MallActLuckdrawRecordMapper mallActLuckdrawRecordMapper;
    @Autowired
    private  MallMemberWalletMapper mallMemberWalletMapper;
    @Autowired
    private  MallActSetMapper mallActSetMapper;
    @Autowired
    private  MallGoodsSkuMapper mallGoodsSkuMapper;
    @Autowired
    private  MallOrderItemMapper mallOrderItemMapper;
    @Autowired
    private  MallGoodsMapper mallGoodsMapper;
    @Autowired
    private  MallGoodsImagesMapper goodsImagesMapper;
    @Autowired
    private IApiMallOrderInfoService iApiMallOrderInfoService;
    @Test
    public void getCouponAmountMap(){
        Long memberCouponId = 139L;
        List<AddOrderItemDto> items = new ArrayList<>();
        AddOrderItemDto addOrderItemDto = new AddOrderItemDto();
        addOrderItemDto.setSkuId(185L);
        addOrderItemDto.setCnt(2);
        items.add(addOrderItemDto);
        Map<Long, BigDecimal> couponAmountMap = iApiMallOrderInfoService.getCouponAmountMap(memberCouponId, items);
        for (Map.Entry<Long, BigDecimal> entry : couponAmountMap.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
    @Autowired
    private RedisUtils redisUtils;
    @Resource
    RestTemplate restTemplate;
    public static final String API_KEY = "MPHXcBxkGLIDOmoaahS9pIB7";
    public static final String SECRET_KEY = "f5ueNY65fE9C6FzFTVKc6Imo8NdZSWMw";
    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
    @Test
    public void getAccessToken(){
        ApiIdentifyAddressDto apiIdentifyAddressDto = new ApiIdentifyAddressDto();
        apiIdentifyAddressDto.setText("上海市浦东新区纳贤路701号百度上海研发中心 F4A000 张三");
        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, JSONUtil.toJsonStr(apiIdentifyAddressDto));
        Request request = new Request.Builder()
                .url("https://aip.baidubce.com/rpc/2.0/nlp/v1/address?access_token=" + redisUtils.get(WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY).toString())
                .method("POST", body)
                .addHeader("Content-Type", "application/json")
                .addHeader("Accept", "application/json")
                .build();
        try {
            Response response = HTTP_CLIENT.newCall(request).execute();
            String responseStr = response.body().string();
            System.out.println(responseStr);
            if (responseStr.contains("error_code")) {
                System.out.println("获取access_token失败");
                JSONObject jsonObject = JSONUtil.parseObj(responseStr);
                System.out.print(jsonObject.get("error_code").toString());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void getAccessToken2(){
        // 官网获取的 API Key 更新为你注册的
        String clientId = "MPHXcBxkGLIDOmoaahS9pIB7";
        // 官网获取的 Secret Key 更新为你注册的
        String clientSecret = "f5ueNY65fE9C6FzFTVKc6Imo8NdZSWMw";
        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
        String getAccessTokenUrl = authHost
                // 1. grant_type为固定参数
                + "grant_type=client_credentials"
                // 2. 官网获取的 API Key
                + "&client_id=" + clientId
                // 3. 官网获取的 Secret Key
                + "&client_secret=" + clientSecret;
        String jsonStr = restTemplate.getForObject(getAccessTokenUrl, String.class);
        /**
         * 返回结果
         * {"access_token":"ACCESS_TOKEN","expires_in":7200}
         */
        if (!jsonStr.contains("access_token")) {
            System.out.println("获取access_token失败");
        }
        com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(jsonStr);
        String accessToken = jsonObject.getString("access_token");
        String accessTokenKey = WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY;
        if (StrUtil.isEmpty(accessToken)) {
            log.error("获取baidu access_token失败: {}" , jsonObject.getString("errmsg"));
            throw new ApiException("获取access token失败");
        } else {
            log.info("baidu access_token : {}",accessToken);
            System.out.println(accessToken);
            redisUtils.set(accessTokenKey,accessToken);
        }
    }
    @Test
    public void goodsDetails(){
        Long id = 68L;
        MallGoods mallGoods = mallGoodsMapper.selectGoodsDetailById(id);
        if (mallGoods == null) {
            throw new FebsException("商品不存在");
        }
        List<String> images = goodsImagesMapper.selectGoodsImagesByGoodsId(mallGoods.getId());
        MallGoodsDetailsVo mallGoodsDetailsVo = MallGoodsConversion.INSTANCE.entityToDetailsVo(mallGoods);
        List<GoodsDetailsStyleVo> styles = mallGoodsDetailsVo.getStyles();
        if(ObjectUtil.isNotEmpty(styles)){
            for(GoodsDetailsStyleVo goodsDetailsStyleVo : styles){
                List<GoodsDetailsSkuVo> skus = goodsDetailsStyleVo.getSkus();
                if(CollUtil.isNotEmpty(skus) ){
                    for(GoodsDetailsSkuVo goodsDetailsSkuVo : skus){
                        if(StrUtil.isNotEmpty(goodsDetailsSkuVo.getSample())){
                            goodsDetailsSkuVo.setSampleFlag(true);
                        }else{
                            goodsDetailsSkuVo.setSampleFlag(false);
                        }
                    }
                }
            }
        }
        if (CollUtil.isNotEmpty(mallGoods.getStyles())) {
            Map<String, BigDecimal> stockAndVolume = mallGoodsMapper.selectGoodsStockAndVolume(id);
            mallGoodsDetailsVo.setStock(stockAndVolume.get("stock").intValue());
            mallGoodsDetailsVo.setVolume(stockAndVolume.get("volume").intValue());
        }
        mallGoodsDetailsVo.setImages(images);
    }
    @Test
    public void levelTest(){
        ApiCreateOrderVerifyDto apiCreateOrderVerifyDto = new ApiCreateOrderVerifyDto();
        List<AddOrderItemDto> addOrderItemDtos = new ArrayList<>();
        AddOrderItemDto addOrderItemDto = new AddOrderItemDto();
        addOrderItemDto.setCnt(1);
        addOrderItemDto.setSkuId(243L);
        addOrderItemDtos.add(addOrderItemDto);
        apiCreateOrderVerifyDto.setItems(addOrderItemDtos);
        MallMember member = mallMemberMapper.selectById(401L);
        List<AddOrderItemDto> items = apiCreateOrderVerifyDto.getItems();
        if(CollUtil.isEmpty(items)){
            System.out.println("请先挑选商品");
        }
        for (AddOrderItemDto item : apiCreateOrderVerifyDto.getItems()) {
            MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
            if (sku == null) {
                System.out.println("购买商品或sku不存在");
            }
            if("样品".equals(sku.getSample())){
                List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
                if (CollUtil.isNotEmpty(mallOrderItems)) {
                    System.out.println("样品只能购买一次");
                }
                Integer cnt = item.getCnt();
                if(1 < cnt){
                    System.out.println("样品只能购买一件");
                }
            }else{
                //验证用户的等级
                if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
                    System.out.println(sku.getSkuName() + "请先申请成为合伙人");
                }
            }
            if (sku.getStock() < item.getCnt()) {
                System.out.println(sku.getSkuName() + "库存不足");
            }
            MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
            if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                System.out.println(mallGoods.getGoodsName() + "已下架");
            }
        }
    }
//    @Test
//    public void skusTest() {
//        ApiMallAwardDetailsVo apiMallAwardDetailsVo = new ApiMallAwardDetailsVo();
//        Long memberId = 4L;
//        Long actId = 1L;
//        MallMember mallMember = mallMemberMapper.selectById(memberId);
//        if(ObjectUtil.isEmpty(mallMember)){
//            throw new FebsException("用户不存在");
//        }
//package cc.mrbird.febs;
//
//        MallActSet mallActSet = mallActSetMapper.selectById(actId);
//        if(ObjectUtil.isEmpty(mallActSet)){
//            throw new FebsException("活动不存在");
//        }
//        Integer actStatus = mallActSet.getActStatus();
//        if(MallActSet.ACT_STATUS_DISABLED == actStatus){
//            throw new FebsException("活动还没开始");
//        }
//        /**
//         * 获取用户积分数,判断能不能抽奖
//         * 减少对应的积分数量
//         * 较少奖品的已抽奖
//         * 生成一条抽奖记录
//         */
//import cc.mrbird.febs.common.entity.FebsResponse;
//import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
//import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
//import cc.mrbird.febs.common.exception.FebsException;
//import cc.mrbird.febs.common.utils.LoginUserUtil;
//import cc.mrbird.febs.common.utils.RedisUtils;
//import cc.mrbird.febs.mall.conversion.MallGoodsConversion;
//import cc.mrbird.febs.mall.dto.*;
//import cc.mrbird.febs.mall.entity.*;
//import cc.mrbird.febs.mall.mapper.*;
//import cc.mrbird.febs.mall.quartz.ProfitJob;
//import cc.mrbird.febs.mall.service.IAgentService;
//import cc.mrbird.febs.mall.service.IApiMallOrderInfoService;
//import cc.mrbird.febs.mall.vo.*;
//import cc.mrbird.febs.pay.util.WechatConfigure;
//import cc.mrbird.febs.rabbit.consumer.AgentConsumer;
//import cc.mrbird.febs.rabbit.producter.AgentProducer;
//import cn.hutool.core.collection.CollUtil;
//import cn.hutool.core.util.ObjectUtil;
//import cn.hutool.core.util.RandomUtil;
//import cn.hutool.core.util.StrUtil;
//import cn.hutool.json.JSONObject;
//import cn.hutool.json.JSONUtil;
//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.extension.exceptions.ApiException;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import lombok.extern.slf4j.Slf4j;
//import okhttp3.*;
//import org.aspectj.weaver.loadtime.Agent;
//import org.junit.jupiter.api.Test;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.test.context.SpringBootTest;
//import org.springframework.web.client.RestTemplate;
//
//        MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
//        if(ObjectUtil.isEmpty(wallet)){
//            throw new FebsException("账户不存在");
//        }
//        BigDecimal commission = wallet.getCommission();
//        BigDecimal prizeScore = wallet.getPrizeScore();
//        Integer actScoreCnt = mallActSet.getActScoreCnt();
//        if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){
//            throw new FebsException("竞猜积分不足");
//        }
//        /**
//         * 中奖概率 20%
//         * 每次抽奖产生一个随机数要大于8,则中奖
//         * 历史10条抽奖记录有中奖过,中奖记录少于两条,则中奖
//         */
//        //获取中奖概率
//        DataDictionaryCustom scoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
//                DataDictionaryEnum.WIN_SCORE.getType(),
//                DataDictionaryEnum.WIN_SCORE.getCode());
//        DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
//                DataDictionaryEnum.WIN_CASH.getType(),
//                DataDictionaryEnum.WIN_CASH.getCode());
//        String scoreDicValue = scoreDic.getValue();
//        String cashDicValue = cashDic.getValue();
//        BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue));
//        //获取那个更大一点的几率
//        BigDecimal maxProbability = BigDecimal.ZERO;
//        BigDecimal minProbability = BigDecimal.ZERO;
//        Integer maxAwardType = 0;
//        Integer minAwardType = 0;
//        if(new BigDecimal(scoreDicValue).compareTo(new BigDecimal(cashDicValue)) < 0){
//            maxProbability = new BigDecimal(cashDicValue);
//            minProbability = new BigDecimal(scoreDicValue);
//            maxAwardType = MallActAwardSet.AWARD_TYPE_YJ;
//            minAwardType = MallActAwardSet.AWARD_TYPE_JF;
//        }else{
//            maxProbability = new BigDecimal(scoreDicValue);
//            minProbability = new BigDecimal(cashDicValue);
//            maxAwardType = MallActAwardSet.AWARD_TYPE_JF;
//            minAwardType = MallActAwardSet.AWARD_TYPE_YJ;
//        }
//import javax.annotation.Resource;
//import java.io.IOException;
//import java.math.BigDecimal;
//import java.math.RoundingMode;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//
//        BigDecimal multiply = totalProbability.multiply(new BigDecimal(100));
//        BigDecimal failureScope = new BigDecimal(100).subtract(multiply);
//        int randomInt = 90;
//        //小于failureScope这个数字,则没中奖
//        if(new BigDecimal(randomInt).compareTo(failureScope) <= 0){
//            //抽奖记录
//            MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//            mallActLuckdrawRecord.setActId(actId);
//            mallActLuckdrawRecord.setActName(mallActSet.getActName());
//            mallActLuckdrawRecord.setMemberId(memberId);
//            mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//            mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
//            mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//            List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
//            if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
//                apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
//                apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
//            }else{
//                apiMallAwardDetailsVo.setAwardName("未中奖");
//            }
//        }else if(new BigDecimal(randomInt).compareTo(failureScope) > 0
//                && new BigDecimal(randomInt).compareTo(failureScope.add(maxProbability.multiply(new BigDecimal(100)))) <= 0){
//            //大于failureScope.add(maxProbability.multiply(new BigDecimal(100)))这个数字,则中奖
//            //获取最新的十条抽奖记录
//            List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
//            if(CollUtil.isNotEmpty(records)){
//                //中奖次数
//                Integer count = 0;
//                for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
//                    Integer status = mallActLuckdrawRecord.getStatus();
//                    if(MallActLuckdrawRecord.STATUS_ENABLE == status){
//                        count = count + 1;
//                    }
//                }
//                if(new BigDecimal(count).compareTo(maxProbability.multiply(new BigDecimal(10))) < 0){
//                    //获取活动下该类别的奖品
//                    List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
//                    if(CollUtil.isEmpty(mallActAwardSets)){
//                        //抽奖记录
//                        MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                        mallActLuckdrawRecord.setActId(actId);
//                        mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                        mallActLuckdrawRecord.setMemberId(memberId);
//                        mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                        mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
//                        mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                        List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
//                        if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
//                            apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
//                            apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
//                        }else{
//                            apiMallAwardDetailsVo.setAwardName("未中奖");
//                        }
//                    }else{
//                        List<MallActAwardSet> idList = new ArrayList();
//                        for(MallActAwardSet mallActAwardSet : mallActAwardSets){
//                            Integer awardTotal = mallActAwardSet.getAwardTotal();
//                            Integer awardCnt = mallActAwardSet.getAwardCnt();
//                            if(awardCnt < awardTotal){
//                                idList.add(mallActAwardSet);
//                            }
//                        }
//                        MallActAwardSet mallActAwardSet = new MallActAwardSet();
//                        if(idList.size() <= 1){
//                            mallActAwardSet = idList.get(0);
//                        }else{
//                            int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
//                            mallActAwardSet = idList.get(randomIdIndex);
//                        }
//                        mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
//                        mallActAwardSetMapper.updateById(mallActAwardSet);
//
//                        MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                        mallActLuckdrawRecord.setActId(actId);
//                        mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                        mallActLuckdrawRecord.setMemberId(memberId);
//                        mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                        mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
//                        mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                        MallActWinRecord mallActWinRecord = new MallActWinRecord();
//                        mallActWinRecord.setMemberId(memberId);
//                        mallActWinRecord.setActId(actId);
//                        mallActWinRecord.setActName(mallActSet.getActName());
//                        mallActWinRecord.setAwardId(mallActAwardSet.getId());
//                        mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
//                        mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
//                        mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
//                        mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
//                        mallActWinRecordMapper.insert(mallActWinRecord);
//
//                        apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
//                        apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
//                        apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
//                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
//
//                        if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
//                            prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
//                        }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
//                            commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
//                        }
//                    }
//                }else{
//                    //抽奖记录
//                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                    mallActLuckdrawRecord.setActId(actId);
//                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                    mallActLuckdrawRecord.setMemberId(memberId);
//                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
//                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                    List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
//                    if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
//                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
//                        apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
//                    }else{
//                        apiMallAwardDetailsVo.setAwardName("未中奖");
//                    }
//                }
//            }else{
//                //获取活动下该类别的奖品
//                List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
//                if(CollUtil.isEmpty(mallActAwardSets)){
//                    //抽奖记录
//                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                    mallActLuckdrawRecord.setActId(actId);
//                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                    mallActLuckdrawRecord.setMemberId(memberId);
//                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
//                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                    List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
//                    if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
//                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
//                        apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
//                    }else{
//                        apiMallAwardDetailsVo.setAwardName("未中奖");
//                    }
//                }else{
//                    List<MallActAwardSet> idList = new ArrayList();
//                    for(MallActAwardSet mallActAwardSet : mallActAwardSets){
//                        Integer awardTotal = mallActAwardSet.getAwardTotal();
//                        Integer awardCnt = mallActAwardSet.getAwardCnt();
//                        if(awardCnt < awardTotal){
//                            idList.add(mallActAwardSet);
//                        }
//                    }
//                    MallActAwardSet mallActAwardSet = new MallActAwardSet();
//                    if(idList.size() <= 1){
//                        mallActAwardSet = idList.get(0);
//                    }else{
//                        int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
//                        mallActAwardSet = idList.get(randomIdIndex);
//                    }
//                    mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
//                    mallActAwardSetMapper.updateById(mallActAwardSet);
//
//                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                    mallActLuckdrawRecord.setActId(actId);
//                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                    mallActLuckdrawRecord.setMemberId(memberId);
//                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
//                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                    MallActWinRecord mallActWinRecord = new MallActWinRecord();
//                    mallActWinRecord.setMemberId(memberId);
//                    mallActWinRecord.setActId(actId);
//                    mallActWinRecord.setActName(mallActSet.getActName());
//                    mallActWinRecord.setAwardId(mallActAwardSet.getId());
//                    mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
//                    mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
//                    mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
//                    mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
//                    mallActWinRecordMapper.insert(mallActWinRecord);
//
//                    apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
//                    apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
//                    apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
//                    apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
//
//                    if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
//                        prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
//                    }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
//                        commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
//                    }
//                }
//            }
//        }else{
//            //中奖
//            //获取最新的十条抽奖记录
//            List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
//            if(CollUtil.isNotEmpty(records)){
//                //中奖次数
//                Integer count = 0;
//                for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
//                    Integer status = mallActLuckdrawRecord.getStatus();
//                    if(MallActLuckdrawRecord.STATUS_ENABLE == status){
//                        count = count + 1;
//                    }
//                }
//                if(new BigDecimal(count).compareTo(minProbability.multiply(new BigDecimal(10))) < 0){
//                    //获取活动下该类别的奖品
//                    List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
//                    if(CollUtil.isEmpty(mallActAwardSets)){
//                        //抽奖记录
//                        MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                        mallActLuckdrawRecord.setActId(actId);
//                        mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                        mallActLuckdrawRecord.setMemberId(memberId);
//                        mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                        mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
//                        mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                        List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
//                        if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
//                            apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
//                            apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
//                        }else{
//                            apiMallAwardDetailsVo.setAwardName("未中奖");
//                        }
//                    }else{
//                        List<MallActAwardSet> idList = new ArrayList();
//                        for(MallActAwardSet mallActAwardSet : mallActAwardSets){
//                            Integer awardTotal = mallActAwardSet.getAwardTotal();
//                            Integer awardCnt = mallActAwardSet.getAwardCnt();
//                            if(awardCnt < awardTotal){
//                                idList.add(mallActAwardSet);
//                            }
//                        }
//                        MallActAwardSet mallActAwardSet = new MallActAwardSet();
//                        if(idList.size() <= 1){
//                            mallActAwardSet = idList.get(0);
//                        }else{
//                            int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
//                            mallActAwardSet = idList.get(randomIdIndex);
//                        }
//                        mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
//                        mallActAwardSetMapper.updateById(mallActAwardSet);
//
//                        MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                        mallActLuckdrawRecord.setActId(actId);
//                        mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                        mallActLuckdrawRecord.setMemberId(memberId);
//                        mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                        mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
//                        mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                        MallActWinRecord mallActWinRecord = new MallActWinRecord();
//                        mallActWinRecord.setMemberId(memberId);
//                        mallActWinRecord.setActId(actId);
//                        mallActWinRecord.setActName(mallActSet.getActName());
//                        mallActWinRecord.setAwardId(mallActAwardSet.getId());
//                        mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
//                        mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
//                        mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
//                        mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
//                        mallActWinRecordMapper.insert(mallActWinRecord);
//
//                        apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
//                        apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
//                        apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
//                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
//
//                        if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
//                            prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
//                        }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
//                            commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
//                        }
//                    }
//                }else{
//                    //抽奖记录
//                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                    mallActLuckdrawRecord.setActId(actId);
//                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                    mallActLuckdrawRecord.setMemberId(memberId);
//                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
//                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                    List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
//                    if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
//                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
//                        apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
//                    }else{
//                        apiMallAwardDetailsVo.setAwardName("未中奖");
//                    }
//                }
//            }else{
//                //获取活动下该类别的奖品
//                List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
//                if(CollUtil.isEmpty(mallActAwardSets)){
//                    //抽奖记录
//                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                    mallActLuckdrawRecord.setActId(actId);
//                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                    mallActLuckdrawRecord.setMemberId(memberId);
//                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
//                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                    List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
//                    if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
//                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
//                        apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
//                    }else{
//                        apiMallAwardDetailsVo.setAwardName("未中奖");
//                    }
//                }else{
//                    List<MallActAwardSet> idList = new ArrayList();
//                    for(MallActAwardSet mallActAwardSet : mallActAwardSets){
//                        Integer awardTotal = mallActAwardSet.getAwardTotal();
//                        Integer awardCnt = mallActAwardSet.getAwardCnt();
//                        if(awardCnt < awardTotal){
//                            idList.add(mallActAwardSet);
//                        }
//                    }
//                    MallActAwardSet mallActAwardSet = new MallActAwardSet();
//                    if(idList.size() <= 1){
//                        mallActAwardSet = idList.get(0);
//                    }else{
//                        int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
//                        mallActAwardSet = idList.get(randomIdIndex);
//                    }
//                    mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
//                    mallActAwardSetMapper.updateById(mallActAwardSet);
//
//                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
//                    mallActLuckdrawRecord.setActId(actId);
//                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
//                    mallActLuckdrawRecord.setMemberId(memberId);
//                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
//                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
//                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
//
//                    MallActWinRecord mallActWinRecord = new MallActWinRecord();
//                    mallActWinRecord.setMemberId(memberId);
//                    mallActWinRecord.setActId(actId);
//                    mallActWinRecord.setActName(mallActSet.getActName());
//                    mallActWinRecord.setAwardId(mallActAwardSet.getId());
//                    mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
//                    mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
//                    mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
//                    mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
//                    mallActWinRecordMapper.insert(mallActWinRecord);
//
//                    apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
//                    apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
//                    apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
//                    apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
//
//                    if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
//                        prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
//                    }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
//                        commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
//                    }
//                }
//            }
//        }
//
//        //扣竞猜积分
//        prizeScore = prizeScore.subtract(new BigDecimal(actScoreCnt));
//        wallet.setPrizeScore(prizeScore);
//        wallet.setCommission(commission);
//        mallMemberWalletMapper.updateAmountWithVersion(wallet);
//
//        System.out.println(apiMallAwardDetailsVo);
//    }
//
//    @Test
//    public void agentTest() {
////        agentProducer.sendDelayMsg(1L, 10000L);
//
//        ApiMallActWinDetailsDto apiMallActWinDetailsDto = new ApiMallActWinDetailsDto();
//        apiMallActWinDetailsDto.setActId(1L);
//        apiMallActWinDetailsDto.setPageNow(1);
//        apiMallActWinDetailsDto.setPageSize(10);
//        Long memberId = 4L;
//        MallMember mallMember = mallMemberMapper.selectById(memberId);
//        if(ObjectUtil.isEmpty(mallMember)){
//            throw new FebsException("用户不存在");
//        }
//        apiMallActWinDetailsDto.setMemberId(memberId);
//
//        Long actId = apiMallActWinDetailsDto.getActId();
//        MallActSet mallActSet = mallActSetMapper.selectById(actId);
//        if(ObjectUtil.isEmpty(mallActSet)){
//            throw new FebsException("活动不存在");
//        }
//        Page<ApiMallActWinDetailsVo> page = new Page<>(apiMallActWinDetailsDto.getPageNow(), apiMallActWinDetailsDto.getPageSize());
//        IPage<ApiMallActWinDetailsVo> apiMallActWinDetailsVoIPage = mallActWinRecordMapper.selectApiMallActWinDetailsListInPage(apiMallActWinDetailsDto, page);
//        System.out.println(apiMallActWinDetailsVoIPage);
//    }
//
//    @Test
//    public void insertAgentTest() {
////        AgentInfo agentInfo = new AgentInfo();
////        agentInfo.setOrderType(2);
////        agentInfo.setOrderCnt(2000);
////        agentInfo.setLastCnt(3);
////        agentInfo.setDirectIncome(BigDecimal.valueOf(50));
////        agentInfo.setTeamIncome(BigDecimal.valueOf(15));
////        agentInfo.setTeamIncomeType(2);
////
////        DataDictionaryCustom data = new DataDictionaryCustom();
////        data.setType("AGENT_LEVEL_REQUIRE");
////        data.setCode(AgentLevelEnum.FOUR_LEVEL.name());
////        data.setValue(JSONObject.toJSONString(agentInfo));
////        dataDictionaryCustomMapper.insert(data);
//    }
//
//    @Test
//    public void insertData() {
//        int i = 1;
//        for (AgentLevelEnum value : AgentLevelEnum.values()) {
//            DataDictionaryCustom data = new DataDictionaryCustom();
//            data.setType("AGENT_LEVEL");
//            data.setDescription(value.getName());
//            data.setCode(value.name());
//            data.setValue(String.valueOf(i));
//            dataDictionaryCustomMapper.insert(data);
//        }
//
//    }
//
//    public static void main(String[] args) {
//        getJson();
//    }
//
//    public static void getJson(){
//        AgentLevelUpdateDto adminAgentLevelUpdateInfoVo = new AgentLevelUpdateDto();
//        String jsonStr = "{\"directIncome\":50,\"lastCnt\":3,\"orderCnt\":2000,\"orderType\":2,\"teamIncome\":15,\"teamIncomeType\":2}";
//        JSONObject jsonObject = JSONObject.parseObject(jsonStr);
//        adminAgentLevelUpdateInfoVo.setDirectIncome(new BigDecimal((jsonObject.get("directIncome")==null?0:jsonObject.get("directIncome")).toString()));
//        adminAgentLevelUpdateInfoVo.setLastCnt(Integer.parseInt((jsonObject.get("lastCnt")==null?0:jsonObject.get("lastCnt")).toString()));
//        adminAgentLevelUpdateInfoVo.setOrderCnt(Integer.parseInt((jsonObject.get("orderCnt")==null?0:jsonObject.get("orderCnt")).toString()));
//        adminAgentLevelUpdateInfoVo.setOrderType(Integer.parseInt(jsonObject.get("orderType").toString()));
//        adminAgentLevelUpdateInfoVo.setTeamIncome(new BigDecimal((jsonObject.get("teamIncome")==null?0:jsonObject.get("teamIncome")).toString()));
//        adminAgentLevelUpdateInfoVo.setTeamIncomeType(Integer.parseInt(jsonObject.get("orderType").toString()));
//        adminAgentLevelUpdateInfoVo.setId(14L);
//        AgentLevelUpdateDto agentLevelUpdateDtoJson = new AgentLevelUpdateDto();
//        agentLevelUpdateDtoJson.setDirectIncome(adminAgentLevelUpdateInfoVo.getDirectIncome());
//        agentLevelUpdateDtoJson.setLastCnt(adminAgentLevelUpdateInfoVo.getLastCnt());
//        agentLevelUpdateDtoJson.setOrderCnt(adminAgentLevelUpdateInfoVo.getOrderCnt());
//        agentLevelUpdateDtoJson.setTeamIncome(adminAgentLevelUpdateInfoVo.getTeamIncome());
//        agentLevelUpdateDtoJson.setOrderType(adminAgentLevelUpdateInfoVo.getOrderType());
//        agentLevelUpdateDtoJson.setTeamIncomeType(adminAgentLevelUpdateInfoVo.getTeamIncomeType());
//        JSONObject jsonObjectA = (JSONObject)JSONObject.toJSON(agentLevelUpdateDtoJson);
//        System.out.println(jsonObjectA.toJSONString());
//    }
//
//    @Test
//    public void autoLevelUp() {
//        // agentService.autoUpAgentLevel(3L);
////        agentProducer.sendAutoLevelUpMsg(5L);
//
//        agentProducer.sendReturnMoneyMsg(2L);
//    }
//
//    @Test
//    public void returnMoney() {
//        // agentService.autoUpAgentLevel(3L);
////        agentProducer.sendAutoLevelUpMsg(5L);
////        agentProducer.sendReturnMoneyMsg(52L);
//        agentService.returnMoneyToAgent(52L);
//    }
//
//    @Test
//    public void bigdecimalTest() {
//        BigDecimal aa = new BigDecimal("1.345");
//
//        System.out.println(aa.setScale(2, RoundingMode.DOWN));
//        System.out.println(aa.setScale(2, RoundingMode.UP));
//    }
///**
// * @author wzy
// * @date 2021-09-25
// **/
//@Slf4j
//@SpringBootTest
//public class AgentTest {
//
//    @Autowired
//    private ProfitJob profitJob;
//    private AgentProducer agentProducer;
//
//    @Autowired
//    private DataDictionaryCustomMapper dataDictionaryCustomMapper;
//
//    @Autowired
//    private IAgentService agentService;
//
//    @Autowired
//    private MallGoodsStyleMapper mallGoodsStyleMapper;
//
//    @Autowired
//    private  MallActAwardSetMapper mallActAwardSetMapper;
//    @Autowired
//    private  MallMemberMapper mallMemberMapper;
//    @Autowired
//    private  MallActWinRecordMapper mallActWinRecordMapper;
//    @Autowired
//    private  MallActLuckdrawRecordMapper mallActLuckdrawRecordMapper;
//    @Autowired
//    private  MallMemberWalletMapper mallMemberWalletMapper;
//    @Autowired
//    private  MallActSetMapper mallActSetMapper;
//    @Autowired
//    private  MallGoodsSkuMapper mallGoodsSkuMapper;
//    @Autowired
//    private  MallOrderItemMapper mallOrderItemMapper;
//    @Autowired
//    private  MallGoodsMapper mallGoodsMapper;
//    @Autowired
//    private  MallGoodsImagesMapper goodsImagesMapper;
//    @Autowired
//    private IApiMallOrderInfoService iApiMallOrderInfoService;
//    @Test
//    public void profitJobTest() {
//        profitJob.profitJob();
//    public void getCouponAmountMap(){
//        Long memberCouponId = 139L;
//        List<AddOrderItemDto> items = new ArrayList<>();
//        AddOrderItemDto addOrderItemDto = new AddOrderItemDto();
//        addOrderItemDto.setSkuId(185L);
//        addOrderItemDto.setCnt(2);
//        items.add(addOrderItemDto);
//        Map<Long, BigDecimal> couponAmountMap = iApiMallOrderInfoService.getCouponAmountMap(memberCouponId, items);
//        for (Map.Entry<Long, BigDecimal> entry : couponAmountMap.entrySet()) {
//            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
//        }
//    }
//
//
    @Autowired
    private AgentConsumer agentConsumer;
    @Test
    public void orderReturnTest() {
        agentConsumer.getScoreMsg(215L);
    }
}
//    @Autowired
//    private RedisUtils redisUtils;
//    @Resource
//    RestTemplate restTemplate;
//
//    public static final String API_KEY = "MPHXcBxkGLIDOmoaahS9pIB7";
//    public static final String SECRET_KEY = "f5ueNY65fE9C6FzFTVKc6Imo8NdZSWMw";
//
//    static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
//    @Test
//    public void getAccessToken(){
//        ApiIdentifyAddressDto apiIdentifyAddressDto = new ApiIdentifyAddressDto();
//        apiIdentifyAddressDto.setText("上海市浦东新区纳贤路701号百度上海研发中心 F4A000 张三");
//        MediaType mediaType = MediaType.parse("application/json");
//        RequestBody body = RequestBody.create(mediaType, JSONUtil.toJsonStr(apiIdentifyAddressDto));
//        Request request = new Request.Builder()
//                .url("https://aip.baidubce.com/rpc/2.0/nlp/v1/address?access_token=" + redisUtils.get(WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY).toString())
//                .method("POST", body)
//                .addHeader("Content-Type", "application/json")
//                .addHeader("Accept", "application/json")
//                .build();
//        try {
//            Response response = HTTP_CLIENT.newCall(request).execute();
//            String responseStr = response.body().string();
//            System.out.println(responseStr);
//            if (responseStr.contains("error_code")) {
//                System.out.println("获取access_token失败");
//                JSONObject jsonObject = JSONUtil.parseObj(responseStr);
//                System.out.print(jsonObject.get("error_code").toString());
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }
//    @Test
//    public void getAccessToken2(){
//        // 官网获取的 API Key 更新为你注册的
//        String clientId = "MPHXcBxkGLIDOmoaahS9pIB7";
//        // 官网获取的 Secret Key 更新为你注册的
//        String clientSecret = "f5ueNY65fE9C6FzFTVKc6Imo8NdZSWMw";
//        String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
//        String getAccessTokenUrl = authHost
//                // 1. grant_type为固定参数
//                + "grant_type=client_credentials"
//                // 2. 官网获取的 API Key
//                + "&client_id=" + clientId
//                // 3. 官网获取的 Secret Key
//                + "&client_secret=" + clientSecret;
//        String jsonStr = restTemplate.getForObject(getAccessTokenUrl, String.class);
//
//        /**
//         * 返回结果
//         * {"access_token":"ACCESS_TOKEN","expires_in":7200}
//         */
//        if (!jsonStr.contains("access_token")) {
//            System.out.println("获取access_token失败");
//        }
//        com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(jsonStr);
//        String accessToken = jsonObject.getString("access_token");
//
//        String accessTokenKey = WechatConfigure.BAIDU_ACCESS_TOKEN_REDIS_KEY;
//        if (StrUtil.isEmpty(accessToken)) {
//            log.error("获取baidu access_token失败: {}" , jsonObject.getString("errmsg"));
//            throw new ApiException("获取access token失败");
//        } else {
//            log.info("baidu access_token : {}",accessToken);
//            System.out.println(accessToken);
//            redisUtils.set(accessTokenKey,accessToken);
//        }
//    }
//    @Test
//    public void goodsDetails(){
//        Long id = 68L;
//        MallGoods mallGoods = mallGoodsMapper.selectGoodsDetailById(id);
//        if (mallGoods == null) {
//            throw new FebsException("商品不存在");
//        }
//        List<String> images = goodsImagesMapper.selectGoodsImagesByGoodsId(mallGoods.getId());
//        MallGoodsDetailsVo mallGoodsDetailsVo = MallGoodsConversion.INSTANCE.entityToDetailsVo(mallGoods);
//
//        List<GoodsDetailsStyleVo> styles = mallGoodsDetailsVo.getStyles();
//        if(ObjectUtil.isNotEmpty(styles)){
//            for(GoodsDetailsStyleVo goodsDetailsStyleVo : styles){
//                List<GoodsDetailsSkuVo> skus = goodsDetailsStyleVo.getSkus();
//                if(CollUtil.isNotEmpty(skus) ){
//                    for(GoodsDetailsSkuVo goodsDetailsSkuVo : skus){
//                        if(StrUtil.isNotEmpty(goodsDetailsSkuVo.getSample())){
//                            goodsDetailsSkuVo.setSampleFlag(true);
//                        }else{
//                            goodsDetailsSkuVo.setSampleFlag(false);
//                        }
//                    }
//                }
//            }
//        }
//
//        if (CollUtil.isNotEmpty(mallGoods.getStyles())) {
//            Map<String, BigDecimal> stockAndVolume = mallGoodsMapper.selectGoodsStockAndVolume(id);
//            mallGoodsDetailsVo.setStock(stockAndVolume.get("stock").intValue());
//            mallGoodsDetailsVo.setVolume(stockAndVolume.get("volume").intValue());
//        }
//        mallGoodsDetailsVo.setImages(images);
//
//    }
//
//    @Test
//    public void levelTest(){
//        ApiCreateOrderVerifyDto apiCreateOrderVerifyDto = new ApiCreateOrderVerifyDto();
//        List<AddOrderItemDto> addOrderItemDtos = new ArrayList<>();
//        AddOrderItemDto addOrderItemDto = new AddOrderItemDto();
//        addOrderItemDto.setCnt(1);
//        addOrderItemDto.setSkuId(243L);
//        addOrderItemDtos.add(addOrderItemDto);
//        apiCreateOrderVerifyDto.setItems(addOrderItemDtos);
//        MallMember member = mallMemberMapper.selectById(401L);
//        List<AddOrderItemDto> items = apiCreateOrderVerifyDto.getItems();
//        if(CollUtil.isEmpty(items)){
//            System.out.println("请先挑选商品");
//        }
//        for (AddOrderItemDto item : apiCreateOrderVerifyDto.getItems()) {
//            MallGoodsSku sku = mallGoodsSkuMapper.selectSkuInfoById(item.getSkuId());
//            if (sku == null) {
//                System.out.println("购买商品或sku不存在");
//            }
//            if("样品".equals(sku.getSample())){
//                List<MallOrderItem> mallOrderItems = mallOrderItemMapper.selectItemBySkuIdUnCancel(sku.getId(), member.getId());
//                if (CollUtil.isNotEmpty(mallOrderItems)) {
//                    System.out.println("样品只能购买一次");
//                }
//                Integer cnt = item.getCnt();
//                if(1 < cnt){
//                    System.out.println("样品只能购买一件");
//                }
//            }else{
//                //验证用户的等级
//                if(AgentLevelEnum.ZERO_LEVEL.name().equals(member.getLevel())){
//                    System.out.println(sku.getSkuName() + "请先申请成为合伙人");
//                }
//            }
//
//            if (sku.getStock() < item.getCnt()) {
//                System.out.println(sku.getSkuName() + "库存不足");
//            }
//
//            MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
//            if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
//                System.out.println(mallGoods.getGoodsName() + "已下架");
//            }
//        }
//    }
////    @Test
////    public void skusTest() {
////        ApiMallAwardDetailsVo apiMallAwardDetailsVo = new ApiMallAwardDetailsVo();
////        Long memberId = 4L;
////        Long actId = 1L;
////        MallMember mallMember = mallMemberMapper.selectById(memberId);
////        if(ObjectUtil.isEmpty(mallMember)){
////            throw new FebsException("用户不存在");
////        }
////
////        MallActSet mallActSet = mallActSetMapper.selectById(actId);
////        if(ObjectUtil.isEmpty(mallActSet)){
////            throw new FebsException("活动不存在");
////        }
////        Integer actStatus = mallActSet.getActStatus();
////        if(MallActSet.ACT_STATUS_DISABLED == actStatus){
////            throw new FebsException("活动还没开始");
////        }
////        /**
////         * 获取用户积分数,判断能不能抽奖
////         * 减少对应的积分数量
////         * 较少奖品的已抽奖
////         * 生成一条抽奖记录
////         */
////
////        MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId);
////        if(ObjectUtil.isEmpty(wallet)){
////            throw new FebsException("账户不存在");
////        }
////        BigDecimal commission = wallet.getCommission();
////        BigDecimal prizeScore = wallet.getPrizeScore();
////        Integer actScoreCnt = mallActSet.getActScoreCnt();
////        if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){
////            throw new FebsException("竞猜积分不足");
////        }
////        /**
////         * 中奖概率 20%
////         * 每次抽奖产生一个随机数要大于8,则中奖
////         * 历史10条抽奖记录有中奖过,中奖记录少于两条,则中奖
////         */
////        //获取中奖概率
////        DataDictionaryCustom scoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
////                DataDictionaryEnum.WIN_SCORE.getType(),
////                DataDictionaryEnum.WIN_SCORE.getCode());
////        DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
////                DataDictionaryEnum.WIN_CASH.getType(),
////                DataDictionaryEnum.WIN_CASH.getCode());
////        String scoreDicValue = scoreDic.getValue();
////        String cashDicValue = cashDic.getValue();
////        BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue));
////        //获取那个更大一点的几率
////        BigDecimal maxProbability = BigDecimal.ZERO;
////        BigDecimal minProbability = BigDecimal.ZERO;
////        Integer maxAwardType = 0;
////        Integer minAwardType = 0;
////        if(new BigDecimal(scoreDicValue).compareTo(new BigDecimal(cashDicValue)) < 0){
////            maxProbability = new BigDecimal(cashDicValue);
////            minProbability = new BigDecimal(scoreDicValue);
////            maxAwardType = MallActAwardSet.AWARD_TYPE_YJ;
////            minAwardType = MallActAwardSet.AWARD_TYPE_JF;
////        }else{
////            maxProbability = new BigDecimal(scoreDicValue);
////            minProbability = new BigDecimal(cashDicValue);
////            maxAwardType = MallActAwardSet.AWARD_TYPE_JF;
////            minAwardType = MallActAwardSet.AWARD_TYPE_YJ;
////        }
////
////        BigDecimal multiply = totalProbability.multiply(new BigDecimal(100));
////        BigDecimal failureScope = new BigDecimal(100).subtract(multiply);
////        int randomInt = 90;
////        //小于failureScope这个数字,则没中奖
////        if(new BigDecimal(randomInt).compareTo(failureScope) <= 0){
////            //抽奖记录
////            MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////            mallActLuckdrawRecord.setActId(actId);
////            mallActLuckdrawRecord.setActName(mallActSet.getActName());
////            mallActLuckdrawRecord.setMemberId(memberId);
////            mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////            mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
////            mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////            List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
////            if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
////                apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
////                apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
////            }else{
////                apiMallAwardDetailsVo.setAwardName("未中奖");
////            }
////        }else if(new BigDecimal(randomInt).compareTo(failureScope) > 0
////                && new BigDecimal(randomInt).compareTo(failureScope.add(maxProbability.multiply(new BigDecimal(100)))) <= 0){
////            //大于failureScope.add(maxProbability.multiply(new BigDecimal(100)))这个数字,则中奖
////            //获取最新的十条抽奖记录
////            List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
////            if(CollUtil.isNotEmpty(records)){
////                //中奖次数
////                Integer count = 0;
////                for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
////                    Integer status = mallActLuckdrawRecord.getStatus();
////                    if(MallActLuckdrawRecord.STATUS_ENABLE == status){
////                        count = count + 1;
////                    }
////                }
////                if(new BigDecimal(count).compareTo(maxProbability.multiply(new BigDecimal(10))) < 0){
////                    //获取活动下该类别的奖品
////                    List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
////                    if(CollUtil.isEmpty(mallActAwardSets)){
////                        //抽奖记录
////                        MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                        mallActLuckdrawRecord.setActId(actId);
////                        mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                        mallActLuckdrawRecord.setMemberId(memberId);
////                        mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                        mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
////                        mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                        List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
////                        if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
////                            apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
////                            apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
////                        }else{
////                            apiMallAwardDetailsVo.setAwardName("未中奖");
////                        }
////                    }else{
////                        List<MallActAwardSet> idList = new ArrayList();
////                        for(MallActAwardSet mallActAwardSet : mallActAwardSets){
////                            Integer awardTotal = mallActAwardSet.getAwardTotal();
////                            Integer awardCnt = mallActAwardSet.getAwardCnt();
////                            if(awardCnt < awardTotal){
////                                idList.add(mallActAwardSet);
////                            }
////                        }
////                        MallActAwardSet mallActAwardSet = new MallActAwardSet();
////                        if(idList.size() <= 1){
////                            mallActAwardSet = idList.get(0);
////                        }else{
////                            int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
////                            mallActAwardSet = idList.get(randomIdIndex);
////                        }
////                        mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
////                        mallActAwardSetMapper.updateById(mallActAwardSet);
////
////                        MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                        mallActLuckdrawRecord.setActId(actId);
////                        mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                        mallActLuckdrawRecord.setMemberId(memberId);
////                        mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                        mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
////                        mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                        MallActWinRecord mallActWinRecord = new MallActWinRecord();
////                        mallActWinRecord.setMemberId(memberId);
////                        mallActWinRecord.setActId(actId);
////                        mallActWinRecord.setActName(mallActSet.getActName());
////                        mallActWinRecord.setAwardId(mallActAwardSet.getId());
////                        mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
////                        mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
////                        mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
////                        mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
////                        mallActWinRecordMapper.insert(mallActWinRecord);
////
////                        apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
////                        apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
////                        apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
////                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
////
////                        if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
////                            prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
////                        }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
////                            commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
////                        }
////                    }
////                }else{
////                    //抽奖记录
////                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                    mallActLuckdrawRecord.setActId(actId);
////                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                    mallActLuckdrawRecord.setMemberId(memberId);
////                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
////                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                    List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
////                    if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
////                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
////                        apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
////                    }else{
////                        apiMallAwardDetailsVo.setAwardName("未中奖");
////                    }
////                }
////            }else{
////                //获取活动下该类别的奖品
////                List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType);
////                if(CollUtil.isEmpty(mallActAwardSets)){
////                    //抽奖记录
////                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                    mallActLuckdrawRecord.setActId(actId);
////                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                    mallActLuckdrawRecord.setMemberId(memberId);
////                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
////                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                    List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
////                    if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
////                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
////                        apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
////                    }else{
////                        apiMallAwardDetailsVo.setAwardName("未中奖");
////                    }
////                }else{
////                    List<MallActAwardSet> idList = new ArrayList();
////                    for(MallActAwardSet mallActAwardSet : mallActAwardSets){
////                        Integer awardTotal = mallActAwardSet.getAwardTotal();
////                        Integer awardCnt = mallActAwardSet.getAwardCnt();
////                        if(awardCnt < awardTotal){
////                            idList.add(mallActAwardSet);
////                        }
////                    }
////                    MallActAwardSet mallActAwardSet = new MallActAwardSet();
////                    if(idList.size() <= 1){
////                        mallActAwardSet = idList.get(0);
////                    }else{
////                        int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
////                        mallActAwardSet = idList.get(randomIdIndex);
////                    }
////                    mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
////                    mallActAwardSetMapper.updateById(mallActAwardSet);
////
////                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                    mallActLuckdrawRecord.setActId(actId);
////                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                    mallActLuckdrawRecord.setMemberId(memberId);
////                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
////                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                    MallActWinRecord mallActWinRecord = new MallActWinRecord();
////                    mallActWinRecord.setMemberId(memberId);
////                    mallActWinRecord.setActId(actId);
////                    mallActWinRecord.setActName(mallActSet.getActName());
////                    mallActWinRecord.setAwardId(mallActAwardSet.getId());
////                    mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
////                    mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
////                    mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
////                    mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
////                    mallActWinRecordMapper.insert(mallActWinRecord);
////
////                    apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
////                    apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
////                    apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
////                    apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
////
////                    if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
////                        prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
////                    }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
////                        commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
////                    }
////                }
////            }
////        }else{
////            //中奖
////            //获取最新的十条抽奖记录
////            List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId);
////            if(CollUtil.isNotEmpty(records)){
////                //中奖次数
////                Integer count = 0;
////                for(MallActLuckdrawRecord mallActLuckdrawRecord : records){
////                    Integer status = mallActLuckdrawRecord.getStatus();
////                    if(MallActLuckdrawRecord.STATUS_ENABLE == status){
////                        count = count + 1;
////                    }
////                }
////                if(new BigDecimal(count).compareTo(minProbability.multiply(new BigDecimal(10))) < 0){
////                    //获取活动下该类别的奖品
////                    List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
////                    if(CollUtil.isEmpty(mallActAwardSets)){
////                        //抽奖记录
////                        MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                        mallActLuckdrawRecord.setActId(actId);
////                        mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                        mallActLuckdrawRecord.setMemberId(memberId);
////                        mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                        mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
////                        mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                        List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
////                        if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
////                            apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
////                            apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
////                        }else{
////                            apiMallAwardDetailsVo.setAwardName("未中奖");
////                        }
////                    }else{
////                        List<MallActAwardSet> idList = new ArrayList();
////                        for(MallActAwardSet mallActAwardSet : mallActAwardSets){
////                            Integer awardTotal = mallActAwardSet.getAwardTotal();
////                            Integer awardCnt = mallActAwardSet.getAwardCnt();
////                            if(awardCnt < awardTotal){
////                                idList.add(mallActAwardSet);
////                            }
////                        }
////                        MallActAwardSet mallActAwardSet = new MallActAwardSet();
////                        if(idList.size() <= 1){
////                            mallActAwardSet = idList.get(0);
////                        }else{
////                            int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
////                            mallActAwardSet = idList.get(randomIdIndex);
////                        }
////                        mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
////                        mallActAwardSetMapper.updateById(mallActAwardSet);
////
////                        MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                        mallActLuckdrawRecord.setActId(actId);
////                        mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                        mallActLuckdrawRecord.setMemberId(memberId);
////                        mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                        mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
////                        mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                        MallActWinRecord mallActWinRecord = new MallActWinRecord();
////                        mallActWinRecord.setMemberId(memberId);
////                        mallActWinRecord.setActId(actId);
////                        mallActWinRecord.setActName(mallActSet.getActName());
////                        mallActWinRecord.setAwardId(mallActAwardSet.getId());
////                        mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
////                        mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
////                        mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
////                        mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
////                        mallActWinRecordMapper.insert(mallActWinRecord);
////
////                        apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
////                        apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
////                        apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
////                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
////
////                        if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
////                            prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
////                        }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
////                            commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
////                        }
////                    }
////                }else{
////                    //抽奖记录
////                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                    mallActLuckdrawRecord.setActId(actId);
////                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                    mallActLuckdrawRecord.setMemberId(memberId);
////                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
////                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                    List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
////                    if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
////                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
////                        apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
////                    }else{
////                        apiMallAwardDetailsVo.setAwardName("未中奖");
////                    }
////                }
////            }else{
////                //获取活动下该类别的奖品
////                List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType);
////                if(CollUtil.isEmpty(mallActAwardSets)){
////                    //抽奖记录
////                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                    mallActLuckdrawRecord.setActId(actId);
////                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                    mallActLuckdrawRecord.setMemberId(memberId);
////                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED);
////                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                    List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY);
////                    if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){
////                        apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage());
////                        apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName());
////                    }else{
////                        apiMallAwardDetailsVo.setAwardName("未中奖");
////                    }
////                }else{
////                    List<MallActAwardSet> idList = new ArrayList();
////                    for(MallActAwardSet mallActAwardSet : mallActAwardSets){
////                        Integer awardTotal = mallActAwardSet.getAwardTotal();
////                        Integer awardCnt = mallActAwardSet.getAwardCnt();
////                        if(awardCnt < awardTotal){
////                            idList.add(mallActAwardSet);
////                        }
////                    }
////                    MallActAwardSet mallActAwardSet = new MallActAwardSet();
////                    if(idList.size() <= 1){
////                        mallActAwardSet = idList.get(0);
////                    }else{
////                        int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1);
////                        mallActAwardSet = idList.get(randomIdIndex);
////                    }
////                    mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1);
////                    mallActAwardSetMapper.updateById(mallActAwardSet);
////
////                    MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord();
////                    mallActLuckdrawRecord.setActId(actId);
////                    mallActLuckdrawRecord.setActName(mallActSet.getActName());
////                    mallActLuckdrawRecord.setMemberId(memberId);
////                    mallActLuckdrawRecord.setActScoreCnt(actScoreCnt);
////                    mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE);
////                    mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord);
////
////                    MallActWinRecord mallActWinRecord = new MallActWinRecord();
////                    mallActWinRecord.setMemberId(memberId);
////                    mallActWinRecord.setActId(actId);
////                    mallActWinRecord.setActName(mallActSet.getActName());
////                    mallActWinRecord.setAwardId(mallActAwardSet.getId());
////                    mallActWinRecord.setAwardName(mallActAwardSet.getAwardName());
////                    mallActWinRecord.setAwardType(mallActAwardSet.getAwardType());
////                    mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue());
////                    mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId());
////                    mallActWinRecordMapper.insert(mallActWinRecord);
////
////                    apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName());
////                    apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType());
////                    apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue());
////                    apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage());
////
////                    if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){
////                        prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue()));
////                    }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){
////                        commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue()));
////                    }
////                }
////            }
////        }
////
////        //扣竞猜积分
////        prizeScore = prizeScore.subtract(new BigDecimal(actScoreCnt));
////        wallet.setPrizeScore(prizeScore);
////        wallet.setCommission(commission);
////        mallMemberWalletMapper.updateAmountWithVersion(wallet);
////
////        System.out.println(apiMallAwardDetailsVo);
////    }
////
////    @Test
////    public void agentTest() {
//////        agentProducer.sendDelayMsg(1L, 10000L);
////
////        ApiMallActWinDetailsDto apiMallActWinDetailsDto = new ApiMallActWinDetailsDto();
////        apiMallActWinDetailsDto.setActId(1L);
////        apiMallActWinDetailsDto.setPageNow(1);
////        apiMallActWinDetailsDto.setPageSize(10);
////        Long memberId = 4L;
////        MallMember mallMember = mallMemberMapper.selectById(memberId);
////        if(ObjectUtil.isEmpty(mallMember)){
////            throw new FebsException("用户不存在");
////        }
////        apiMallActWinDetailsDto.setMemberId(memberId);
////
////        Long actId = apiMallActWinDetailsDto.getActId();
////        MallActSet mallActSet = mallActSetMapper.selectById(actId);
////        if(ObjectUtil.isEmpty(mallActSet)){
////            throw new FebsException("活动不存在");
////        }
////        Page<ApiMallActWinDetailsVo> page = new Page<>(apiMallActWinDetailsDto.getPageNow(), apiMallActWinDetailsDto.getPageSize());
////        IPage<ApiMallActWinDetailsVo> apiMallActWinDetailsVoIPage = mallActWinRecordMapper.selectApiMallActWinDetailsListInPage(apiMallActWinDetailsDto, page);
////        System.out.println(apiMallActWinDetailsVoIPage);
////    }
////
////    @Test
////    public void insertAgentTest() {
//////        AgentInfo agentInfo = new AgentInfo();
//////        agentInfo.setOrderType(2);
//////        agentInfo.setOrderCnt(2000);
//////        agentInfo.setLastCnt(3);
//////        agentInfo.setDirectIncome(BigDecimal.valueOf(50));
//////        agentInfo.setTeamIncome(BigDecimal.valueOf(15));
//////        agentInfo.setTeamIncomeType(2);
//////
//////        DataDictionaryCustom data = new DataDictionaryCustom();
//////        data.setType("AGENT_LEVEL_REQUIRE");
//////        data.setCode(AgentLevelEnum.FOUR_LEVEL.name());
//////        data.setValue(JSONObject.toJSONString(agentInfo));
//////        dataDictionaryCustomMapper.insert(data);
////    }
////
////    @Test
////    public void insertData() {
////        int i = 1;
////        for (AgentLevelEnum value : AgentLevelEnum.values()) {
////            DataDictionaryCustom data = new DataDictionaryCustom();
////            data.setType("AGENT_LEVEL");
////            data.setDescription(value.getName());
////            data.setCode(value.name());
////            data.setValue(String.valueOf(i));
////            dataDictionaryCustomMapper.insert(data);
////        }
////
////    }
////
////    public static void main(String[] args) {
////        getJson();
////    }
////
////    public static void getJson(){
////        AgentLevelUpdateDto adminAgentLevelUpdateInfoVo = new AgentLevelUpdateDto();
////        String jsonStr = "{\"directIncome\":50,\"lastCnt\":3,\"orderCnt\":2000,\"orderType\":2,\"teamIncome\":15,\"teamIncomeType\":2}";
////        JSONObject jsonObject = JSONObject.parseObject(jsonStr);
////        adminAgentLevelUpdateInfoVo.setDirectIncome(new BigDecimal((jsonObject.get("directIncome")==null?0:jsonObject.get("directIncome")).toString()));
////        adminAgentLevelUpdateInfoVo.setLastCnt(Integer.parseInt((jsonObject.get("lastCnt")==null?0:jsonObject.get("lastCnt")).toString()));
////        adminAgentLevelUpdateInfoVo.setOrderCnt(Integer.parseInt((jsonObject.get("orderCnt")==null?0:jsonObject.get("orderCnt")).toString()));
////        adminAgentLevelUpdateInfoVo.setOrderType(Integer.parseInt(jsonObject.get("orderType").toString()));
////        adminAgentLevelUpdateInfoVo.setTeamIncome(new BigDecimal((jsonObject.get("teamIncome")==null?0:jsonObject.get("teamIncome")).toString()));
////        adminAgentLevelUpdateInfoVo.setTeamIncomeType(Integer.parseInt(jsonObject.get("orderType").toString()));
////        adminAgentLevelUpdateInfoVo.setId(14L);
////        AgentLevelUpdateDto agentLevelUpdateDtoJson = new AgentLevelUpdateDto();
////        agentLevelUpdateDtoJson.setDirectIncome(adminAgentLevelUpdateInfoVo.getDirectIncome());
////        agentLevelUpdateDtoJson.setLastCnt(adminAgentLevelUpdateInfoVo.getLastCnt());
////        agentLevelUpdateDtoJson.setOrderCnt(adminAgentLevelUpdateInfoVo.getOrderCnt());
////        agentLevelUpdateDtoJson.setTeamIncome(adminAgentLevelUpdateInfoVo.getTeamIncome());
////        agentLevelUpdateDtoJson.setOrderType(adminAgentLevelUpdateInfoVo.getOrderType());
////        agentLevelUpdateDtoJson.setTeamIncomeType(adminAgentLevelUpdateInfoVo.getTeamIncomeType());
////        JSONObject jsonObjectA = (JSONObject)JSONObject.toJSON(agentLevelUpdateDtoJson);
////        System.out.println(jsonObjectA.toJSONString());
////    }
////
////    @Test
////    public void autoLevelUp() {
////        // agentService.autoUpAgentLevel(3L);
//////        agentProducer.sendAutoLevelUpMsg(5L);
////
////        agentProducer.sendReturnMoneyMsg(2L);
////    }
////
////    @Test
////    public void returnMoney() {
////        // agentService.autoUpAgentLevel(3L);
//////        agentProducer.sendAutoLevelUpMsg(5L);
//////        agentProducer.sendReturnMoneyMsg(52L);
////        agentService.returnMoneyToAgent(52L);
////    }
////
////    @Test
////    public void bigdecimalTest() {
////        BigDecimal aa = new BigDecimal("1.345");
////
////        System.out.println(aa.setScale(2, RoundingMode.DOWN));
////        System.out.println(aa.setScale(2, RoundingMode.UP));
////    }
////
////    @Autowired
////    private ProfitJob profitJob;
////
////    @Test
////    public void profitJobTest() {
////        profitJob.profitJob();
////    }
////
////
//    @Autowired
//    private AgentConsumer agentConsumer;
//
//    @Test
//    public void orderReturnTest() {
//        agentConsumer.getScoreMsg(215L);
//    }
//}