src/test/java/cc/mrbird/febs/AgentTest.java | ●●●●● patch | view | raw | blame | history | |
src/test/java/cc/mrbird/febs/PayTest.java | ●●●●● patch | view | raw | blame | history | |
src/test/java/cc/mrbird/febs/ProfitTest.java | ●●●●● patch | view | raw | blame | history |
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); // } //} src/test/java/cc/mrbird/febs/PayTest.java
@@ -1,71 +1,71 @@ package cc.mrbird.febs; import cc.mrbird.febs.common.properties.XcxProperties; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.common.utils.SpringContextHolder; import cc.mrbird.febs.pay.util.WechatConfigure; import cc.mrbird.febs.vip.service.IMallVipConfigService; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; import com.alipay.api.domain.AlipayTradeAppPayModel; import com.alipay.api.response.AlipayTradeAppPayResponse; import com.baomidou.mybatisplus.extension.exceptions.ApiException; import com.ijpay.alipay.AliPayApi; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; /** * @author wzy * @date 2021-09-27 **/ @Slf4j @SpringBootTest public class PayTest { @Autowired private RedisUtils redisUtils; @Resource RestTemplate restTemplate; @Test public void aliPay(){ String appId = "wx4118b853de343a16"; String appSecret = "0c367c3333093572882dbb9cbe9f30b6"; 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); } } @Autowired private IMallVipConfigService mallVipConfigService; @Test public void test() { mallVipConfigService.findConfigList(); } } //package cc.mrbird.febs; // //import cc.mrbird.febs.common.properties.XcxProperties; //import cc.mrbird.febs.common.utils.RedisUtils; //import cc.mrbird.febs.common.utils.SpringContextHolder; //import cc.mrbird.febs.pay.util.WechatConfigure; //import cc.mrbird.febs.vip.service.IMallVipConfigService; //import cn.hutool.core.util.StrUtil; //import com.alibaba.fastjson.JSONObject; //import com.alipay.api.AlipayApiException; //import com.alipay.api.domain.AlipayTradeAppPayModel; //import com.alipay.api.response.AlipayTradeAppPayResponse; //import com.baomidou.mybatisplus.extension.exceptions.ApiException; //import com.ijpay.alipay.AliPayApi; //import lombok.extern.slf4j.Slf4j; //import org.junit.jupiter.api.Test; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.boot.test.context.SpringBootTest; //import org.springframework.web.client.RestTemplate; // //import javax.annotation.Resource; // ///** // * @author wzy // * @date 2021-09-27 // **/ //@Slf4j //@SpringBootTest //public class PayTest { // // // @Autowired // private RedisUtils redisUtils; // @Resource // RestTemplate restTemplate; // @Test // public void aliPay(){ // // String appId = "wx4118b853de343a16"; // String appSecret = "0c367c3333093572882dbb9cbe9f30b6"; // 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); // } // } // // @Autowired // private IMallVipConfigService mallVipConfigService; // // @Test // public void test() { // mallVipConfigService.findConfigList(); // } //} src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -1,976 +1,976 @@ package cc.mrbird.febs; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.AppContants; import cc.mrbird.febs.common.utils.HttpCurlUtil; import cc.mrbird.febs.common.utils.MallUtils; import cc.mrbird.febs.common.utils.RedisUtils; import cc.mrbird.febs.mall.dto.MallMemberCouponDto; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.*; import cc.mrbird.febs.mall.vo.MallGoodsListVo; import cc.mrbird.febs.mall.vo.MallMemberCouponVo; import cc.mrbird.febs.pay.model.*; import cc.mrbird.febs.pay.service.IXcxPayService; import cc.mrbird.febs.pay.service.WxFaPiaoService; import cc.mrbird.febs.pay.util.JCEUtil; import cc.mrbird.febs.pay.util.WechatConfigure; import cc.mrbird.febs.rabbit.consumer.AgentConsumer; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier; import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner; import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials; import com.wechat.pay.contrib.apache.httpclient.notification.NotificationHandler; import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; import okhttp3.HttpUrl; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.RequestEntity; import org.apache.commons.httpclient.methods.StringRequestEntity; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPatch; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.ResourceLoader; import org.springframework.util.Base64Utils; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.io.*; import java.math.BigDecimal; import java.net.URLConnection; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.*; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.PrintWriter; import java.net.URL; import java.util.HashMap; import java.util.Map; /** * @author wzy * @date 2022-06-02 **/ @SpringBootTest public class ProfitTest { @Autowired private AgentConsumer agentConsumer; @Autowired private IAgentService agentService; @Autowired private IMemberProfitService memberProfitService; @Test public void dynamicProfit() { memberProfitService.dynamicProfit(21L); } @Test public void agentProfit() { memberProfitService.agentProfit(null); } @Test public void staticProfit() { memberProfitService.staticProfit(new Date()); } @Test public void thankfulProfit() { memberProfitService.thankfulProfit(new Date()); } @Autowired private MallMemberCouponMapper mallMemberCouponMapper; @Autowired private MallGoodsMapper mallGoodsMapper; @Autowired private CouponGoodsMapper couponGoodsMapper; @Autowired private WxFaPiaoService wxFaPiaoService; @Autowired ResourceLoader resourceLoader; @Test public void redisTest() throws IOException {//配置开发选项 String obj = redisUtils.getString("mall_goods_json");//获取JSONARRAY字符串对象 System.out.println(obj); JSONArray jsonArray = JSONUtil.parseArray(obj);//转换成JSONARRAY对象 List<MallGoodsListVo> mallGoodsListVos = JSONUtil.toList(jsonArray, MallGoodsListVo.class);//转换成对象集合 System.out.println(mallGoodsListVos.size()); } @Test public void rankProfit() throws IOException {//配置开发选项 // System.out.println(new ClassPathResource("wxP12/apiclient_cert.p12").getFile().exists()); // System.out.println(new File("src/main/resources/wxP12/apiclient_cert.p12").exists()); //package cc.mrbird.febs; // // InputStream inputStream = new FileInputStream(file); // System.out.println(resourceLoader.getResource("classpath:/wxP12/apiclient_cert.p12").exists()); PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); HeaderDto headerDto = new HeaderDto(); headerDto.setCallback_url("https://api.blnka.cn/api/xcxPay/fapiaoCallBack"); headerDto.setShow_fapiao_cell(false); String parseObj = JSONUtil.parseObj(headerDto).toString(); String baseUrl = "https://api.mch.weixin.qq.com"; String canonicalUrl = "/v3/new-tax-control-fapiao/merchant/development-config"; String postStr = null; try { postStr = wxFaPiaoService.createAuthorization( "PATCH", baseUrl+canonicalUrl, parseObj, privateKey ); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } String token = AppContants.FP_TOKEN_HEADER_TYPE+postStr; System.out.println("WECHATPAY2-SHA256-RSA2048 "+postStr); String s = wxFaPiaoService.sendPatch(baseUrl + canonicalUrl, parseObj, token); System.out.println(s); } @Test public void rankProfit03() throws IOException {//创建电子发票卡券模板 FPCardTemplateDto fpCardTemplateDto = new FPCardTemplateDto(); fpCardTemplateDto.setCard_appid("wxad2fdb2fcad10fb2"); FPCardTemplateInformationDto fpCardTemplateInformationDto = new FPCardTemplateInformationDto(); fpCardTemplateInformationDto.setLogo_url("http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0"); fpCardTemplateInformationDto.setPayee_name("发票测试"); FPCardTemplateCustomCellDto fpCardTemplateCustomCellDto = new FPCardTemplateCustomCellDto(); fpCardTemplateCustomCellDto.setWords("电子发票"); fpCardTemplateCustomCellDto.setDescription("查看发票"); fpCardTemplateCustomCellDto.setJump_url("http://www.qq.com"); fpCardTemplateCustomCellDto.setMiniprogram_path("gh_86a091e50ad4@app"); fpCardTemplateCustomCellDto.setMiniprogram_user_name("pages/xxxPage"); fpCardTemplateInformationDto.setCustom_cell(fpCardTemplateCustomCellDto); fpCardTemplateDto.setCard_template_information(fpCardTemplateInformationDto); String parseObj = JSONUtil.parseObj(fpCardTemplateDto).toString(); System.out.println(parseObj); String baseUrl = "https://api.mch.weixin.qq.com"; String canonicalUrl = "/v3/new-tax-control-fapiao/card-template"; PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); String postStr = null; try { postStr = wxFaPiaoService.createAuthorization( "POST", baseUrl+canonicalUrl, parseObj, privateKey ); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } String token = AppContants.FP_TOKEN_HEADER_TYPE+postStr; System.out.println("WECHATPAY2-SHA256-RSA2048 "+postStr); String s = wxFaPiaoService.sendPost(baseUrl + canonicalUrl, parseObj, "WECHATPAY2-SHA256-RSA2048 "+postStr); System.out.println(s); } @Test public void rankProfit04() throws IOException {//获取用户填写的抬头 //初始化请求参数 Map<String, Object> params = new HashMap<>(); params.put("scene","WITH_WECHATPAY"); params.put("fapiao_apply_id","4200002059202401191880748568"); String baseUrl = "https://api.mch.weixin.qq.com"; String canonicalUrl = "/v3/new-tax-control-fapiao/user-title"; String urlparm = baseUrl+canonicalUrl;//有参数的get请求,加密是需要把参数加载进去URL List<BasicNameValuePair> parameters = new ArrayList<>(); for (Map.Entry<String, Object> entry : params.entrySet()) { parameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString())); } StringBuilder dataparm = new StringBuilder(); params.forEach((k, v) -> dataparm.append("&" + k + "=" + v)); String string = dataparm.toString(); if (!"".equals(string)) { urlparm = baseUrl+canonicalUrl + "?" + dataparm.substring(1); } PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); String postStr = null; try { postStr = wxFaPiaoService.createAuthorization( "GET", urlparm, "", privateKey ); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } String s = wxFaPiaoService.sendGet(baseUrl+canonicalUrl, params, "WECHATPAY2-SHA256-RSA2048 "+postStr); System.out.println(s); } @Test public void rankProfit2() throws IOException {//查询配置开发选项 PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); String baseUrl = "https://api.mch.weixin.qq.com"; String canonicalUrl = "/v3/new-tax-control-fapiao/merchant/development-config"; String postStr = null; try { postStr = wxFaPiaoService.createAuthorization( "GET", baseUrl+canonicalUrl, "", privateKey ); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } System.out.println("WECHATPAY2-SHA256-RSA2048"+postStr); String s = wxFaPiaoService.sendGet(baseUrl + canonicalUrl, new HashMap<>(), "WECHATPAY2-SHA256-RSA2048 "+postStr); System.out.println(s); //import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; //import cc.mrbird.febs.common.enumerates.FlowTypeEnum; //import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; //import cc.mrbird.febs.common.exception.FebsException; //import cc.mrbird.febs.common.utils.AppContants; //import cc.mrbird.febs.common.utils.HttpCurlUtil; //import cc.mrbird.febs.common.utils.MallUtils; //import cc.mrbird.febs.common.utils.RedisUtils; //import cc.mrbird.febs.mall.dto.MallMemberCouponDto; //import cc.mrbird.febs.mall.entity.*; //import cc.mrbird.febs.mall.mapper.*; //import cc.mrbird.febs.mall.service.*; //import cc.mrbird.febs.mall.vo.MallGoodsListVo; //import cc.mrbird.febs.mall.vo.MallMemberCouponVo; //import cc.mrbird.febs.pay.model.*; //import cc.mrbird.febs.pay.service.IXcxPayService; //import cc.mrbird.febs.pay.service.WxFaPiaoService; //import cc.mrbird.febs.pay.util.JCEUtil; //import cc.mrbird.febs.pay.util.WechatConfigure; //import cc.mrbird.febs.rabbit.consumer.AgentConsumer; //import cn.hutool.core.collection.CollUtil; //import cn.hutool.core.date.DateTime; //import cn.hutool.core.date.DateUtil; //import cn.hutool.json.JSONArray; //import cn.hutool.json.JSONUtil; //import com.alibaba.fastjson.JSON; //import com.alibaba.fastjson.JSONObject; //import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier; //import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner; //import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials; //import com.wechat.pay.contrib.apache.httpclient.notification.NotificationHandler; //import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; //import okhttp3.HttpUrl; //import org.apache.commons.collections.CollectionUtils; //import org.apache.commons.httpclient.HttpClient; //import org.apache.commons.httpclient.HttpStatus; //import org.apache.commons.httpclient.methods.GetMethod; //import org.apache.commons.httpclient.methods.PostMethod; //import org.apache.commons.httpclient.methods.RequestEntity; //import org.apache.commons.httpclient.methods.StringRequestEntity; //import org.apache.http.HttpEntity; //import org.apache.http.HttpResponse; //import org.apache.http.client.methods.CloseableHttpResponse; //import org.apache.http.client.methods.HttpPatch; //import org.apache.http.client.methods.HttpPost; //import org.apache.http.entity.StringEntity; //import org.apache.http.impl.client.CloseableHttpClient; //import org.apache.http.impl.client.HttpClients; //import org.apache.http.message.BasicNameValuePair; //import org.apache.http.util.EntityUtils; //import org.junit.jupiter.api.Test; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.boot.test.context.SpringBootTest; //import org.springframework.core.io.ClassPathResource; //import org.springframework.core.io.ResourceLoader; //import org.springframework.util.Base64Utils; //import org.springframework.web.client.RestTemplate; // //import javax.annotation.Resource; //import java.io.*; //import java.math.BigDecimal; //import java.net.URLConnection; //import java.nio.charset.Charset; //import java.nio.charset.StandardCharsets; //import java.security.*; //import java.security.cert.CertificateFactory; //import java.security.cert.X509Certificate; //import java.text.ParseException; //import java.text.SimpleDateFormat; //import java.util.*; //import java.io.ByteArrayOutputStream; //import java.io.InputStream; //import java.io.PrintWriter; //import java.net.URL; //import java.util.HashMap; //import java.util.Map; // ///** // * @author wzy // * @date 2022-06-02 // **/ //@SpringBootTest //public class ProfitTest { // // @Autowired // private AgentConsumer agentConsumer; // // @Autowired // private IAgentService agentService; // // @Autowired // private IMemberProfitService memberProfitService; // // @Test // public void dynamicProfit() { // memberProfitService.dynamicProfit(21L); // } // @Test // public void agentProfit() { // memberProfitService.agentProfit(null); // } // // // @Test // public void staticProfit() { // memberProfitService.staticProfit(new Date()); // } // // @Test // public void thankfulProfit() { // memberProfitService.thankfulProfit(new Date()); // } // @Autowired // private MallMemberCouponMapper mallMemberCouponMapper; // @Autowired // private MallGoodsMapper mallGoodsMapper; // @Autowired // private CouponGoodsMapper couponGoodsMapper; // @Autowired // private WxFaPiaoService wxFaPiaoService; // @Autowired // ResourceLoader resourceLoader; // // @Test // public void redisTest() throws IOException {//配置开发选项 // String obj = redisUtils.getString("mall_goods_json");//获取JSONARRAY字符串对象 // System.out.println(obj); // JSONArray jsonArray = JSONUtil.parseArray(obj);//转换成JSONARRAY对象 // List<MallGoodsListVo> mallGoodsListVos = JSONUtil.toList(jsonArray, MallGoodsListVo.class);//转换成对象集合 // System.out.println(mallGoodsListVos.size()); // // } // @Test // public void rankProfit() throws IOException {//配置开发选项 //// System.out.println(new ClassPathResource("wxP12/apiclient_cert.p12").getFile().exists()); //// System.out.println(new File("src/main/resources/wxP12/apiclient_cert.p12").exists()); //// //// InputStream inputStream = new FileInputStream(file); //// System.out.println(resourceLoader.getResource("classpath:/wxP12/apiclient_cert.p12").exists()); // PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); // HeaderDto headerDto = new HeaderDto(); // headerDto.setCallback_url("https://api.blnka.cn/api/xcxPay/fapiaoCallBack"); // headerDto.setShow_fapiao_cell(false); // String parseObj = JSONUtil.parseObj(headerDto).toString(); // String baseUrl = "https://api.mch.weixin.qq.com"; // String canonicalUrl = "/v3/new-tax-control-fapiao/merchant/development-config"; // String postStr = null; // try { // HttpClient httpClient = new HttpClient(); // GetMethod method = new GetMethod(baseUrl+canonicalUrl); // method.setRequestHeader("Accept", "application/json"); // method.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36"); // method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); // method.setRequestHeader("Connection", "keep-alive"); // method.setRequestHeader("Authorization", "WECHATPAY2-SHA256-RSA2048 "+postStr); // httpClient.executeMethod(method); // System.out.println(method); // String responseBodyAsString = method.getResponseBodyAsString(); // postStr = wxFaPiaoService.createAuthorization( // "PATCH", // baseUrl+canonicalUrl, // parseObj, // privateKey // ); // } catch (NoSuchAlgorithmException e) { // e.printStackTrace(); // } // // String token = AppContants.FP_TOKEN_HEADER_TYPE+postStr; // System.out.println("WECHATPAY2-SHA256-RSA2048 "+postStr); // String s = wxFaPiaoService.sendPatch(baseUrl + canonicalUrl, parseObj, token); // System.out.println(s); // } // // @Test // public void rankProfit03() throws IOException {//创建电子发票卡券模板 // FPCardTemplateDto fpCardTemplateDto = new FPCardTemplateDto(); // fpCardTemplateDto.setCard_appid("wxad2fdb2fcad10fb2"); // // FPCardTemplateInformationDto fpCardTemplateInformationDto = new FPCardTemplateInformationDto(); // fpCardTemplateInformationDto.setLogo_url("http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0"); // fpCardTemplateInformationDto.setPayee_name("发票测试"); // // FPCardTemplateCustomCellDto fpCardTemplateCustomCellDto = new FPCardTemplateCustomCellDto(); // fpCardTemplateCustomCellDto.setWords("电子发票"); // fpCardTemplateCustomCellDto.setDescription("查看发票"); // fpCardTemplateCustomCellDto.setJump_url("http://www.qq.com"); // fpCardTemplateCustomCellDto.setMiniprogram_path("gh_86a091e50ad4@app"); // fpCardTemplateCustomCellDto.setMiniprogram_user_name("pages/xxxPage"); // fpCardTemplateInformationDto.setCustom_cell(fpCardTemplateCustomCellDto); // // fpCardTemplateDto.setCard_template_information(fpCardTemplateInformationDto); // // String parseObj = JSONUtil.parseObj(fpCardTemplateDto).toString(); // System.out.println(parseObj); // String baseUrl = "https://api.mch.weixin.qq.com"; // String canonicalUrl = "/v3/new-tax-control-fapiao/card-template"; // PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); // String postStr = null; // try { // postStr = wxFaPiaoService.createAuthorization( // "POST", // baseUrl+canonicalUrl, // parseObj, // privateKey // ); // } catch (NoSuchAlgorithmException e) { // e.printStackTrace(); // } // String token = AppContants.FP_TOKEN_HEADER_TYPE+postStr; // // System.out.println("WECHATPAY2-SHA256-RSA2048 "+postStr); // String s = wxFaPiaoService.sendPost(baseUrl + canonicalUrl, parseObj, "WECHATPAY2-SHA256-RSA2048 "+postStr); // System.out.println(s); // } // // // // @Test // public void rankProfit04() throws IOException {//获取用户填写的抬头 // //初始化请求参数 // Map<String, Object> params = new HashMap<>(); // params.put("scene","WITH_WECHATPAY"); // params.put("fapiao_apply_id","4200002059202401191880748568"); // // String baseUrl = "https://api.mch.weixin.qq.com"; // String canonicalUrl = "/v3/new-tax-control-fapiao/user-title"; // // String urlparm = baseUrl+canonicalUrl;//有参数的get请求,加密是需要把参数加载进去URL // List<BasicNameValuePair> parameters = new ArrayList<>(); // for (Map.Entry<String, Object> entry : params.entrySet()) { // parameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString())); // } // StringBuilder dataparm = new StringBuilder(); // params.forEach((k, v) -> dataparm.append("&" + k + "=" + v)); // String string = dataparm.toString(); // if (!"".equals(string)) { // urlparm = baseUrl+canonicalUrl + "?" + dataparm.substring(1); // } // PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); // String postStr = null; // try { // postStr = wxFaPiaoService.createAuthorization( // "GET", // urlparm, // "", // privateKey // ); // } catch (NoSuchAlgorithmException e) { // e.printStackTrace(); // } // String s = wxFaPiaoService.sendGet(baseUrl+canonicalUrl, params, "WECHATPAY2-SHA256-RSA2048 "+postStr); // System.out.println(s); // } // // @Test // public void rankProfit2() throws IOException {//查询配置开发选项 // PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); // String baseUrl = "https://api.mch.weixin.qq.com"; // String canonicalUrl = "/v3/new-tax-control-fapiao/merchant/development-config"; // String postStr = null; // try { // postStr = wxFaPiaoService.createAuthorization( // "GET", // baseUrl+canonicalUrl, // "", // privateKey // // ); // } catch (NoSuchAlgorithmException e) { // e.printStackTrace(); // } // System.out.println("WECHATPAY2-SHA256-RSA2048"+postStr); // String s = wxFaPiaoService.sendGet(baseUrl + canonicalUrl, new HashMap<>(), "WECHATPAY2-SHA256-RSA2048 "+postStr); // // System.out.println(s); //// try { //// HttpClient httpClient = new HttpClient(); //// GetMethod method = new GetMethod(baseUrl+canonicalUrl); //// method.setRequestHeader("Accept", "application/json"); //// method.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36"); //// method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); //// method.setRequestHeader("Connection", "keep-alive"); //// method.setRequestHeader("Authorization", "WECHATPAY2-SHA256-RSA2048 "+postStr); //// httpClient.executeMethod(method); //// System.out.println(method); //// String responseBodyAsString = method.getResponseBodyAsString(); //// cn.hutool.json.JSONObject maps = JSONUtil.parseObj(responseBodyAsString); //// System.out.println(maps); //// } catch (IOException e) { //// e.printStackTrace(); //// } // // } // // @Test // public void rankProfit2_01() throws IOException, ParseException, GeneralSecurityException {//获取平台证书 // JCEUtil.removeCryptographyRestrictions(); // SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); // PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); // String baseUrl = "https://api.mch.weixin.qq.com"; // String canonicalUrl = "/v3/certificates"; // String postStr = null; // try { // postStr = wxFaPiaoService.createAuthorization( // "GET", // baseUrl+canonicalUrl, // "", // privateKey // // ); // } catch (NoSuchAlgorithmException e) { // e.printStackTrace(); // } // String responseBodyAsString = wxFaPiaoService.sendGet(baseUrl + canonicalUrl, new HashMap<>(), "WECHATPAY2-SHA256-RSA2048 "+postStr); // //完成签名并执行请求 // X509Certificate x509Certificate = null; // try { // cn.hutool.json.JSONObject maps = JSONUtil.parseObj(responseBodyAsString); // System.out.println(maps); // // FPCertificateVo certificateVo = com.alibaba.fastjson.JSONObject.parseObject(responseBodyAsString, FPCertificateVo.class); // for (FPCertificates certificates : certificateVo.getData()) { // if (format.parse(certificates.getEffective_time()).before(new Date()) // && format.parse(certificates.getExpire_time()).after(new Date())) { // FPEncryptCertificate encrypt_certificate = certificates.getEncrypt_certificate(); // //解密 // AesUtil aesUtil = new AesUtil("daL341aN5orDt13puXadsAf2rpuX12v3".getBytes("utf-8")); // String pulicKey = aesUtil.decryptToString( // encrypt_certificate.getAssociated_data().getBytes("utf-8"), // encrypt_certificate.getNonce().getBytes("utf-8"), // encrypt_certificate.getCiphertext()); // //获取平台证书 // final CertificateFactory cf = CertificateFactory.getInstance("X509"); // // ByteArrayInputStream inputStream = new ByteArrayInputStream(pulicKey.getBytes(StandardCharsets.UTF_8)); // // x509Certificate = (X509Certificate) cf.generateCertificate(inputStream); // System.out.println(x509Certificate); // } // } // } catch (IOException e) { // e.printStackTrace(); // } } @Test public void rankProfit2_01() throws IOException, ParseException, GeneralSecurityException {//获取平台证书 JCEUtil.removeCryptographyRestrictions(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3(); String baseUrl = "https://api.mch.weixin.qq.com"; String canonicalUrl = "/v3/certificates"; String postStr = null; try { postStr = wxFaPiaoService.createAuthorization( "GET", baseUrl+canonicalUrl, "", privateKey ); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } String responseBodyAsString = wxFaPiaoService.sendGet(baseUrl + canonicalUrl, new HashMap<>(), "WECHATPAY2-SHA256-RSA2048 "+postStr); //完成签名并执行请求 X509Certificate x509Certificate = null; try { cn.hutool.json.JSONObject maps = JSONUtil.parseObj(responseBodyAsString); System.out.println(maps); FPCertificateVo certificateVo = com.alibaba.fastjson.JSONObject.parseObject(responseBodyAsString, FPCertificateVo.class); for (FPCertificates certificates : certificateVo.getData()) { if (format.parse(certificates.getEffective_time()).before(new Date()) && format.parse(certificates.getExpire_time()).after(new Date())) { FPEncryptCertificate encrypt_certificate = certificates.getEncrypt_certificate(); //解密 AesUtil aesUtil = new AesUtil("daL341aN5orDt13puXadsAf2rpuX12v3".getBytes("utf-8")); String pulicKey = aesUtil.decryptToString( encrypt_certificate.getAssociated_data().getBytes("utf-8"), encrypt_certificate.getNonce().getBytes("utf-8"), encrypt_certificate.getCiphertext()); //获取平台证书 final CertificateFactory cf = CertificateFactory.getInstance("X509"); ByteArrayInputStream inputStream = new ByteArrayInputStream(pulicKey.getBytes(StandardCharsets.UTF_8)); x509Certificate = (X509Certificate) cf.generateCertificate(inputStream); System.out.println(x509Certificate); } } } catch (IOException e) { e.printStackTrace(); } String timestamp = "1705548628"; String nonce = "sJBCGwYIM8WFJCpTE3gDGifC6VOyrPFY"; String body = "{\"id\":\"f23942b4-b128-56ef-9172-2da8204b5159\",\"create_time\":\"2024-01-18T11:30:28+08:00\",\"resource_type\":\"encrypt-resource\",\"event_type\":\"FAPIAO.USER_APPLIED\",\"summary\":\"用户已申请开票\",\"resource\":{\"original_type\":\"fapiao\",\"algorithm\":\"AEAD_AES_256_GCM\",\"ciphertext\":\"X7XjgHrepsnVpFqNgjl9EfRbJIdMUf15izFrtnvEf7So3SWlg6CFNofcQAJE+iL1XfkFk7DNNW0rILNbY1cGWGlAlKbbPhv5SFEakZVe9GZsSTd4EC5zTk9D6g+FTS6EQNxCkj4ut2WyYaSSqJjHgYaqdKzLNPSTGRVQnynafFE=\",\"associated_data\":\"fapiao\",\"nonce\":\"X7daAHdejNsm\"}}"; Map<String, Object> requestBody = JSONUtil.parseObj(body); String signature = "WECHATPAY/SIGNTEST/9WwfXW/noMdzDPcOrFD51Bf5YIThXLTtLCl5hoGlSfIBdY2UpE+5eHLs0XyF7y2cQc4OlzTzDDxSMTp/p/8ZenE2hMBaQjxVrdbTtrOLA1h13/WjCNaTr1URTqQ5+IF5bLCxAW8BmZ0jEqpmI/HYR3wdK8/7W91c1zfKODYgkvJzxFzd8OWi2GtELE5tLamkOLyb0GEcsGww2DUOypO5HjNyITgsy9R00w3OH92UInCD8Z6c5BAsQNySqFK8N52y38AlIWTtKROHmJtu+kHbt+nMOU0kbB5bZcPAptsnVYpp9KMmjMrmyjiKtHZb2TGIWiN/L+bgceyN3g=="; //构造验签名串 String signatureStr = timestamp + "\n" + nonce + "\n" + com.alibaba.fastjson.JSONObject.toJSONString(requestBody) + "\n"; System.out.println(signature.length()); System.out.println(signature); System.out.println(signatureStr.length()); System.out.println(signatureStr); // 加载SHA256withRSA签名器 Signature signer = Signature.getInstance("SHA256withRSA"); // 用微信平台公钥对签名器进行初始化(调上一节中的获取平台证书方法) signer.initVerify(x509Certificate); // 把我们构造的验签名串更新到签名器中 signer.update(signatureStr.getBytes(StandardCharsets.UTF_8)); // 把请求头中微信服务器返回的签名用Base64解码 并使用签名器进行验证 boolean result = signer.verify(Base64Utils.decodeFromString(signature)); System.out.println(result); } @Autowired private MallOrderInfoMapper mallOrderInfoMapper; @Test public void directorProfitTest() { memberProfitService.storeAndDirectorProfit(new Date()); } @Autowired private MallOrderItemMapper mallOrderItemMapper; @Autowired private IMallAchieveService mallAchieveService; @Test public void achieveTest() { List<MallOrderItem> items = mallOrderItemMapper.selectList(null); for (MallOrderItem item : items) { mallAchieveService.add(item.getId()); } } @Test public void paramTest() { Map<String, Integer> map = new HashMap<>(); BigDecimal amount = new BigDecimal("100"); map.put("amount", 1); changeAmount(map); System.out.println(map.get("amount")); } public void changeAmount(Map<String, Integer> amount) { amount.put("amount", 2); } @Resource RestTemplate restTemplate; @Test public void getWeChatAccessToken() { String appId = "wx5cc58f796224af61"; String appSecret = "71403646f666f9b9dca308d4f357765c"; 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失败"); } JSONObject jsonObject = JSON.parseObject(jsonStr); System.out.println(jsonObject.get("access_token").toString()); } @Resource IApiMallTeamLeaderService iApiMallTeamLeaderService; @Test public void confirm(){ // ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto = new ApiLeaderOrderConfirmDto(); // apiLeaderOrderConfirmDto.setIds("90"); // iApiMallTeamLeaderService.leaderOrderConfirm(apiLeaderOrderConfirmDto); String productNames = getProductNames(35L, 106L); System.out.println(productNames); } /** * 根据用户ID和订单ID获取所购买商品名称 * @return 所含商品名称(多个以","隔开) */ public String getProductNames(Long memberId, Long orderId) { MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOrderByMemberIdAndId(memberId, orderId); List<MallOrderItem> details = mallOrderInfo.getItems(); if (CollectionUtils.isEmpty(details)) { return ""; } StringBuffer productNameBuffer = new StringBuffer(); Integer maxLength = 30; for (int i = 0; i< details.size(); i++) { MallOrderItem mallOrderItem = details.get(i); String goodsName = mallOrderItem.getGoodsName(); if (goodsName == null) { continue; } if (i == 0 && goodsName.length() > maxLength) { productNameBuffer.append(goodsName.substring(0, maxLength) + "..."); break; } if ((productNameBuffer.length() + goodsName.length()) > maxLength) { productNameBuffer.append("等"); break; } productNameBuffer.append(goodsName + ","); } String productNames = productNameBuffer.toString(); if (productNames.endsWith(",")) { productNames = productNames.substring(0, productNames.length() - 1); } if (productNames.endsWith(",等")) { productNames = productNames.substring(0, productNames.length() - 2) + "等"; } return productNames; } @Autowired private IXcxPayService iXcxPayService; @Autowired private IAdminMallTeamLeaderService iAdminMallTeamLeaderService; @Test public void qrcodeBase64(){ // Integer integer = mallGoodsMapper.upDateStockAndVolumeByGoodsId(35L, 3); // System.out.println(integer); // WxGenerateQrCodeDto wxGenerateQrCodeDto = new WxGenerateQrCodeDto(); // wxGenerateQrCodeDto.setPage("pages/product/details"); // wxGenerateQrCodeDto.setScene("35"); // FebsResponse febsResponse = iXcxPayService.generateQrCode(wxGenerateQrCodeDto); // String data = febsResponse.get("data").toString(); // System.out.println(data); // trackServiceInfo("e024c63342930addc57189c8608cdb01",null); // String e024c63342930addc57189c8608cdb01 = trackServiceDel("e024c63342930addc57189c8608cdb01", "792477"); // System.out.println(e024c63342930addc57189c8608cdb01); String ss = fenceDel("95ede7157929f5f6b6c758971be924b1", "795278","795554"); System.out.println(ss); } //电子围栏删除 public String fenceDel(String gaodeKey, String sid,String fenceId) { String url = "https://tsapi.amap.com/v1/track/geofence/delete?key="+gaodeKey+"&sid="+sid+"&gfids="+fenceId; HttpPost httpPost = new HttpPost(url); Map<String,String> map = new HashMap<>(); map.put("key",gaodeKey); map.put("sid",sid); map.put("gfids",fenceId); String param= JSON.toJSONString(map); String result = null; try { result = HttpCurlUtil.sendPostHttp(url, param); } catch (IOException e) { e.printStackTrace(); } cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result); System.out.println(maps); String errcode = maps.get("errcode").toString(); if(!"10000".equals(errcode)){ return "fail"; }else{ return maps.toString(); } } //服务删除 public String trackServiceDel(String gaodeKey, String sid) { String url = "https://tsapi.amap.com/v1/track/service/delete?key="+gaodeKey+"&sid="+sid; HttpPost httpPost = new HttpPost(url); Map<String,String> map = new HashMap<>(); map.put("key",gaodeKey); map.put("sid",sid); String param= JSON.toJSONString(map); String result = null; try { result = HttpCurlUtil.sendPostHttp(url, param); } catch (IOException e) { e.printStackTrace(); } cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result); System.out.println(maps); String errcode = maps.get("errcode").toString(); if(!"10000".equals(errcode)){ return "fail"; }else{ return maps.toString(); } // String str2 = maps.get("data").toString(); // cn.hutool.json.JSONObject maps2 = JSONUtil.parseObj(str2); // String serviceId = maps2.get("sid").toString(); // if(null!=serviceId&&!"".equals(serviceId)){ // return serviceId; // }else{ // return "fail"; // } } public String trackServiceInfo(String gaodeKey, String serviceName) { String url = "https://tsapi.amap.com/v1/track/service/list"; HttpPost httpPost = new HttpPost(url); Map<String,String> map = new HashMap<>(); //高德Key //用户在高德地图官网申请Web服务API类型Key map.put("key",gaodeKey); System.out.println("==高德返回"+map); String result = null; try { result = HttpCurlUtil.sendGetHttp(url, map); } catch (IOException e) { e.printStackTrace(); } System.out.println("==高德返回"+result); cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result); String errCode = maps.get("errcode").toString(); if("10000".equals(errCode)){ String dataStr = maps.get("data").toString(); cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr); String resultsStr = dataResults.get("results").toString(); return resultsStr; }else{ return "fail"; } } // String timestamp = "1705548628"; // String nonce = "sJBCGwYIM8WFJCpTE3gDGifC6VOyrPFY"; // String body = "{\"id\":\"f23942b4-b128-56ef-9172-2da8204b5159\",\"create_time\":\"2024-01-18T11:30:28+08:00\",\"resource_type\":\"encrypt-resource\",\"event_type\":\"FAPIAO.USER_APPLIED\",\"summary\":\"用户已申请开票\",\"resource\":{\"original_type\":\"fapiao\",\"algorithm\":\"AEAD_AES_256_GCM\",\"ciphertext\":\"X7XjgHrepsnVpFqNgjl9EfRbJIdMUf15izFrtnvEf7So3SWlg6CFNofcQAJE+iL1XfkFk7DNNW0rILNbY1cGWGlAlKbbPhv5SFEakZVe9GZsSTd4EC5zTk9D6g+FTS6EQNxCkj4ut2WyYaSSqJjHgYaqdKzLNPSTGRVQnynafFE=\",\"associated_data\":\"fapiao\",\"nonce\":\"X7daAHdejNsm\"}}"; // Map<String, Object> requestBody = JSONUtil.parseObj(body); // String signature = "WECHATPAY/SIGNTEST/9WwfXW/noMdzDPcOrFD51Bf5YIThXLTtLCl5hoGlSfIBdY2UpE+5eHLs0XyF7y2cQc4OlzTzDDxSMTp/p/8ZenE2hMBaQjxVrdbTtrOLA1h13/WjCNaTr1URTqQ5+IF5bLCxAW8BmZ0jEqpmI/HYR3wdK8/7W91c1zfKODYgkvJzxFzd8OWi2GtELE5tLamkOLyb0GEcsGww2DUOypO5HjNyITgsy9R00w3OH92UInCD8Z6c5BAsQNySqFK8N52y38AlIWTtKROHmJtu+kHbt+nMOU0kbB5bZcPAptsnVYpp9KMmjMrmyjiKtHZb2TGIWiN/L+bgceyN3g=="; // //构造验签名串 // String signatureStr = timestamp + "\n" + nonce + "\n" + com.alibaba.fastjson.JSONObject.toJSONString(requestBody) + "\n"; // System.out.println(signature.length()); // System.out.println(signature); // System.out.println(signatureStr.length()); // System.out.println(signatureStr); // // 加载SHA256withRSA签名器 // Signature signer = Signature.getInstance("SHA256withRSA"); // // 用微信平台公钥对签名器进行初始化(调上一节中的获取平台证书方法) // signer.initVerify(x509Certificate); // // 把我们构造的验签名串更新到签名器中 // signer.update(signatureStr.getBytes(StandardCharsets.UTF_8)); // // 把请求头中微信服务器返回的签名用Base64解码 并使用签名器进行验证 // boolean result = signer.verify(Base64Utils.decodeFromString(signature)); // System.out.println(result); // } // // // @Autowired // private MallOrderInfoMapper mallOrderInfoMapper; // // @Autowired // private MallGoodsSkuMapper mallGoodsSkuMapper; @Autowired private MallLeaderAchieveMapper mallLeaderAchieveMapper; // @Test // public void directorProfitTest() { // memberProfitService.storeAndDirectorProfit(new Date()); // } // // @Autowired // private MallTeamLeaderMapper mallTeamLeaderMapper; // private MallOrderItemMapper mallOrderItemMapper; // // @Autowired // private IMemberProfitService memberProfitService; // @Autowired // private IMallAchieveService mallAchieveService; @Autowired private DataDictionaryCustomMapper dataDictionaryCustomMapper; @Autowired private MallMemberMapper mallMemberMapper; @Autowired private IMallMoneyFlowService mallMoneyFlowService; @Autowired private IApiMallMemberWalletService memberWalletService; @Test public void achieve(){ DataDictionaryCustom dicBonusSwitch = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_SWITCH.getType(), DataDictionaryEnum.BONUS_SWITCH.getCode()); String bonusSwitch = dicBonusSwitch.getValue(); if("1".equals(bonusSwitch)){ DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN);; //获取每日提成总数 /** * a.unique_code uniqueCode 团长特征码 * , IFNULL(sum(a.amount),0) amount 每日提成总金额 */ // DateTime dateTime = DateUtil.offsetDay(new Date(), -1); DateTime dateTime = DateUtil.offsetDay(new Date(), 0); List<Map<String, String>> allLeaderAchieve = mallLeaderAchieveMapper.selectListByStateAndCreateTimeAndUniqueCode(MallLeaderAchieve.STATE_ONE,dateTime); if (CollUtil.isNotEmpty(allLeaderAchieve)) { for (Map<String, String> map : allLeaderAchieve) { String uniqueCode = map.get("uniqueCode"); Object amountOrder = map.get("amount"); //直接舍弃小数点的第三位 BigDecimal amount = new BigDecimal(String.valueOf(amountOrder)).setScale(2,BigDecimal.ROUND_DOWN); BigDecimal achieveMoney = amount.multiply(bonusPercent).setScale(2,BigDecimal.ROUND_DOWN); MallMember mallMember = mallMemberMapper.selectInfoByInviteId(uniqueCode); memberWalletService.addBalance(achieveMoney,mallMember.getId()); String achieveNo = "TC."+ MallUtils.getOrderNum(); mallMoneyFlowService.addMoneyFlow( mallMember.getId(), achieveMoney, MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), achieveNo, FlowTypeEnum.BALANCE.getValue()); //更新到已提成状态 mallLeaderAchieveMapper.updateByUniqueCodeStateAndTime(DateUtil.date(),uniqueCode,MallLeaderAchieve.STATE_ONE,dateTime); } } } } @Autowired private MallMoneyFlowMapper mallMoneyFlowMapper; @Test public void testAddress(){ MallMember loginUser = mallMemberMapper.selectById(47L); BigDecimal totalProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(),MoneyFlowTypeEnum.LEADERACHIEVE.getValue(),null,null,null); BigDecimal todayProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(), MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), null,DateUtil.date(), null); BigDecimal monthProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(), MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), null,null, DateUtil.date()); BigDecimal waitProfit = mallLeaderAchieveMapper.selectProfitByStateAndDateTimeAndUniqueCode(1,null,loginUser.getInviteId()).setScale(2,BigDecimal.ROUND_DOWN); System.out.println(todayProfit +";"); System.out.println(waitProfit +";"); System.out.println(totalProfit +";"); System.out.println(monthProfit +";"); } @Autowired RedisUtils redisUtils; @Autowired MallRefundMapper mallRefundMapper; @Test public void qrcode(){ MallMember member = mallMemberMapper.selectById(402L); // ApiRechargeWalletDto apiRechargeWalletDto = new ApiRechargeWalletDto(); // apiRechargeWalletDto.setAmount(new BigDecimal(1)); // apiRechargeWalletDto.setMemberId(402L); // // @Test // public void achieveTest() { // List<MallOrderItem> items = mallOrderItemMapper.selectList(null); // for (MallOrderItem item : items) { // mallAchieveService.add(item.getId()); // } // } // // @Test // public void paramTest() { // Map<String, Integer> map = new HashMap<>(); // BigDecimal amount = new BigDecimal("100"); // map.put("amount", 1); // changeAmount(map); // System.out.println(map.get("amount")); // } // // public void changeAmount(Map<String, Integer> amount) { // amount.put("amount", 2); // } // // @Resource // RestTemplate restTemplate; // // @Test // public void getWeChatAccessToken() { // // String appId = "wx5cc58f796224af61"; // String appSecret = "71403646f666f9b9dca308d4f357765c"; // 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失败"); // } // // JSONObject jsonObject = JSON.parseObject(jsonStr); // System.out.println(jsonObject.get("access_token").toString()); // } // @Resource // IApiMallTeamLeaderService iApiMallTeamLeaderService; // // @Test // public void confirm(){ //// ApiLeaderOrderConfirmDto apiLeaderOrderConfirmDto = new ApiLeaderOrderConfirmDto(); //// apiLeaderOrderConfirmDto.setIds("90"); //// iApiMallTeamLeaderService.leaderOrderConfirm(apiLeaderOrderConfirmDto); // String productNames = getProductNames(35L, 106L); // System.out.println(productNames); // } // // /** // * 根据用户ID和订单ID获取所购买商品名称 // * @return 所含商品名称(多个以","隔开) // */ // public String getProductNames(Long memberId, Long orderId) { // MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectOrderByMemberIdAndId(memberId, orderId); // List<MallOrderItem> details = mallOrderInfo.getItems(); // if (CollectionUtils.isEmpty(details)) { // return ""; // } // StringBuffer productNameBuffer = new StringBuffer(); // Integer maxLength = 30; // for (int i = 0; i< details.size(); i++) { // MallOrderItem mallOrderItem = details.get(i); // String goodsName = mallOrderItem.getGoodsName(); // if (goodsName == null) { // continue; // } // if (i == 0 && goodsName.length() > maxLength) { // productNameBuffer.append(goodsName.substring(0, maxLength) + "..."); // break; // } // if ((productNameBuffer.length() + goodsName.length()) > maxLength) { // productNameBuffer.append("等"); // break; // } // productNameBuffer.append(goodsName + ","); // } // String productNames = productNameBuffer.toString(); // if (productNames.endsWith(",")) { // productNames = productNames.substring(0, productNames.length() - 1); // } // if (productNames.endsWith(",等")) { // productNames = productNames.substring(0, productNames.length() - 2) + "等"; // } // return productNames; // } // @Autowired // private IXcxPayService iXcxPayService; // @Autowired // private IAdminMallTeamLeaderService iAdminMallTeamLeaderService; // // @Test // public void qrcodeBase64(){ // //// Integer integer = mallGoodsMapper.upDateStockAndVolumeByGoodsId(35L, 3); //// System.out.println(integer); //// WxGenerateQrCodeDto wxGenerateQrCodeDto = new WxGenerateQrCodeDto(); //// wxGenerateQrCodeDto.setPage("pages/product/details"); //// wxGenerateQrCodeDto.setScene("35"); //// FebsResponse febsResponse = iXcxPayService.generateQrCode(wxGenerateQrCodeDto); //// String data = febsResponse.get("data").toString(); //// System.out.println(data); //// trackServiceInfo("e024c63342930addc57189c8608cdb01",null); //// String e024c63342930addc57189c8608cdb01 = trackServiceDel("e024c63342930addc57189c8608cdb01", "792477"); //// System.out.println(e024c63342930addc57189c8608cdb01); // String ss = fenceDel("95ede7157929f5f6b6c758971be924b1", "795278","795554"); // System.out.println(ss); // } // // //电子围栏删除 // public String fenceDel(String gaodeKey, String sid,String fenceId) { // String url = "https://tsapi.amap.com/v1/track/geofence/delete?key="+gaodeKey+"&sid="+sid+"&gfids="+fenceId; // HttpPost httpPost = new HttpPost(url); // Map<String,String> map = new HashMap<>(); // map.put("key",gaodeKey); // map.put("sid",sid); // map.put("gfids",fenceId); // String param= JSON.toJSONString(map); // String result = null; // try { // result = HttpCurlUtil.sendPostHttp(url, param); // } catch (IOException e) { // e.printStackTrace(); // } // cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result); // System.out.println(maps); // String errcode = maps.get("errcode").toString(); // if(!"10000".equals(errcode)){ // return "fail"; // }else{ // return maps.toString(); // } // } // //服务删除 // public String trackServiceDel(String gaodeKey, String sid) { // String url = "https://tsapi.amap.com/v1/track/service/delete?key="+gaodeKey+"&sid="+sid; // HttpPost httpPost = new HttpPost(url); // Map<String,String> map = new HashMap<>(); // map.put("key",gaodeKey); // map.put("sid",sid); // String param= JSON.toJSONString(map); // String result = null; // try { // result = HttpCurlUtil.sendPostHttp(url, param); // } catch (IOException e) { // e.printStackTrace(); // } // cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result); // System.out.println(maps); // String errcode = maps.get("errcode").toString(); // if(!"10000".equals(errcode)){ // return "fail"; // }else{ // return maps.toString(); // } //// String str2 = maps.get("data").toString(); //// cn.hutool.json.JSONObject maps2 = JSONUtil.parseObj(str2); //// String serviceId = maps2.get("sid").toString(); //// if(null!=serviceId&&!"".equals(serviceId)){ //// return serviceId; //// }else{ //// return "fail"; //// } // } // // // public String trackServiceInfo(String gaodeKey, String serviceName) { // String url = "https://tsapi.amap.com/v1/track/service/list"; // HttpPost httpPost = new HttpPost(url); // Map<String,String> map = new HashMap<>(); // //高德Key // //用户在高德地图官网申请Web服务API类型Key // map.put("key",gaodeKey); // System.out.println("==高德返回"+map); // String result = null; // try { // result = HttpCurlUtil.sendGetHttp(url, map); // } catch (IOException e) { // e.printStackTrace(); // } // System.out.println("==高德返回"+result); // cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result); // String errCode = maps.get("errcode").toString(); // if("10000".equals(errCode)){ // String dataStr = maps.get("data").toString(); // cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr); // String resultsStr = dataResults.get("results").toString(); // return resultsStr; // }else{ // return "fail"; // } // } // // //// //// @Autowired //// private MallOrderInfoMapper mallOrderInfoMapper; //// //// @Autowired //// private MallGoodsSkuMapper mallGoodsSkuMapper; // // @Autowired // private MallLeaderAchieveMapper mallLeaderAchieveMapper; //// //// @Autowired //// private MallTeamLeaderMapper mallTeamLeaderMapper; //// //// @Autowired //// private IMemberProfitService memberProfitService; // //// @Autowired //// private IMallAchieveService mallAchieveService; // // @Autowired // private DataDictionaryCustomMapper dataDictionaryCustomMapper; // // @Autowired // private MallMemberMapper mallMemberMapper; // // @Autowired // private IMallMoneyFlowService mallMoneyFlowService; // // @Autowired // private IApiMallMemberWalletService memberWalletService; // // @Test // public void achieve(){ // DataDictionaryCustom dicBonusSwitch = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_SWITCH.getType(), DataDictionaryEnum.BONUS_SWITCH.getCode()); // String bonusSwitch = dicBonusSwitch.getValue(); // if("1".equals(bonusSwitch)){ // DataDictionaryCustom dicBonusPercent = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.BONUS_PERCENT.getType(), DataDictionaryEnum.BONUS_PERCENT.getCode()); // BigDecimal bonusPercent = new BigDecimal(dicBonusPercent.getValue()).setScale(2,BigDecimal.ROUND_DOWN);; // //获取每日提成总数 // /** // * a.unique_code uniqueCode 团长特征码 // * , IFNULL(sum(a.amount),0) amount 每日提成总金额 // */ //// DateTime dateTime = DateUtil.offsetDay(new Date(), -1); // DateTime dateTime = DateUtil.offsetDay(new Date(), 0); // List<Map<String, String>> allLeaderAchieve = mallLeaderAchieveMapper.selectListByStateAndCreateTimeAndUniqueCode(MallLeaderAchieve.STATE_ONE,dateTime); // if (CollUtil.isNotEmpty(allLeaderAchieve)) { // for (Map<String, String> map : allLeaderAchieve) { // String uniqueCode = map.get("uniqueCode"); // Object amountOrder = map.get("amount"); // //直接舍弃小数点的第三位 // BigDecimal amount = new BigDecimal(String.valueOf(amountOrder)).setScale(2,BigDecimal.ROUND_DOWN); // BigDecimal achieveMoney = amount.multiply(bonusPercent).setScale(2,BigDecimal.ROUND_DOWN); // MallMember mallMember = mallMemberMapper.selectInfoByInviteId(uniqueCode); // memberWalletService.addBalance(achieveMoney,mallMember.getId()); // String achieveNo = "TC."+ MallUtils.getOrderNum(); // mallMoneyFlowService.addMoneyFlow( // mallMember.getId(), // achieveMoney, // MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), // achieveNo, // FlowTypeEnum.BALANCE.getValue()); // // // //更新到已提成状态 // mallLeaderAchieveMapper.updateByUniqueCodeStateAndTime(DateUtil.date(),uniqueCode,MallLeaderAchieve.STATE_ONE,dateTime); // } // } // } // // } // @Autowired // private MallMoneyFlowMapper mallMoneyFlowMapper; // // @Test // public void testAddress(){ // MallMember loginUser = mallMemberMapper.selectById(47L); // BigDecimal totalProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(),MoneyFlowTypeEnum.LEADERACHIEVE.getValue(),null,null,null); // BigDecimal todayProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(), // MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), // null,DateUtil.date(), // null); // // BigDecimal monthProfit = mallMoneyFlowMapper.selectAmountByFlowtypeAndType(loginUser.getId(),FlowTypeEnum.BALANCE.getValue(), // MoneyFlowTypeEnum.LEADERACHIEVE.getValue(), // null,null, // DateUtil.date()); // BigDecimal waitProfit = mallLeaderAchieveMapper.selectProfitByStateAndDateTimeAndUniqueCode(1,null,loginUser.getInviteId()).setScale(2,BigDecimal.ROUND_DOWN); // System.out.println(todayProfit +";"); // System.out.println(waitProfit +";"); // System.out.println(totalProfit +";"); // System.out.println(monthProfit +";"); // } // // @Autowired // RedisUtils redisUtils; // @Autowired // MallRefundMapper mallRefundMapper; // // // // @Test // public void qrcode(){ // MallMember member = mallMemberMapper.selectById(402L); // //// ApiRechargeWalletDto apiRechargeWalletDto = new ApiRechargeWalletDto(); //// apiRechargeWalletDto.setAmount(new BigDecimal(1)); //// apiRechargeWalletDto.setMemberId(402L); //// BrandWCPayRequestData brandWCPayRequestData = null; //// try { //// brandWCPayRequestData = iXcxPayService.startRechargeWallet(apiRechargeWalletDto); //// } catch (Exception e) { //// throw new FebsException("支付失败"); //// } //// String wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData); //// String payResultStr = brandWCPayRequestData.getPrepay_id(); //// Map<String, Object> map = new HashMap<>(); //// map.put("orderInfo", payResultStr); //// map.put("wxResultStr", wxResultStr); // // Long id = 345417L; // MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id); // BrandWCPayRequestData brandWCPayRequestData = null; // try { // brandWCPayRequestData = iXcxPayService.startRechargeWallet(apiRechargeWalletDto); // brandWCPayRequestData = iXcxPayService.startPayment(mallOrderInfo); // } catch (Exception e) { // throw new FebsException("支付失败"); // } // String wxResultStr = JSONUtil.toJsonStr(brandWCPayRequestData); // String payResultStr = brandWCPayRequestData.getPrepay_id(); // Map<String, Object> map = new HashMap<>(); // map.put("orderInfo", payResultStr); // map.put("wxResultStr", wxResultStr); Long id = 345417L; MallOrderInfo mallOrderInfo = mallOrderInfoMapper.selectById(id); BrandWCPayRequestData brandWCPayRequestData = null; try { brandWCPayRequestData = iXcxPayService.startPayment(mallOrderInfo); } catch (Exception e) { throw new FebsException("支付失败"); } String s = JSONUtil.toJsonStr(brandWCPayRequestData); String prepay_id = brandWCPayRequestData.getPrepay_id(); // if(ObjectUtil.isEmpty(mallOrderInfo)){ // } // Integer status = mallOrderInfo.getStatus(); // if(OrderStatusEnum.WAIT_SHIPPING.getValue() != status){ // } // Integer deliveryState = mallOrderInfo.getDeliveryState(); // if(1 != deliveryState){ // } // //根据子订单生成退款记录 // List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id); // if(CollUtil.isEmpty(mallOrderItemList)){ // } // for(MallOrderItem mallOrderItem : mallOrderItemList){ // QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>(); // objectQueryWrapper.eq("member_id",member.getId()); // objectQueryWrapper.eq("order_id",mallOrderInfo.getId()); // objectQueryWrapper.eq("item_id",mallOrderItem.getId()); // MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper); // MallRefundEntity mallRefundEntity = new MallRefundEntity(); // if(ObjectUtil.isEmpty(mallRefund)){ // mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+mallOrderItem.getId()); // mallRefundEntity.setMemberId(member.getId()); // mallRefundEntity.setOrderId(mallOrderInfo.getId()); // mallRefundEntity.setItemId(mallOrderItem.getId()); // if("余额支付".equals(mallOrderInfo.getPayMethod())){ // mallRefundEntity.setType(3); // }else if("微信支付".equals(mallOrderInfo.getPayMethod())){ // mallRefundEntity.setType(1); // }else{ // mallRefundEntity.setType(3); // String s = JSONUtil.toJsonStr(brandWCPayRequestData); // String prepay_id = brandWCPayRequestData.getPrepay_id(); // // //// if(ObjectUtil.isEmpty(mallOrderInfo)){ //// } //// Integer status = mallOrderInfo.getStatus(); //// if(OrderStatusEnum.WAIT_SHIPPING.getValue() != status){ //// } //// Integer deliveryState = mallOrderInfo.getDeliveryState(); //// if(1 != deliveryState){ //// } //// //根据子订单生成退款记录 //// List<MallOrderItem> mallOrderItemList = mallOrderItemMapper.selectListByOrderId(id); //// if(CollUtil.isEmpty(mallOrderItemList)){ //// } //// for(MallOrderItem mallOrderItem : mallOrderItemList){ //// QueryWrapper<MallRefundEntity> objectQueryWrapper = new QueryWrapper<>(); //// objectQueryWrapper.eq("member_id",member.getId()); //// objectQueryWrapper.eq("order_id",mallOrderInfo.getId()); //// objectQueryWrapper.eq("item_id",mallOrderItem.getId()); //// MallRefundEntity mallRefund = mallRefundMapper.selectOne(objectQueryWrapper); //// MallRefundEntity mallRefundEntity = new MallRefundEntity(); //// if(ObjectUtil.isEmpty(mallRefund)){ //// mallRefundEntity.setRefundNo(mallOrderInfo.getOrderNo()+"_RITEM"+mallOrderItem.getId()); //// mallRefundEntity.setMemberId(member.getId()); //// mallRefundEntity.setOrderId(mallOrderInfo.getId()); //// mallRefundEntity.setItemId(mallOrderItem.getId()); //// if("余额支付".equals(mallOrderInfo.getPayMethod())){ //// mallRefundEntity.setType(3); //// }else if("微信支付".equals(mallOrderInfo.getPayMethod())){ //// mallRefundEntity.setType(1); //// }else{ //// mallRefundEntity.setType(3); //// } //// mallRefundEntity.setState(3); //// mallRefundEntity.setAmount(mallOrderItem.getAmount()); //// mallRefundMapper.insert(mallRefundEntity); //// }else{ //// if(mallRefund.getState() == 2){ //// mallRefundEntity.setId(mallRefund.getId()); //// mallRefundEntity.setRefundNo(mallRefund.getRefundNo()); //// mallRefundEntity.setMemberId(mallRefund.getMemberId()); //// mallRefundEntity.setOrderId(mallRefund.getOrderId()); //// mallRefundEntity.setItemId(mallRefund.getItemId()); //// mallRefundEntity.setType(mallRefund.getType()); //// mallRefundEntity.setState(3); //// mallRefundEntity.setAmount(mallRefund.getAmount()); //// mallRefundMapper.updateById(mallRefundEntity); //// } //// } //// ApiLeaderRefundOrderDto apiLeaderRefundOrderDto = new ApiLeaderRefundOrderDto(); //// apiLeaderRefundOrderDto.setOrderId(mallOrderInfo.getId()); //// apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId()); //// apiLeaderRefundOrderDto.setAgreeState(1); //// iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto); //// } // } // // /** // * 获取小程序菊花码 // * @Description //TODO // * @Author zhaowx // * @Date 2020/3/25 15:23 // **/ // @Test // public void getWXCode() { // try { // //这里调用的是上面的获取access_token方法 // String access_token = redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString(); // String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+access_token; // String scene = "15"; // Map<String, String> param = new HashMap<>(); // param.put("scene",scene); // //这里的page如果没有的话可以不写,默认是跳主页,如果写了没有的页面的话,会返回错误信息 // param.put("page","pages/product/details"); // String json = JSON.toJSONString(param); // ByteArrayInputStream inputStream = sendPost(url, json); // // //这里判断的是返回的图片还是错误信息,一般错误信息不会大于200 // if (inputStream.available() <= 200){ // ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); // int i; // byte[] buffer = new byte[200]; // while ((i = inputStream.read(buffer)) != -1){ // byteArrayOutputStream.write(buffer,0,i); // } // mallRefundEntity.setState(3); // mallRefundEntity.setAmount(mallOrderItem.getAmount()); // mallRefundMapper.insert(mallRefundEntity); // }else{ // if(mallRefund.getState() == 2){ // mallRefundEntity.setId(mallRefund.getId()); // mallRefundEntity.setRefundNo(mallRefund.getRefundNo()); // mallRefundEntity.setMemberId(mallRefund.getMemberId()); // mallRefundEntity.setOrderId(mallRefund.getOrderId()); // mallRefundEntity.setItemId(mallRefund.getItemId()); // mallRefundEntity.setType(mallRefund.getType()); // mallRefundEntity.setState(3); // mallRefundEntity.setAmount(mallRefund.getAmount()); // mallRefundMapper.updateById(mallRefundEntity); // String str = new String(byteArrayOutputStream.toByteArray()); // //错误信息的格式在官方文档里有 // JSONObject jsonObject = JSONObject.parseObject(str); // if ("41030".equals(jsonObject.getString("errcode"))){ // System.out.println("所传page页面不存在,或者小程序没有发布"); // // }else if ("45009".equals(jsonObject.getString("errcode"))){ // System.out.println("调用分钟频率受限"); // } // byteArrayOutputStream.close(); // } // //输出到本地的代码 // FileOutputStream fileOutputStream = new FileOutputStream("D:/123.png"); // int i; // byte[] buffer = new byte[10240000]; // while ((i = inputStream.read(buffer)) != -1){ // fileOutputStream.write(buffer,0,i); // } // // fileOutputStream.flush(); // fileOutputStream.close(); // inputStream.close(); // }catch (Exception e){ // } // } // // // public static ByteArrayInputStream sendPost(String URL, String json) { // InputStream inputStream = null; // ByteArrayInputStream byteArrayInputStream = null; // // 创建默认的httpClient实例. // CloseableHttpClient httpclient = HttpClients.createDefault(); // // 创建httppost // HttpPost httppost = new HttpPost(URL); // httppost.addHeader("Content-type", "application/json; charset=utf-8"); // httppost.setHeader("Accept", "application/json"); // try { // StringEntity s = new StringEntity(json, Charset.forName("UTF-8")); // s.setContentEncoding("UTF-8"); // httppost.setEntity(s); // HttpResponse response = httpclient.execute(httppost); // if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ // // 获取相应实体 // HttpEntity entity = response.getEntity(); // inputStream = entity.getContent(); // ByteArrayOutputStream outStream = new ByteArrayOutputStream(); // // 创建一个Buffer字符串 // byte[] buffer = new byte[1024]; // // 每次读取的字符串长度,如果为-1,代表全部读取完毕 // int len = 0; // // 使用一个输入流从buffer里把数据读取出来 // while ((len = inputStream.read(buffer)) != -1) { // // 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 // outStream.write(buffer, 0, len); // } // // 关闭输入流 // inputStream.close(); // // 把outStream里的数据写入内存 // byteArrayInputStream = new ByteArrayInputStream(outStream.toByteArray()); // byte[] data = outStream.toByteArray(); // String result = new String(Base64.getEncoder().encode(data)); // result = "data:image/jpeg;base64," + result; // System.out.println(result); // } // } catch (Exception e) { // e.printStackTrace(); // } finally { // // 关闭连接,释放资源 // try { // httpclient.close(); // } catch (IOException e) { // e.printStackTrace(); // } // } // return byteArrayInputStream; // } // // // /** // * 传递自定义参数获取二维码保存后并生成url给前端访问 // * @Author yeafel // * @param scene // * @param page // * @param is_hyaline // * @param auto_color // * @return // */ // @Test // public void getQrCodeImgUrl() { // String scene = "pages/product/details"; // String page = "15"; // Boolean is_hyaline = true; // Boolean auto_color = true; // RestTemplate restTemplate = new RestTemplate(); // //首先获取ACCESS_TOKEN // String accessToken = redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString(); // // //然后调用微信官方api生成二维码 // String createQrCodeUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken; // //此处我是使用的阿里巴巴的fastJson // JSONObject createQrParam = new JSONObject(); // createQrParam.put("scene", scene); // createQrParam.put("page", page); // createQrParam.put("is_hyaline", is_hyaline); // createQrParam.put("auto_color", auto_color); // // PrintWriter out = null; // InputStream in = null; // try { // URL realUrl = new URL(createQrCodeUrl); // // 打开和URL之间的连接 // URLConnection conn = realUrl.openConnection(); // // 设置通用的请求属性 // conn.setRequestProperty("accept", "*/*"); // conn.setRequestProperty("connection", "Keep-Alive"); // conn.setRequestProperty("user-agent", // "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // // 发送POST请求必须设置如下两行 // conn.setDoOutput(true); // conn.setDoInput(true); // // 获取URLConnection对象对应的输出流 // out = new PrintWriter(conn.getOutputStream()); // // 发送请求参数,利用connection的输出流,去写数据到connection中,我的参数数据流出我的电脑内存到connection中,让connection把参数帮我传到URL中去请求。 // out.print(createQrParam); // // flush输出流的缓冲 // out.flush(); // //获取URL的connection中的输入流,这个输入流就是我请求的url返回的数据,返回的数据在这个输入流中,流入我内存,我将从此流中读取数据。 // in = conn.getInputStream(); // //定义个空字节数组 // byte[] data = null; // // 读取图片字节数组 // try { // //创建字节数组输出流作为中转仓库,等待被写入数据 // ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); // byte[] buff = new byte[100]; // int rc = 0; // while ((rc = in.read(buff, 0, 100)) > 0) { // //向中转的输出流循环写出输入流中的数据 // swapStream.write(buff, 0, rc); // } // //此时connection的输入流返回给我们的请求结果数据已经被完全地写入了我们定义的中转输出流swapStream中 // data = swapStream.toByteArray(); // } catch (IOException e) { // e.printStackTrace(); // } finally { // if (in != null) { // try { // in.close(); // } catch (IOException e) { // e.printStackTrace(); // } // } // } // String base64Code = new String(Objects.requireNonNull(Base64.getEncoder().encode(data))); // //Base64转byte[]数组 // System.out.println(base64Code); // } catch (Exception e) { // System.out.println("发送 POST 请求出现异常!" + e); // e.printStackTrace(); // } // // // 使用finally块来关闭输出流、输入流 // finally { // try { // if (out != null) { // out.close(); // } // if (in != null) { // in.close(); // } // } catch (IOException ex) { // ex.printStackTrace(); // } // } // ApiLeaderRefundOrderDto apiLeaderRefundOrderDto = new ApiLeaderRefundOrderDto(); // apiLeaderRefundOrderDto.setOrderId(mallOrderInfo.getId()); // apiLeaderRefundOrderDto.setItemId(mallOrderItem.getId()); // apiLeaderRefundOrderDto.setAgreeState(1); // iApiMallTeamLeaderService.leaderRefundOrder(apiLeaderRefundOrderDto); // } } /** * 获取小程序菊花码 * @Description //TODO * @Author zhaowx * @Date 2020/3/25 15:23 **/ @Test public void getWXCode() { try { //这里调用的是上面的获取access_token方法 String access_token = redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString(); String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+access_token; String scene = "15"; Map<String, String> param = new HashMap<>(); param.put("scene",scene); //这里的page如果没有的话可以不写,默认是跳主页,如果写了没有的页面的话,会返回错误信息 param.put("page","pages/product/details"); String json = JSON.toJSONString(param); ByteArrayInputStream inputStream = sendPost(url, json); //这里判断的是返回的图片还是错误信息,一般错误信息不会大于200 if (inputStream.available() <= 200){ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int i; byte[] buffer = new byte[200]; while ((i = inputStream.read(buffer)) != -1){ byteArrayOutputStream.write(buffer,0,i); } String str = new String(byteArrayOutputStream.toByteArray()); //错误信息的格式在官方文档里有 JSONObject jsonObject = JSONObject.parseObject(str); if ("41030".equals(jsonObject.getString("errcode"))){ System.out.println("所传page页面不存在,或者小程序没有发布"); }else if ("45009".equals(jsonObject.getString("errcode"))){ System.out.println("调用分钟频率受限"); } byteArrayOutputStream.close(); } //输出到本地的代码 FileOutputStream fileOutputStream = new FileOutputStream("D:/123.png"); int i; byte[] buffer = new byte[10240000]; while ((i = inputStream.read(buffer)) != -1){ fileOutputStream.write(buffer,0,i); } fileOutputStream.flush(); fileOutputStream.close(); inputStream.close(); }catch (Exception e){ } } public static ByteArrayInputStream sendPost(String URL, String json) { InputStream inputStream = null; ByteArrayInputStream byteArrayInputStream = null; // 创建默认的httpClient实例. CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httppost HttpPost httppost = new HttpPost(URL); httppost.addHeader("Content-type", "application/json; charset=utf-8"); httppost.setHeader("Accept", "application/json"); try { StringEntity s = new StringEntity(json, Charset.forName("UTF-8")); s.setContentEncoding("UTF-8"); httppost.setEntity(s); HttpResponse response = httpclient.execute(httppost); if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ // 获取相应实体 HttpEntity entity = response.getEntity(); inputStream = entity.getContent(); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); // 创建一个Buffer字符串 byte[] buffer = new byte[1024]; // 每次读取的字符串长度,如果为-1,代表全部读取完毕 int len = 0; // 使用一个输入流从buffer里把数据读取出来 while ((len = inputStream.read(buffer)) != -1) { // 用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 outStream.write(buffer, 0, len); } // 关闭输入流 inputStream.close(); // 把outStream里的数据写入内存 byteArrayInputStream = new ByteArrayInputStream(outStream.toByteArray()); byte[] data = outStream.toByteArray(); String result = new String(Base64.getEncoder().encode(data)); result = "data:image/jpeg;base64," + result; System.out.println(result); } } catch (Exception e) { e.printStackTrace(); } finally { // 关闭连接,释放资源 try { httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } return byteArrayInputStream; } /** * 传递自定义参数获取二维码保存后并生成url给前端访问 * @Author yeafel * @param scene * @param page * @param is_hyaline * @param auto_color * @return */ @Test public void getQrCodeImgUrl() { String scene = "pages/product/details"; String page = "15"; Boolean is_hyaline = true; Boolean auto_color = true; RestTemplate restTemplate = new RestTemplate(); //首先获取ACCESS_TOKEN String accessToken = redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString(); //然后调用微信官方api生成二维码 String createQrCodeUrl = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken; //此处我是使用的阿里巴巴的fastJson JSONObject createQrParam = new JSONObject(); createQrParam.put("scene", scene); createQrParam.put("page", page); createQrParam.put("is_hyaline", is_hyaline); createQrParam.put("auto_color", auto_color); PrintWriter out = null; InputStream in = null; try { URL realUrl = new URL(createQrCodeUrl); // 打开和URL之间的连接 URLConnection conn = realUrl.openConnection(); // 设置通用的请求属性 conn.setRequestProperty("accept", "*/*"); conn.setRequestProperty("connection", "Keep-Alive"); conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 发送POST请求必须设置如下两行 conn.setDoOutput(true); conn.setDoInput(true); // 获取URLConnection对象对应的输出流 out = new PrintWriter(conn.getOutputStream()); // 发送请求参数,利用connection的输出流,去写数据到connection中,我的参数数据流出我的电脑内存到connection中,让connection把参数帮我传到URL中去请求。 out.print(createQrParam); // flush输出流的缓冲 out.flush(); //获取URL的connection中的输入流,这个输入流就是我请求的url返回的数据,返回的数据在这个输入流中,流入我内存,我将从此流中读取数据。 in = conn.getInputStream(); //定义个空字节数组 byte[] data = null; // 读取图片字节数组 try { //创建字节数组输出流作为中转仓库,等待被写入数据 ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[100]; int rc = 0; while ((rc = in.read(buff, 0, 100)) > 0) { //向中转的输出流循环写出输入流中的数据 swapStream.write(buff, 0, rc); } //此时connection的输入流返回给我们的请求结果数据已经被完全地写入了我们定义的中转输出流swapStream中 data = swapStream.toByteArray(); } catch (IOException e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } String base64Code = new String(Objects.requireNonNull(Base64.getEncoder().encode(data))); //Base64转byte[]数组 System.out.println(base64Code); } catch (Exception e) { System.out.println("发送 POST 请求出现异常!" + e); e.printStackTrace(); } // 使用finally块来关闭输出流、输入流 finally { try { if (out != null) { out.close(); } if (in != null) { in.close(); } } catch (IOException ex) { ex.printStackTrace(); } } } public static void main(String[] args) { BigDecimal amount = new BigDecimal("0.15").setScale(2,BigDecimal.ROUND_DOWN); System.out.println(amount); } @Test public void aaaTest() { // agentConsumer.vipLevelUp(133L); agentConsumer.getScoreMsg(217L); } } // } // // // public static void main(String[] args) { // BigDecimal amount = new BigDecimal("0.15").setScale(2,BigDecimal.ROUND_DOWN); // System.out.println(amount); // } // // @Test // public void aaaTest() { //// agentConsumer.vipLevelUp(133L); // agentConsumer.getScoreMsg(217L); // } //}