Administrator
9 days ago 7966b494ddea2c27ecec6ed031521cb889ab19f5
src/main/java/cc/mrbird/febs/mall/controller/AdminSystemController.java
@@ -1,12 +1,25 @@
package cc.mrbird.febs.mall.controller;
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.mall.dto.CashOutSettingDto;
import cc.mrbird.febs.common.utils.AppContants;
import cc.mrbird.febs.mall.dto.*;
import cc.mrbird.febs.mall.entity.DataDictionaryCustom;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.service.ICommonService;
import cc.mrbird.febs.mall.service.ISystemService;
import cc.mrbird.febs.pay.model.HeaderDto;
import cc.mrbird.febs.pay.service.WxFaPiaoService;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.RequestEntity;
import org.apache.commons.httpclient.methods.StringRequestEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
@@ -14,6 +27,13 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.math.BigDecimal;
import java.security.KeyPair;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@Slf4j
@@ -27,6 +47,8 @@
    private ISystemService systemService;
    private final ICommonService commonService;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    private final WxFaPiaoService wxFaPiaoService;
    @PostMapping(value = "/bonusSystemSetting")
    public FebsResponse bonusSystemSetting(@RequestBody Map<String, Object> map) {
@@ -39,4 +61,164 @@
        commonService.addDataDic(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode(), cashOutSettingDto, "提现设置");
        return new FebsResponse().success();
    }
    @PostMapping(value = "/agentAmountSetSetting")
    public FebsResponse agentAmountSetSetting(AdminAgentAmountDto adminAgentAmountDto) {
        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.PRICE_AMOUNT.getType(), DataDictionaryEnum.PRICE_AMOUNT.getCode()
        );
        if(ObjectUtil.isEmpty(dic)){
            return new FebsResponse().fail().message("请刷新页面重试");
        }
        DataDictionaryCustom giveStateDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.GIVE_STATE.getType(),
                DataDictionaryEnum.GIVE_STATE.getCode());
        if(ObjectUtil.isEmpty(giveStateDic)){
            return new FebsResponse().fail().message("请刷新页面重试");
        }
        DataDictionaryCustom activityBulletinDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.ACTIVITY_BULLETIN.getType(),
                DataDictionaryEnum.ACTIVITY_BULLETIN.getCode());
        if(ObjectUtil.isEmpty(activityBulletinDic)){
            return new FebsResponse().fail().message("请刷新页面重试");
        }
        DataDictionaryCustom giveAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.GIVE_AMOUNT.getType(),
                DataDictionaryEnum.GIVE_AMOUNT.getCode());
        if(ObjectUtil.isEmpty(giveAmountDic)){
            return new FebsResponse().fail().message("请刷新页面重试");
        }
        DataDictionaryCustom chargeAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.CHARGE_AMOUNT.getType(),
                DataDictionaryEnum.CHARGE_AMOUNT.getCode());
        if(ObjectUtil.isEmpty(chargeAmountDic)){
            return new FebsResponse().fail().message("请刷新页面重试");
        }
        String giveState = adminAgentAmountDto.getGiveState();
        if(1 == Integer.parseInt(giveState)){
            if(ObjectUtil.isEmpty(adminAgentAmountDto.getActivityBulletin())){
                return new FebsResponse().fail().message("活动公告不能为空");
            }
            if(ObjectUtil.isEmpty(adminAgentAmountDto.getGiveAmount())){
                return new FebsResponse().fail().message("请输入正确的赠送金额");
            }
            if(BigDecimal.ZERO.compareTo(new BigDecimal(adminAgentAmountDto.getGiveAmount())) > 0){
                return new FebsResponse().fail().message("请输入正确的赠送金额");
            }
            if(ObjectUtil.isEmpty(adminAgentAmountDto.getChargeAmount())){
                return new FebsResponse().fail().message("请输入正确的充值金额");
            }
            if(BigDecimal.ZERO.compareTo(new BigDecimal(adminAgentAmountDto.getChargeAmount())) > 0){
                return new FebsResponse().fail().message("请输入正确的充值金额");
            }
        }
        dic.setValue(adminAgentAmountDto.getAgentAmountValue());
        dataDictionaryCustomMapper.updateById(dic);
        giveStateDic.setValue(adminAgentAmountDto.getGiveState());
        dataDictionaryCustomMapper.updateById(giveStateDic);
        activityBulletinDic.setValue(adminAgentAmountDto.getActivityBulletin());
        dataDictionaryCustomMapper.updateById(activityBulletinDic);
        giveAmountDic.setValue(adminAgentAmountDto.getGiveAmount());
        dataDictionaryCustomMapper.updateById(giveAmountDic);
        chargeAmountDic.setValue(adminAgentAmountDto.getChargeAmount());
        dataDictionaryCustomMapper.updateById(chargeAmountDic);
        return new FebsResponse().success().message("操作成功");
    }
    @PostMapping(value = "/faPiaoSet")
    public FebsResponse faPiaoSet(FaPiaoDto faPiaoDto) {
        dataDictionaryCustomMapper.updateDicValueByTypeAndCode(
                DataDictionaryEnum.FP_CALLBACK_URL.getType(),
                DataDictionaryEnum.FP_CALLBACK_URL.getCode(),
                faPiaoDto.getCallbackUrl()
        );
        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 {
            PrivateKey privateKey = wxFaPiaoService.getPrivateKeyV3();
            postStr = wxFaPiaoService.createAuthorization(
                    "PATCH",
                    baseUrl+canonicalUrl,
                    parseObj,
                    privateKey
            );
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (IOException 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);
        log.info("配置开发选项:"+s);
        return new FebsResponse().success().message(s);
    }
    @PostMapping(value = "/agentDetail")
    public FebsResponse agentDetail(AdminAgentDetailDto adminAgentDetailDto) {
        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.AGENT_DETAILS.getType(), DataDictionaryEnum.AGENT_DETAILS.getCode()
        );
        if(ObjectUtil.isEmpty(dic)){
            return new FebsResponse().fail().message("请刷新页面重试");
        }
        dic.setValue(adminAgentDetailDto.getAgentDetail());
        dataDictionaryCustomMapper.updateById(dic);
        return new FebsResponse().success();
    }
    @PostMapping(value = "/indexVideoSet")
    public FebsResponse indexVideoSet(AdminIndexVideoDto adminIndexVideoDto) {
        DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.VIDEO_URL_INDEX.getType(),
                DataDictionaryEnum.VIDEO_URL_INDEX.getCode()
        );
        if(ObjectUtil.isEmpty(dic)){
            return new FebsResponse().fail().message("请刷新页面重试");
        }
        dic.setValue(adminIndexVideoDto.getVideoUrl());
        dataDictionaryCustomMapper.updateById(dic);
        return new FebsResponse().success();
    }
//    public static void main(String[] args) {
//        List<Integer> lines = Arrays.asList(new Integer[]{1, 1, 0,  1, 1, 0, 0, 1, 0,  1, 1, 0, 1, 0, 1, 0});
//        //数字连续出现的计数
//        Integer symbol = 0;
//        //数字连续出现的次数限制
//        Integer times = 3;
//        //出现的数字
//        Integer symbolNum = 1;
//        //满足规则的次数
//        Integer timesOneSign = 0;
//        for(int i=0;i<lines.size();i++){
//            if(symbolNum == lines.get(i)){
//                symbol = symbol + 1;
//                if(symbol >= times){
//                    timesOneSign = timesOneSign + 1;
//                    symbol = 0;
//                }
//            }else{
//                symbol = 0;
//            }
//        }
//
//        System.out.println(timesOneSign);
//    }
}