| 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.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; | 
| import org.springframework.web.bind.annotation.RequestBody; | 
| 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 | 
| @Validated | 
| @RestController | 
| @RequiredArgsConstructor | 
| @RequestMapping(value = "/admin/system") | 
| public class AdminSystemController { | 
|   | 
|     @Autowired | 
|     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) { | 
|         systemService.bonusSystemSetting(map); | 
|         return new FebsResponse().success().message("设置成功"); | 
|     } | 
|   | 
|     @PostMapping(value = "/cashOutSetting") | 
|     public FebsResponse cashOutSetting(CashOutSettingDto cashOutSettingDto) { | 
|         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); | 
| //    } | 
| } |