diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java new file mode 100644 index 0000000..b173f11 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/config/AlipayConfig.java @@ -0,0 +1,54 @@ +package com.bnyer.img.config; + +//import com.bnyer.img.handler.TokenCheckHandler; +import lombok.Getter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * @author chengkun + * @date 2022/4/21 17:43 + */ +@Configuration +@ConfigurationProperties(prefix = "alipay") +@Getter +@RefreshScope +public class AlipayConfig{ + + @Value("${alipay.gatewayUrl}") + private String gatewayUrl; + + @Value("${alipay.appId}") + public String appId; + + @Value("${alipay.privateKey}") + public String privateKey; + + @Value("${alipay.certPath}") + public String certPath; + + @Value("${alipay.alipayPublicCertPath}") + public String alipayPublicCertPath; + + @Value("${alipay.rootPath}") + public String rootPath; + +// @Resource +// private TokenCheckHandler tokenCheckHandler; + + /** 不需要拦截地址 */ +// public static final String[] excludeUrls = { "/mini/tiktok/loginTiktok", "/mini/tiktok/insertFeedback"}; +// +// @Override +// public void addInterceptors(InterceptorRegistry registry) { +// // 注册Token拦截器 +// registry.addInterceptor(tokenCheckHandler) +// .addPathPatterns("/**") +// .excludePathPatterns(excludeUrls) +// .order(-10); +// +// } +} diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/WithdrawConstant.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/WithdrawConstant.java index f230aa3..6ea2789 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/WithdrawConstant.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/constants/WithdrawConstant.java @@ -31,4 +31,9 @@ public class WithdrawConstant { */ public static final String ALIPAY = "2"; + /** + * 调用支付宝转账打款成功响应码 + */ + public static final String SUCCESS = "10000"; + } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java index 1cf35f6..5818ae9 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CreatorMiniController.java @@ -266,96 +266,4 @@ public class CreatorMiniController extends BaseController { log.info("支付宝回调了!"); return AjaxResult.success(); } - - //@TokenCheck - @ApiOperation(value="提现") - @GetMapping(value = "/withdraw") - public AjaxResult withdraw() throws AlipayApiException { - - String sandboxGatewayUrl = "https://openapi.alipaydev.com/gateway.do"; - String gatewayUrl = "https://openapi.alipay.com/gateway.do"; - - String sandboxPrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC1rI3A7cuj7vjBZpU+AYqTsQJxXGMvUlPdVZmuJJR/o3NY+jxIiSDOA/HjChJ2v8DlZXDmpzgJ+DQt1+GZkNr/yGt335jd9JBZuNEUO19iFjnlWnwPu6enp829IqBJv65km0ATA73jVnj2gW9E9bRkpwbrXdf9FSYvb14+6P1sKGavCVHLjafWIbBavaOXJlaEjR+U62nghHoiIP1RL49xsvBV8VtRXQfnCUPaOGU4PZbvYne3FzTbjIDwqbYWsfTfO4dIo1z2jkGNzPi8ZGrVe8PJsXBRl7A9qK5EI2wBwDpgWmrkUs2avfMkSYWfrrTJ4WnurCiNomxRszylGcHNAgMBAAECggEAdlABoPs7+27NoWXlG5R1YumL5bd9AHxlEWeFxdscumL/45pTWAm1y3TWOj18+Mi4HqyJcizEWfnCQXit+wxTEvC6zD5Zl3KF72hlAQAJhh9jZPIgiT50WML3QY0jReQG9o4ElF2DdGIENMTmacp5yHLeFrnux2rWi13DysSBBcXQ8rYS88jyT6L0xqWb8M7TD0MzZYyRBOFm4Nv91FBoj2vWtxNz5T9hJfX8AGO5HChR4NgvclM1Jbq+k9/6oeEEBU5m3AuIo2DEy1mQbVvA80hJMsi38Na+5CyfdXjm9wJ7v95/opcjgWAPrHrDdBngVeMuvmm2qj31b7ZHp3z+AQKBgQDZV2JJMA4dy6zyLbc2ImNLfU8iDyzuXAMKRgwrU0/wLnJRrvFJsIxzRnQxM9yF+Yo9bxqAv0nUisYIInhmGMVo8L8+nCyTHK1KYbOa2O+9grQiY/8p+lGlesrMKUnbUgbwS2Sj//hLmgor+f/pnp99xnmkkwV1CfAj69iaDL2LnQKBgQDV/RAJ8JmnjFHhGW7T0U7xtCR+jLO+EGpVaAlPznmTpr83IZbFnaDMEN9XhKCHk7iwDx6+bTSko/tfnyDEP5f2LjHuHH6hQyZBPIUSB9nvgB5Dtky43yzNtO4UkpH+MFCeFun5v+RtmyUELMSksjxwKjRBV3lG5pDW1NIxjk2v8QKBgHCEFJXfEu/J6ZbWo+qakt0Z2kW/pXsgl1JSQSqMzu2Anh47ex6zD4L+DlkKiDezoCV9xzKv1QD7dtnvPnVcjZZuTBOVtl3SksPXIKwhcruhVrAXJJoOxQXuM97N4TZxmLX90fQ1J827yVhK7Hl9bQQoJAFXO5QDuRZfmprlzZrhAoGBAIGewuJifZDCLK7fiwR/mwRKDHkjnZUZuG93j3xqI7bOoLEyhXO64bX62m7XBa5aSttKrWLIH8VDF3d6moyFwPT8Un5bgFEKrdeCY1DitJ6gyrRVbu/lL+yDFlwb1JdWiN7aHmyMUkAaZDe9LnhdBsMirXiPFgVekImxbIlcG67hAoGBAJIhIcvXkYbXZSP6SLFoT0NsG2hPYNwSr3+4u4acT3mBD519EA9kBvmAom56l7t6xoIVjgREuz0Kaa+V24+Za5o14LJA0iBxgKBIqD5ABMY6XkgPMY5p1/eVUWoXPmx4KsS/ys0MX60Kf0xgLD0gW0j+x1vsA8w1GiJXTAT0JZWP"; - String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCGq3UKNbNuIazHbD9slLNJsStw2347rYwR1NmFLCi/d62yNLeTZvmrY4aW3GsDsQiK5vFdLRxaT8tIkGO11GilBRn00xkNKnwPkMA8GUdtr7GaudH+YBqk2snDeBhtdlYLq1V79USGZKdnpsPoUIXVIpyhnBlULzcJP7hf7NSauRVBnDf+MuEQOjhRAc6i8RN7nY2Oz5x6ZuIPhJ8qWjbZQoN6sJ00KU5oYZaN34/NGmPIfpR4QwbZbABm0Y0dCwkXzzNoV3cPYsFqKWNN8gxY7mI7YQqYsVb25fvALDjOl0XUGv1D7lMOC4mX3iz4q8b13ZNK+Tb3y4atwO6jK0EdAgMBAAECggEAUb4ZGM1n0F2YZqQKC3pnKT/lQme4w7if4OL19aPMSAv43sao90v2GFYdB81bF66JpOZxc0FCiH8OwUkDfQclTaU/ECBigF9dVoViahheBvIyN9y63lCvW4mCFqf7C9ZcfFDPXqKNqZXHF19eYtEdqzWLJX1+0l6mZXLME03J7u+tPX+OOnjf/K3wBp90RzoS02Ofp8fxiRyiDwFwlcxfRVbffLPVIW8JMqyOuI95U0l90F3N48+twJj8UeZlWHQeTGSDZ5jgfC6T5SXkDxOi6e7ZemZUG43rqsEHyb84fBfpr4ZFh9SkjXSnRih5w0VRws50dE2u1wAeCLG8K5KD8QKBgQDX/rpHjIJl0aD2LsI1kcUW82Yzm7qOJWApRCTe/+mZtrNGotzz/Mc2S0xV8s95ahgsH9AYqytu58UdM0CQhJ5+57fPDQcYWq9QvHB741ljAd1371qTLvRsMQg6E/nmObFvAON7ynNuh+TfkM9e7HQS6dpA0FkVqrREdD7hgUeUewKBgQCfnL3GKdMdH5FTTMBJgiLwHYBpgFQxDPzD5DEvz9lgCgosk76k4jQGi/3/raJWxkAED5K4O2J90IE/VnRXV4Uhi4h54D3ceO9dtXWBN1IxqEuO7pw9ldiRjFrlTo4aSgnq2wrjiVKn92Fm2YXIcAyhibUs7hamWt6LGAULbM5JRwKBgG11jXlM35gxz9xyfcEgCj1DQ/vLY5M9panD+tt33S4kxF17k3WiGGKPbjPwROxGs9FInfCibfRaSC4wFvwl+Rxe2Wt4MqxI6KeFl4tw/4+JFm79QW1tUjix8HVeQjpF6oFSdfX59t2AyJ/zhuOX+IrNL+nArCSqyYgXUPZ+yYOZAoGATbLAkxnDInc+iF1hcac/GMJTw4fr9CDNXxLTeuHkgKMChua5NIzFJLa7Q96jmzhQ62klVDfcX0DD2jBc3DPHpCfHnQSzOINKisSN2gQzJ+c0OPUg673pOhkoGl5eQJ/wKfrNVyx/JzL+oFGdlZAuJejiYGfacMrlcLKVqhUiansCgYEAtPCz8J3fYipscjdWKQIXsejr110KF0zsh8X7ZYKxhAgRZ5ck3wbMbffYIfa7wCm5nIJMY640P3Jh6Rb5W5/4/i04gHbE1Loi714aGCXoY6gm5oVoKIFP8h3g3MyQl7mZ2huAA/KnLsThlmfQ0l0n6Pd8xEcqJ+Ggi/GS2MQQrIw="; - - String sandboxAppId = "2021000121609470"; - String appId = "2021003135690045"; - - String sandboxCertPath = "D:/sandbox/appCertPublicKey_2021000121609470.crt"; - String certPath = "D:/onlineKey/appCertPublicKey_2021003135690045.crt"; - - String sandboxAlipayPublicCertPath = "D:/sandbox/alipayCertPublicKey_RSA2.crt"; - String alipayPublicCertPath = "D:/onlineKey/alipayCertPublicKey_RSA2.crt"; - - String sandboxRootPath = "D:/sandbox/alipayRootCert.crt"; - String rootPath = "D:/onlineKey/alipayRootCert.crt"; - - String sandboxIdentify = "yglaxq2770@sandbox.com"; - String identify = "19983455096"; - - String sandboxName = "yglaxq2770"; - String name = "权煜航"; - - - //构造client - CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); - //设置网关地址 - //certAlipayRequest.setServerUrl(sandboxGatewayUrl); - certAlipayRequest.setServerUrl(gatewayUrl); - //设置应用Id - //certAlipayRequest.setAppId(sandboxAppId); - certAlipayRequest.setAppId(appId); - //设置应用私钥 - //certAlipayRequest.setPrivateKey(sandboxPrivateKey); - certAlipayRequest.setPrivateKey(privateKey); - //设置请求格式,固定值json - certAlipayRequest.setFormat("json"); - //设置字符集 - certAlipayRequest.setCharset("UTF8"); - //设置签名类型 - certAlipayRequest.setSignType("RSA2"); - //设置应用公钥证书路径 - //certAlipayRequest.setCertPath(sandboxCertPath); - certAlipayRequest.setCertPath(certPath); - //设置支付宝公钥证书路径 - //certAlipayRequest.setAlipayPublicCertPath(sandboxAlipayPublicCertPath); - certAlipayRequest.setAlipayPublicCertPath(alipayPublicCertPath); - //设置支付宝根证书路径 - //certAlipayRequest.setRootCertPath(sandboxRootPath); - certAlipayRequest.setRootCertPath(rootPath); - //构造client - AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest); - AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); - AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel(); - model.setOutBizNo(IdUtil.getSnowflakeNextIdStr()); - model.setTransAmount("0.9"); - model.setProductCode("TRANS_ACCOUNT_NO_PWD"); - /** 场景码,单笔无密转账到支付宝账户固定为:DIRECT_TRANSFER **/ - model.setBizScene("DIRECT_TRANSFER"); - /** 转账业务的标题,用于在支付宝用户的账单里显示 **/ - model.setOrderTitle("bnyer提现打款"); - Participant participant = new Participant(); - /** 参与方的唯一标识,收款支付宝账号或者支付宝吧账号唯一会员ID **/ - //participant.setIdentity(sandboxIdentify); - participant.setIdentity(identify); - /** 参与方的标识类型:ALIPAY_USER_ID 支付宝的会员ID ALIPAY_LOGON_ID手机号登录 **/ - participant.setIdentityType("ALIPAY_LOGON_ID"); - /** 参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填 **/ - //participant.setName(sandboxName); - participant.setName(name); - model.setPayeeInfo(participant); - /** 业务备注 **/ - model.setRemark("提现打款"); - request.setBizModel(model); - log.info("支付宝提现入参为:{}",JSON.toJSONString(request)); - AlipayFundTransUniTransferResponse response = null; - try { - response = alipayClient.certificateExecute(request); - } catch (AlipayApiException e) { - e.printStackTrace(); - } - /** 获取接口调用结果,如果调用失败,可根据返回错误信息到该文档寻找排查方案:https://opensupport.alipay.com/support/helpcenter/107 **/ - log.info("支付宝提现响应结果为:{}",response.getBody()); - return AjaxResult.success(); - } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/WithdrawLog.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/WithdrawLog.java index 422d295..9a75072 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/WithdrawLog.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/domain/WithdrawLog.java @@ -82,7 +82,7 @@ public class WithdrawLog extends BaseDomain { * 状态(0->待审核;1->提现中;2->提现成功;3->提现失败) */ @TableField(value = "status") - @ApiModelProperty(value="状态(0->待审核;1->提现中;2->提现成功;3->提现失败;4->审核拒绝)") + @ApiModelProperty(value="状态(0->待审核;1->提现异常;2->提现成功;3->提现失败;4->审核拒绝)") private String status; private static final long serialVersionUID = 1L; diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorAccountMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorAccountMapper.java index 7636a54..893e303 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorAccountMapper.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorAccountMapper.java @@ -18,4 +18,12 @@ public interface CreatorAccountMapper extends BaseMapper { * @return - */ List queryFrontList(@Param("creatorId") Long creatorId); + + /** + * 根据类型查询艺术家账户列表 + * @param creatorId 艺术家id + * @param type 类型 + * @return - + */ + CreatorAccountVo queryListByType(@Param("creatorId")Long creatorId,@Param("type") String type); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorMapper.java index 52b2b57..b294bb5 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorMapper.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorMapper.java @@ -38,9 +38,9 @@ public interface CreatorMapper extends BaseMapper { List queryPage(@Param("params") CreatorPageDto params); /** - * 新增艺术家并返回主键 - * @param creator 艺术家实体 + * 批量更新艺术家 + * @param list 艺术家列表 * @return - */ -// int insertCreator(@Param("creator") Creator creator); + int updateBatch(@Param("list") List list); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java index 5f0c514..9c2c655 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/mapper/CreatorProfitMapper.java @@ -136,4 +136,10 @@ public interface CreatorProfitMapper extends BaseMapper { * @return - */ List queryPage(@Param("params") CreatorProfitPageDto params); + + /** + * 查询除会员外所有已入账且已确认收益 + * @return - + */ + List queryConfirmList(); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorAccountService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorAccountService.java index b8ef5c1..7c8c9cb 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorAccountService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorAccountService.java @@ -52,6 +52,14 @@ public interface CreatorAccountService { */ List queryList(Long creatorId); + /** + * 根据指定类型查询艺术家账户列表 + * @param creatorId 艺术家id + * @param type 类型 + * @return - + */ + CreatorAccountVo queryListByType(Long creatorId,String type); + /** * 变更显示状态 * @param id 主键id diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java index 882f2fd..d9c86c2 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorProfitService.java @@ -162,4 +162,10 @@ public interface CreatorProfitService { * @return - */ List queryPreProfit(String platform,String appType,String type,String date); + + /** + * 查询除会员外所有已入账且已确认收益 + * @return - + */ + List queryConfirmList(); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java index 952b6e0..fc2b896 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/CreatorService.java @@ -91,9 +91,22 @@ public interface CreatorService { int reVerify(Long id); /** - * 小程序用户登录 + * 小程序艺术家登录 * @param param 前端传来的参数 * @return - */ Map login(WxLoginDto param); + + /** + * 查询所有审核通过的艺术家 + * @return - + */ + List queryPassList(); + + /** + * 批量更新艺术家 + * @param list 艺术家列表 + * @return - + */ + int batchUpdate(List list); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/ProfitVerifyOrderService.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/ProfitVerifyOrderService.java index f835081..dce73df 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/ProfitVerifyOrderService.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/ProfitVerifyOrderService.java @@ -51,4 +51,10 @@ public interface ProfitVerifyOrderService { * @return - */ boolean verify(ProfitVerifyOrderDto params); + + /** + * 收益转入钱包 + * @return - + */ + int transInfoWallet(); } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorAccountServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorAccountServiceImpl.java index 0a7a37e..05ac9e1 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorAccountServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorAccountServiceImpl.java @@ -122,6 +122,21 @@ public class CreatorAccountServiceImpl implements CreatorAccountService { return creatorAccountVos; } + @Override + public CreatorAccountVo queryListByType(Long creatorId, String type) { + CreatorAccountVo creatorAccount = creatorAccountMapper.queryListByType(creatorId, type); + if(creatorAccount != null){ + if(StringUtils.isNotBlank(creatorAccount.getBankNo())){ + creatorAccount.setBankNo(Sm4Util.sm4Decrypt(creatorAccount.getBankNo())); + } + if(StringUtils.isNotBlank(creatorAccount.getAliPayNo())){ + creatorAccount.setAliPayNo(Sm4Util.sm4Decrypt(creatorAccount.getAliPayNo())); + } + return creatorAccount; + } + return null; + } + @Override @Transactional(rollbackFor = Exception.class) public int changeStatus(Long id, String status) { diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java index 3fd019a..ff9aa0f 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorProfitServiceImpl.java @@ -3,8 +3,6 @@ package com.bnyer.img.service.impl; import cn.hutool.core.util.IdUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.bnyer.common.core.utils.StringUtils; -import com.bnyer.common.core.utils.uuid.IdUtils; import com.bnyer.common.redis.service.RedisService; import com.bnyer.img.domain.CreatorProfit; import com.bnyer.img.domain.InviteLog; @@ -14,7 +12,6 @@ import com.bnyer.img.dto.ProfitInOrEndDto; import com.bnyer.img.mapper.CreatorProfitMapper; import com.bnyer.img.mapper.InviteLogMapper; import com.bnyer.img.service.CreatorProfitService; -import com.bnyer.img.service.InviteLogService; import com.bnyer.img.service.TiktokImgService; import com.bnyer.img.vo.*; import lombok.extern.slf4j.Slf4j; @@ -284,4 +281,9 @@ public class CreatorProfitServiceImpl implements CreatorProfitService { public List queryPreProfit(String platform, String appType, String type, String date) { return creatorProfitMapper.queryPreProfit(platform, appType, type, date); } + + @Override + public List queryConfirmList() { + return creatorProfitMapper.queryConfirmList(); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java index 1de677a..bab27e3 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/CreatorServiceImpl.java @@ -322,4 +322,18 @@ public class CreatorServiceImpl implements CreatorService { throw new ServiceException(e.getMessage(), TiktokConstant.CALL_WECHAT_FAIL); } } + + @Override + public List queryPassList() { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Creator::getStatus, "1"); + wrapper.eq(Creator::getIsShow, "1"); + return creatorMapper.selectList(wrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public int batchUpdate(List list) { + return creatorMapper.updateBatch(list); + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java index df385a1..1b1f72e 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/ProfitVerifyOrderServiceImpl.java @@ -5,15 +5,19 @@ import com.bnyer.common.core.utils.StringUtils; import com.bnyer.common.redis.service.RedisService; import com.bnyer.img.constants.ProfitOrderConstant; import com.bnyer.img.constants.RedisKeyConstant; +import com.bnyer.img.domain.Creator; import com.bnyer.img.domain.CreatorProfit; import com.bnyer.img.domain.ProfitVerifyOrder; import com.bnyer.img.dto.ProfitVerifyOrderDto; import com.bnyer.img.dto.ProfitVerifyOrderInsertDto; import com.bnyer.img.dto.ProfitVerifyOrderPageDto; import com.bnyer.img.dto.ProfitVerifyOrderUpdateDto; +import com.bnyer.img.mapper.CreatorMapper; import com.bnyer.img.mapper.ProfitVerifyOrderMapper; import com.bnyer.img.service.CreatorProfitService; +import com.bnyer.img.service.CreatorService; import com.bnyer.img.service.ProfitVerifyOrderService; +import com.bnyer.img.vo.ConfirmProfitVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,6 +25,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -37,6 +42,12 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService { @Autowired private CreatorProfitService creatorProfitService; + @Autowired + private CreatorService creatorService; + + @Autowired + private CreatorMapper creatorMapper; + @Override @Transactional(rollbackFor = Exception.class) public int insert(ProfitVerifyOrderInsertDto params) { @@ -161,4 +172,28 @@ public class ProfitVerifyOrderServiceImpl implements ProfitVerifyOrderService { return false; } } + + @Override + @Transactional(rollbackFor = Exception.class) + public int transInfoWallet() { + //查询所有审核通过的艺术家 + List creators = creatorService.queryPassList(); + //查询审所有核状态为已到账,且已确认且类型不为会员的收益 + List confirmProfits = creatorProfitService.queryConfirmList(); + List list = new ArrayList<>(); + if(confirmProfits.size() > 0 && creators.size() > 0){ + for (ConfirmProfitVo confirmProfit : confirmProfits) { + for (Creator creator : creators) { + if(confirmProfit.getCreatorId().equals(creator.getId())){ + creator.getAmt().add(confirmProfit.getAmt()); + list.add(creator); + } + } + } + //TODO 批量更新艺术家 + return creatorService.batchUpdate(list); + }else{ + return 0; + } + } } diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WithdrawLogServiceImpl.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WithdrawLogServiceImpl.java index f0161a5..d83322c 100644 --- a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WithdrawLogServiceImpl.java +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/WithdrawLogServiceImpl.java @@ -1,12 +1,22 @@ package com.bnyer.img.service.impl; import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.CertAlipayRequest; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayFundTransUniTransferModel; +import com.alipay.api.domain.Participant; +import com.alipay.api.request.AlipayFundTransUniTransferRequest; +import com.alipay.api.response.AlipayFundTransUniTransferResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.bnyer.common.core.exception.ServiceException; import com.bnyer.common.core.utils.DesensitizedUtils; import com.bnyer.common.core.utils.Sm4Util; import com.bnyer.common.core.utils.StringUtils; +import com.bnyer.img.config.AlipayConfig; import com.bnyer.img.constants.TiktokConstant; import com.bnyer.img.constants.WithdrawConstant; import com.bnyer.img.domain.Creator; @@ -15,13 +25,16 @@ import com.bnyer.img.dto.VerifyDto; import com.bnyer.img.dto.WithdrawPageDto; import com.bnyer.img.mapper.CreatorMapper; import com.bnyer.img.mapper.WithdrawLogMapper; +import com.bnyer.img.service.CreatorAccountService; import com.bnyer.img.service.WithdrawLogService; +import com.bnyer.img.vo.CreatorAccountVo; import com.bnyer.img.vo.WithdrawLogVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -40,6 +53,13 @@ public class WithdrawLogServiceImpl implements WithdrawLogService { @Autowired private CreatorMapper creatorMapper; + @Autowired + private CreatorAccountService creatorAccountService; + + @Resource + private AlipayConfig alipayConfig; + + @Override @Transactional(rollbackFor = Exception.class) @@ -127,6 +147,69 @@ public class WithdrawLogServiceImpl implements WithdrawLogService { return withdrawLogMapper.queryFrontDetails(orderId); } + /** + * 支付宝打款到指定支付宝账号 + * @param orderId 订单id + * @param amt 金额 + * @param aliPayNo 艺术家支付宝账号 + * @param name 姓名 + * @return - + */ + private AlipayFundTransUniTransferResponse trans(String orderId,String aliPayNo,String name,BigDecimal amt) throws AlipayApiException { + //构造client + CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); + //设置网关地址 + certAlipayRequest.setServerUrl(alipayConfig.getGatewayUrl()); + //设置应用Id + certAlipayRequest.setAppId(alipayConfig.getAppId()); + //设置应用私钥 + certAlipayRequest.setPrivateKey(alipayConfig.getPrivateKey()); + //设置请求格式,固定值json + certAlipayRequest.setFormat("json"); + //设置字符集 + certAlipayRequest.setCharset("UTF8"); + //设置签名类型 + certAlipayRequest.setSignType("RSA2"); + //设置应用公钥证书路径 + certAlipayRequest.setCertPath(alipayConfig.getCertPath()); + //设置支付宝公钥证书路径 + certAlipayRequest.setAlipayPublicCertPath(alipayConfig.getAlipayPublicCertPath()); + //设置支付宝根证书路径 + certAlipayRequest.setRootCertPath(alipayConfig.getRootPath()); + //构造client + AlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest); + AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest(); + AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel(); + model.setOutBizNo(orderId); + model.setTransAmount(amt.toString()); + model.setProductCode("TRANS_ACCOUNT_NO_PWD"); + /** 场景码,单笔无密转账到支付宝账户固定为:DIRECT_TRANSFER **/ + model.setBizScene("DIRECT_TRANSFER"); + /** 转账业务的标题,用于在支付宝用户的账单里显示 **/ + model.setOrderTitle("次元hub提现打款"); + Participant participant = new Participant(); + /** 参与方的唯一标识,收款支付宝账号或者支付宝吧账号唯一会员ID **/ + participant.setIdentity(aliPayNo); + /** 参与方的标识类型:ALIPAY_USER_ID 支付宝的会员ID ALIPAY_LOGON_ID手机号登录 **/ + participant.setIdentityType("ALIPAY_LOGON_ID"); + /** 参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填 **/ + participant.setName(name); + model.setPayeeInfo(participant); + /** 业务备注 **/ + model.setRemark("提现打款"); + request.setBizModel(model); + log.info("支付宝提现入参为:{}", JSON.toJSONString(request)); + AlipayFundTransUniTransferResponse response = null; + try { + response = alipayClient.certificateExecute(request); + } catch (AlipayApiException e) { + throw e; + } + /** 获取接口调用结果,如果调用失败,可根据返回错误信息到该文档寻找排查方案:https://opensupport.alipay.com/support/helpcenter/107 **/ + log.info("支付宝提现响应结果为:{}",response.getBody()); + return response; + } + @Override @Transactional(rollbackFor = Exception.class) public int verify(VerifyDto params) { @@ -142,15 +225,43 @@ public class WithdrawLogServiceImpl implements WithdrawLogService { return withdrawLogMapper.updateById(withdrawLog); } //审核通过 - withdrawLog.setStatus("1"); + withdrawLog.setStatus("2"); withdrawLog.setUpdateTime(new Date()); - int update = withdrawLogMapper.updateById(withdrawLog); - //TODO //此处审核通过,调用支付宝企业付款到用户处方法 if(withdrawLog.getChannel().equals(WithdrawConstant.ALIPAY)){ //根据用户id查询其支付宝账户及其真实名称 + CreatorAccountVo creatorAccount = creatorAccountService.queryListByType(withdrawLog.getCreatorId(), "1"); + if(creatorAccount != null){ + try{ + AlipayFundTransUniTransferResponse body = this.trans(withdrawLog.getOrderId(), creatorAccount.getAliPayNo(), creatorAccount.getName(), withdrawLog.getAmt()); + if(!body.getCode().equals(WithdrawConstant.SUCCESS)){ + //提现失败 + withdrawLog.setStatus("3"); + withdrawLog.setReason(body.getSubMsg()); + log.error("艺术家【{}】订单【{}】提现失败!原因为:【{}】",withdrawLog.getCreatorId(),withdrawLog.getOrderId(),body.getSubMsg()); + return withdrawLogMapper.updateById(withdrawLog); + } + //扣除账户余额 + Creator creator = creatorMapper.selectById(withdrawLog.getCreatorId()); + BigDecimal amt = creator.getAmt().subtract(withdrawLog.getAmt()); + creator.setAmt(amt); + creatorMapper.updateById(creator); + //TODO 分布式锁 + }catch (AlipayApiException e){ + log.error("艺术家【{}】订单【{}】提现异常!原因为:【{}】",withdrawLog.getCreatorId(),withdrawLog.getOrderId(),e); + withdrawLog.setStatus("1"); + withdrawLog.setReason(e.getMessage()); + withdrawLogMapper.updateById(withdrawLog); + throw new ServiceException(e.getMessage()); + } + }else{ + throw new ServiceException("该艺术家未绑定支付宝账户!请手动设置!"); + } + }else if(withdrawLog.getChannel().equals(WithdrawConstant.BANK)){ + //TODO 转账到银行卡待开发 } - return update; + log.info("艺术家【{}】订单【{}】提现【{}】元成功!",withdrawLog.getCreatorId(),withdrawLog.getOrderId(),withdrawLog.getAmt()); + return withdrawLogMapper.updateById(withdrawLog); } @Override diff --git a/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/ConfirmProfitVo.java b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/ConfirmProfitVo.java new file mode 100644 index 0000000..35da440 --- /dev/null +++ b/bnyer-services/bnyer-img/src/main/java/com/bnyer/img/vo/ConfirmProfitVo.java @@ -0,0 +1,24 @@ +package com.bnyer.img.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.math.BigDecimal; + + +@Getter +@Setter +@ApiModel("已确认收益响应体") +public class ConfirmProfitVo implements Serializable { + + @ApiModelProperty(value="艺术家id") + private Long creatorId; + + @ApiModelProperty(value="收益") + private BigDecimal amt; + + private static final long serialVersionUID = 1L; +} diff --git a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorAccountMapper.xml b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorAccountMapper.xml index ca5bae0..d513914 100644 --- a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorAccountMapper.xml +++ b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorAccountMapper.xml @@ -28,4 +28,11 @@ from img_creator_account where is_show = '1' and creator_id = #{creatorId} + + diff --git a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorMapper.xml b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorMapper.xml index 775c9c6..0691fd0 100644 --- a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorMapper.xml +++ b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorMapper.xml @@ -86,4 +86,8 @@ order by create_time desc + + + + diff --git a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml index 38ca6fe..30c411f 100644 --- a/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml +++ b/bnyer-services/bnyer-img/src/main/resources/com/bnyer/img/mapper/CreatorProfitMapper.xml @@ -203,4 +203,12 @@ order by icp.create_time desc + +