| | |
| | | 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.AdminAgentAmountDto; |
| | | import cc.mrbird.febs.mall.dto.AdminAgentDetailDto; |
| | | 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.IMallCountryDeliveryService; |
| | | 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.core.util.StrUtil; |
| | | 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.GetMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | 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 |
| | |
| | | |
| | | private final ICommonService commonService; |
| | | private final DataDictionaryCustomMapper dataDictionaryCustomMapper; |
| | | private final WxFaPiaoService wxFaPiaoService; |
| | | private final IMallCountryDeliveryService countryDeliveryService; |
| | | |
| | | @PostMapping(value = "/bonusSystemSetting") |
| | | public FebsResponse bonusSystemSetting(@RequestBody Map<String, Object> map) { |
| | |
| | | public FebsResponse cashOutSetting(CashOutSettingDto cashOutSettingDto) { |
| | | commonService.addDataDic(DataDictionaryEnum.CASHOUT_SETTING.getType(), DataDictionaryEnum.CASHOUT_SETTING.getCode(), cashOutSettingDto, "提现设置"); |
| | | return new FebsResponse().success(); |
| | | } |
| | | |
| | | @PostMapping(value = "/lwPayConfig") |
| | | @ControllerEndpoint(operation = "保存LWPAY配置") |
| | | public FebsResponse lwPayConfig(LwPayConfigDto dto) { |
| | | if (StrUtil.isBlank(dto.getMemberId())) { |
| | | return new FebsResponse().fail().message("商户号不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(dto.getSecretKey())) { |
| | | return new FebsResponse().fail().message("签名密钥不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(dto.getNotifyUrl())) { |
| | | return new FebsResponse().fail().message("回调地址不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(dto.getReturnUrl())) { |
| | | return new FebsResponse().fail().message("跳转地址不能为空"); |
| | | } |
| | | commonService.addDataDic("LWPAY_CONFIG", "MEMBER_ID", dto.getMemberId(), "LWPAY商户号", false); |
| | | commonService.addDataDic("LWPAY_CONFIG", "SECRET_KEY", dto.getSecretKey(), "LWPAY签名密钥", false); |
| | | commonService.addDataDic("LWPAY_CONFIG", "NOTIFY_URL", dto.getNotifyUrl(), "LWPAY异步回调地址", false); |
| | | commonService.addDataDic("LWPAY_CONFIG", "RETURN_URL", dto.getReturnUrl(), "LWPAY支付完成跳转地址", false); |
| | | return new FebsResponse().success().message("保存成功"); |
| | | } |
| | | |
| | | @PostMapping(value = "/tokenviewConfig") |
| | | @ControllerEndpoint(operation = "保存Tokenview配置") |
| | | public FebsResponse tokenviewConfig(TokenviewConfigDto dto) { |
| | | if (StrUtil.isBlank(dto.getWebhookSecret())) { |
| | | return new FebsResponse().fail().message("签名密钥不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(dto.getTrc20UsdtAddress())) { |
| | | return new FebsResponse().fail().message("收款地址不能为空"); |
| | | } |
| | | commonService.addDataDic("TOKENVIEW_CONFIG", "WEBHOOK_SECRET", dto.getWebhookSecret(), "Tokenview Webhook签名密钥", false); |
| | | commonService.addDataDic("TOKENVIEW_CONFIG", "TRC20_USDT_ADDRESS", dto.getTrc20UsdtAddress(), "TRC20 USDT收款地址", false); |
| | | return new FebsResponse().success().message("保存成功"); |
| | | } |
| | | |
| | | @PostMapping(value = "/salesService") |
| | | @ControllerEndpoint(operation = "保存售后服务配置") |
| | | public FebsResponse salesService(SalesServiceDto dto) { |
| | | if (StrUtil.isBlank(dto.getWhatsApp())) { |
| | | return new FebsResponse().fail().message("WhatsApp不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(dto.getPhone())) { |
| | | return new FebsResponse().fail().message("联系电话不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(dto.getEmail())) { |
| | | return new FebsResponse().fail().message("联系邮箱不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(dto.getAddress())) { |
| | | return new FebsResponse().fail().message("联系地址不能为空"); |
| | | } |
| | | if (StrUtil.isBlank(dto.getWorkingHours())) { |
| | | return new FebsResponse().fail().message("工作时间不能为空"); |
| | | } |
| | | commonService.addDataDic("SALES_SERVICE", "WHATSAPP", dto.getWhatsApp(), "WhatsApp号码", false); |
| | | commonService.addDataDic("SALES_SERVICE", "PHONE", dto.getPhone(), "联系电话", false); |
| | | commonService.addDataDic("SALES_SERVICE", "EMAIL", dto.getEmail(), "联系邮箱", false); |
| | | commonService.addDataDic("SALES_SERVICE", "ADDRESS", dto.getAddress(), "联系地址", false); |
| | | commonService.addDataDic("SALES_SERVICE", "WORKINGHOURS", dto.getWorkingHours(), "工作时间", false); |
| | | return new FebsResponse().success().message("保存成功"); |
| | | } |
| | | |
| | | @GetMapping(value = "/countryDeliveryList") |
| | | public FebsResponse countryDeliveryList() { |
| | | return countryDeliveryService.list(); |
| | | } |
| | | |
| | | @PostMapping(value = "/countryDeliverySave") |
| | | @ControllerEndpoint(operation = "保存国家运费配置") |
| | | public FebsResponse countryDeliverySave(@Validated CountryDeliveryDto dto) { |
| | | return countryDeliveryService.saveOrUpdate(dto); |
| | | } |
| | | |
| | | @GetMapping(value = "/countryDeliveryDelete/{id}") |
| | | @ControllerEndpoint(operation = "删除国家运费配置") |
| | | public FebsResponse countryDeliveryDelete(@PathVariable Long id) { |
| | | return countryDeliveryService.delete(id); |
| | | } |
| | | |
| | | @PostMapping(value = "/agentAmountSetSetting") |
| | |
| | | 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())){ |
| | |
| | | } |
| | | 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("请输入正确的充值金额"); |
| | | } |
| | | } |
| | | |
| | |
| | | giveAmountDic.setValue(adminAgentAmountDto.getGiveAmount()); |
| | | dataDictionaryCustomMapper.updateById(giveAmountDic); |
| | | |
| | | return new FebsResponse().success(); |
| | | 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") |
| | |
| | | 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); |
| | | // } |
| | | } |