Merge branch 'feature/community-center' into preview
commit
da5366bc6f
|
@ -0,0 +1,89 @@
|
|||
package com.mcwl.web.controller.myInvitation;
|
||||
|
||||
|
||||
import com.mcwl.common.core.domain.R;
|
||||
import com.mcwl.common.utils.SecurityUtils;
|
||||
import com.mcwl.myInvitation.domain.CommissionRatio;
|
||||
import com.mcwl.myInvitation.domain.Invitation;
|
||||
import com.mcwl.myInvitation.domain.dto.EarningsDisplayDto;
|
||||
import com.mcwl.myInvitation.domain.vo.CommissionRatioVo;
|
||||
import com.mcwl.myInvitation.domain.vo.EarningsDisplayVO;
|
||||
import com.mcwl.myInvitation.service.CommissionRatioService;
|
||||
import com.mcwl.myInvitation.service.InvitationService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.format.annotation.NumberFormat;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* 提成比例
|
||||
*/
|
||||
@RestController()
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/commissionRatio")
|
||||
@Api(tags = "我的邀请")
|
||||
public class CommissionRatioController {
|
||||
|
||||
private final CommissionRatioService commissionRatioService;
|
||||
|
||||
|
||||
/**
|
||||
* 提成列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
@ApiOperation(value = "提成列表")
|
||||
public R<List<CommissionRatioVo>> list() {
|
||||
List<CommissionRatioVo> list = commissionRatioService.ratioList();
|
||||
return R.ok(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 提成详情
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
@ApiOperation(value = "提成详情")
|
||||
public R<CommissionRatioVo> detail(@Valid @NotNull(message = "提成比例id不能为空") Long id) {
|
||||
CommissionRatioVo detail = commissionRatioService.detail(id);
|
||||
if (detail == null) {
|
||||
return R.fail("提成比例不存在");
|
||||
}
|
||||
return R.ok(detail);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改提成
|
||||
*/
|
||||
@GetMapping("/update")
|
||||
@ApiOperation(value = "修改提成")
|
||||
public R<CommissionRatioVo> update(@Valid
|
||||
@NotNull(message = "提成比例id不能为空")
|
||||
Long id,
|
||||
@Valid
|
||||
@NotNull(message = "提成比例不能为空")
|
||||
@NumberFormat
|
||||
Double ratio) {
|
||||
|
||||
if (ratio < 0 || ratio > 1) {
|
||||
return R.fail("提成比例必须在0-1之间");
|
||||
}
|
||||
|
||||
CommissionRatioVo detail = commissionRatioService.updateRatio(id, ratio);
|
||||
if (detail == null) {
|
||||
return R.fail("提成比例不存在");
|
||||
}
|
||||
|
||||
return R.ok(detail);
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -24,12 +24,12 @@ import static com.mcwl.common.core.domain.AjaxResult.success;
|
|||
|
||||
|
||||
/**
|
||||
* 邀请管理
|
||||
* 我的邀请
|
||||
*/
|
||||
@RestController()
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/invitation")
|
||||
@Api(tags = "邀请管理")
|
||||
@Api(tags = "我的邀请")
|
||||
public class InvitationController {
|
||||
|
||||
private final InvitationService invitationService;
|
||||
|
|
|
@ -122,9 +122,9 @@ public class AliPayController extends BaseController {
|
|||
@ApiOperation(value = "支付宝支付")
|
||||
@ResponseBody
|
||||
public R<PayVo> doPay(@Valid
|
||||
@RequestBody
|
||||
OrderTradeDto orderTradeDto,
|
||||
HttpServletResponse response) throws Exception {
|
||||
@RequestBody
|
||||
OrderTradeDto orderTradeDto,
|
||||
HttpServletResponse response) throws Exception {
|
||||
PayVo payVo = null;
|
||||
|
||||
String type = orderTradeDto.getType();
|
||||
|
@ -160,14 +160,13 @@ public class AliPayController extends BaseController {
|
|||
@ResponseBody
|
||||
@ApiOperation(value = "提现")
|
||||
public R<String> fetch(@Valid
|
||||
@NotNull(message = "提现金额不能为空")
|
||||
Double amount) throws Exception {
|
||||
@NotNull(message = "提现金额不能为空")
|
||||
Double amount) throws Exception {
|
||||
if (amount < 0.1) {
|
||||
return R.fail("提现金额最小为0.1");
|
||||
}
|
||||
String outBizNo = UUID.fastUUID().toString(true);
|
||||
|
||||
return aliPayService.fetch(outBizNo, amount.toString());
|
||||
return aliPayService.fetch(amount.toString());
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ import com.mcwl.common.utils.SecurityUtils;
|
|||
import com.mcwl.pay.domain.OrderTrade;
|
||||
import com.mcwl.pay.service.AliPayService;
|
||||
import com.mcwl.pay.service.OrderTradeService;
|
||||
import com.mcwl.resource.domain.dto.ProductRes;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -37,7 +38,7 @@ import java.util.Map;
|
|||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/web/pay")
|
||||
@RequestMapping("/order")
|
||||
@Validated
|
||||
@Api(tags = "订单模块")
|
||||
public class OrderTradeController extends BaseController {
|
||||
|
@ -54,6 +55,18 @@ public class OrderTradeController extends BaseController {
|
|||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
|
||||
/**
|
||||
* 购买产品
|
||||
*/
|
||||
@PostMapping("/buy")
|
||||
@ApiOperation(value = "购买产品")
|
||||
public R<Object> buy(@Valid @RequestBody ProductRes productRes) throws Exception {
|
||||
orderTradeService.productHandler(productRes);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询列表
|
||||
*/
|
||||
|
@ -84,9 +97,9 @@ public class OrderTradeController extends BaseController {
|
|||
/**
|
||||
* 修改
|
||||
*/
|
||||
@PostMapping("/upda")
|
||||
@PostMapping("/update")
|
||||
@ApiOperation(value = "修改订单")
|
||||
public R<Object> upda(@RequestBody OrderTrade orderTrade) {
|
||||
public R<Object> update(@RequestBody OrderTrade orderTrade) {
|
||||
// 获取当前用户
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
if (userId == null) {
|
||||
|
|
|
@ -48,7 +48,7 @@ public class ModelImageCommentController {
|
|||
* 图片评论点赞/取消
|
||||
*/
|
||||
@ApiOperation(value = "图片评论点赞/取消")
|
||||
@RepeatSubmit
|
||||
@RepeatSubmit(interval = 1000)
|
||||
@GetMapping("/commentLike")
|
||||
public R<Object> commentLike(@Valid
|
||||
@NotNull(message = "评论id不能为空")
|
||||
|
|
|
@ -126,8 +126,10 @@ mall:
|
|||
appId: 9021000143684202
|
||||
# 沙箱应用私钥
|
||||
privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyhwMKnP7oBQ9qKhxke9AXN7ZNcniMnJFcWWFPfs3W6QqKBGFGFYQFyqfmnf2gM4nYtEbvit0CcmSrdniR3aZVb6s0A/KWqD5ejf+zjdnn5XH4GYsm/DXZoBqdAMWQUaQcVB1lC9az1rn13n9UHBJ+s+UAWtFjXMDd78dsE7enU3RjBffyvl/A+r6c0jnSHDNttSXyamxGX8ng8hK5XdCAusOfYpWnLY90sjlyz98snIfVPqAfD3KTP88gRF1KfWZniwMCR/OjCp6jm5d5dvOj8xyk7R1LfZ0CH/fXOcvpCe9JISS9DyzEzW5XpsnO5p8Mo8wFL6TKVBng+Ss0Tr0NAgMBAAECggEAPnaCl+oKPf/XPtvxBy9SxWzWug49I2V8boVPSNMjDfiHmXai2jSY9rXLPSM2JCEkL9ATqag6X6rKkjtnQBH/KpFho1dmP1QqTkb8mkQdY8ehsp6tUzyXUsdzyE8G0NHfy5Gan0ofGtkcQ2xPvIv95JromtErxcokKQLGEYhsj3xL+KVsUh5YedX/6sAiJ1KS5Zs82eh6bbCvUzuSPc4hjyfLSux5AnGBPnwEzWWJiA5z9zK17i8Cb7FnEeRmNvJw7VsXaCMFquZ6+bzlKdSuUqzqNhHMX8AivePTjj7pPHFW3FTh64E20yzl7CIwkScToXT3H7oaHRA1xGySmGNBuQKBgQDXFcg0b8L0A/Zril+4IwfckH1gpUbqlplzfozM/a/0rojQEdS+X7g4ypdPc47cwoLJx08/84L8ZPj49CImoGNdj5K9B2fY/E10SIJJqN5lb9NI4KINvGGM58NDSAl+GjT5mljkPI8jzQ1ACcy9DGV/KVScGHUWUpeLOK22AEcfWwKBgQDUfPFBHc2Bkuv3bRoNT+fnChMw5CI65wD74vR5GKyurh50DB3RZXwhRsAFd9NowINm9B2KAR0IrB+vh3EwfJaWDauh3ykZZtrAphSa11dJXvtathHTuQmXalZv5brh5mHie87yoxMn7vqDi0bwkNlb/b1wwokwc0oc3NSoNsFptwKBgCJhjPs00kkHSSCvodVhZCRRxHjqcoeVQzo/BGrQMow+SghYkVVNH7mUSNOeeTu4rAdtILHsTwfhbBr/i2X5RWjzRlWJFYSN8COiY5E6uTIlyfRgVAc2EbHgakoa/cl2jvlHPuZc99SVNoUCDAQ8Mw08ohXBoxXKZgcPLFVnffb5AoGBAJW5cDmk6WCrCRAwVVIaAtsek0U5CxGcImpakk8d3te7IwQ8YWph6yR7eOSheVrvg+ewjXvnqvCocC877brvnyAeg9isqYYXnn5uyEgPApdVkSFq94bLdIG30S5JnvR8ZG61NK5t0BqsXuL/6b2rIy2Zzrm8qfR02D0cMdBRvNljAoGBAMJG7/TqodrYPYyOZ4/IbbhAitBHWpHYJHSENnuxbQGAQuCt52Jp3eULR2r7uk3dUDuE8mB2QAEStuV/orfdxxRxJIYbEynJFGCa9O5LTevbM4MoNRfLCPPmFK5PJivlJcdrCyQKEmGSLLrVdb3H/Wzu0/4K/ZhwyrtBz4MRkuwD
|
||||
# 沙箱支付宝公钥
|
||||
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgfv3CE8I87I5HHcMtK1RrPQZzLqYlXxRa96lIYkEyFsxdMcMSwnNJJf/mceZhMQnXQDkuEYTZPO/DJbmiZkBWbRZNfIJur5Af/wKZEmHahtEWlrdJdJ6fh7j11eeqbXBfo55H1dxPEQA/obfe85WrqoE0fa06XElgq5/RwsSKjZpnorbO8mMnDaRwxIOoRVHQlHgfkMtTHfP+Zw8Kv0tyJdWLxVDgtg0OoO8VnrDNGBwsxJDOvLjZBbp9NX3wiWQpfh4OBkN1KKfIA9yfBhS6N0bnWfr428Boz/qNhycdrG/MYGQDiG8hVt177fKvTVXRf/kdSIz3izN1GnzOUkadQIDAQAB
|
||||
# 沙箱支付宝公钥证书路径
|
||||
alipayCertPath: cert/alipay/alipayCertPublicKey_RSA2.crt
|
||||
# 沙箱支付宝根证书路径
|
||||
alipayRootCertPath: cert/alipay/alipayRootCert.crt
|
||||
notifyUrl: https://7d014da8.r27.cpolar.top/ali/pay/notify
|
||||
# 沙箱支付宝网关
|
||||
gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
|
||||
|
@ -140,11 +142,14 @@ mall:
|
|||
# gatewayHost: openapi-sandbox.dl.alipaydev.com
|
||||
# signType: RSA2
|
||||
# # 线上应用id
|
||||
# appId: 2021005114616085
|
||||
# appId: 2021005119630093
|
||||
# # 线上应用私钥
|
||||
# privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCMsTikcbGWE/E9bzaVCUvtqlrzzOo26zYl1mOVRPjJTMRi7VJrOGRpanvG9d0tCh7D5HEBO6hkd5UxEXT0/HOBRgHx7GnvUIGyAstyL8galRWpsDrRD6NVEVMB6l7mntJzfF1GKsHME2ITPp8zv7IXGGHajlA7NWO4DK6dbVL9VwdcZI1HC5nvAVm4gRsfg3uFa2i6aG+M4iKK4F94HEifFhAbi3PNDt+AF7GeE+/IWY1raNupWhoEDRLL54p9UqVhjF+cKvKfspthfo5cAsk07vxB5QGBSOOM7/Sd4gP/9tXbhJmCjQT0EWShgyHHW95qaCBDRFfEu4fyehikBaFrAgMBAAECggEAVy+3/0gpmexv0fdqZr9lGzo3tN/mwPPQEXCjM6yTVAPLq9aP/bvrldwUKn7QeonL+O9HDFGRD/l/LfI4fV04owLkT6yHFXPZe5v5waBUrAx5aTe5qza6rAvZWdWIy/feSQznrITwpevZGj3zYJlJ3sAQW+VXWOnECxlo2EwYYr+xm6TPacjx3aP/tp/7wp8cDit3gJpoMPG8sSBoDNBgF4vHAkF9GOf4JpHXQyVvRM7hv/jfH2h0K0tae/FxCBwXnjHEiV0EJyRYhq+NRETU2Srd+gaJejz/fpIZgbU5C5hFYKzqhHDilIvvZJxsSsUQWDI/htxCBZW4IgwJyYOhUQKBgQDCKSg47AX9NJjZgJlEG9fbHNCEIwl3hQAWXGHup+S9V9UVx90KmkfQubUrdr4ToszsHsDINIALd9z6HgJvhLBbPQ7nvts+go6THZU38SPqxHdoyqD6g+qDVDYzZHFPWInNw1X3/AKERkOPl5Ifvn/sjy++X4I824Vgu137CfffSQKBgQC5gIZ7e7pe6DJr98oSpARjBjsbyI6WB5S1CBsHVLL78IN4CqwTkgpaOsO8c4OOlo5FkSU3gPtxOpshKWq2Xy1IBDh3cpj70GMs8DINzA/lYR6/Y366Spavkk5IBHsVJ2bflTVPtIWUXjbL+jcyaXgZIZTUbZb4wPwgOFAM5oyXEwKBgDxwtW2qw16D7gTfDFbwV+yEdsB7a6oCA/nx/iZdq03ptpJWKg/v4OUvuh7yks7oAeSK2jY4aZeoU2ikyNtQMdnlEuu/NN6ro5hWQCou7aBaUlWTpjL1t530K/8piEBL7nHYGb3dfCcS/FsJstog4g+QrysS7iblqwpmqSXJf5jJAoGBAKmzxdPj3h0DCVWyq1+gQw8gXSTOtnrUVpvC3Y84UkGfx3YjNUb2HJhtGDIn7xub6m4EGesMCXuNpOuSizhqG++9RLcp1IDSJFixKOlsXMJ4tftbF01v/SiDjS/fQYaZtEgopUvUlzujcTfsIWDyEdfT2+b2lt3dFwqW2czjgYyXAoGASBOqGf21NSwB+RO/gPWuA/EeL8jI9SBc3V6VFvpkp8EH5+yzwXumTD9TTwOvaXpxMgjraRkCmNDwZmMpCU3ZHg9Pj+37bbIXJOBt8f1COTWf2uPp0GqVqSeWDOrJ/MQ6Mqmou/ifXvkhgExmo5ustu4v5WNE0WsYiGeVBMRejDE=
|
||||
# privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQuhRU5iHoabfzJS40A+moMKzb5rmi5XbL59K98CW65Oq/rnzQnj6sCYggIXOLCLKUykZ1XIVa+4V7bGFkMDF0236ncPumnVY/tfCSebLyKl+up1mGeH4mAR6ily7nXAhRnXL+A0015bpCa5FCg2ReN68MEmquB/mHfeLqJfRupwzDWnIWxYSKkFCJ0i47KTFYhM93LHHQ8GrZNNaeiJ6q59MruQI83z0HCxN/DzK4Z2rBWGilwPuYcSEa0STPXYhz8XMXUX/Mlp7dd5zyWeNaxkNRWlhKHvhLVPGvteaEcchs476DIWLCRVXEC1372wMKNrKblzRp7Wi5+l+W14k5AgMBAAECggEAHahkPjmivTPc5FC8NSCQI01GPxH6/Ky1OXfaMd4ifTgn+vvQzBeBlFOnt53jRZyUq/T/l1FMaqacZfyBwLw3hlDslXeLuksHv6qTEBEsYH/ad7oHmIzcnQEhvAPrMrIjakYvqGoYynC3SKEudUjjqoMSthCYF+2+bsuXUpBQlNQLqcJ03U+YhfLswwVVujKvAujoLRqDAWeaa0k0y/1Ua4fr5GJq5M+P8TTBRgZlSK5A7Ee6yxMUncZ9W3lTqZtyG0OQLbz9gkr0c63KPisigaOx9eKlCPWFWUWo+zGvQMVijHDTeoJ3dqNmsPtiIE3rDt8anx4a1R7YK6MQ520hAQKBgQDPFMNl4fRmLSOLNShJm/0mBMoIjPmS3+tPBtCiG4oH9F8vYMJWDA1Im0FdgRa2HlCv6hpiVvvQt824RaUYa7XR6aefXKVEWddHvl3utnghMohjK8o8fTmIxADtU5Q2OlWmPdp1v7yDg8yE5P1GlY+AZ3oggxXOIRVtQrNeL7E3iQKBgQCy6nEaUQUCDDts4o7Pn+N402g3/T9Vz/5JtKmDI01EndK5l/yE8CdgGwdiwN1k3la/Nv8P5kaaX2qVcCGoOIQmMNGOxuNfkKCi+bJKdxmFOI4E3iVYT2H6x27QJwNB6bik1i6b2OWT7ckxeB6xMjefNp1u8Qif+vab60OQZSqoMQKBgESRF3Hwsz/xykcZvtFAuT2RcGQMacbcJcnw87v5ambf33SMkUx0iSF1ZttTFvYOa6ET3tCZBKBDe/Z7+QJxB68NstbtkjtjlAjJW8ji2jwDw20y3q/QtvA2Fih++CBMiHeXG3LJnd3eEiYevE5Wz0ExAhspzFqIUdPvtfyFxiQhAoGBAKgc+iGMN3RxIfVx/FbDGe6SVr8lSrnLMlj3VMBQD26GDVcupKwVLCp1uz7jkiQRdtk9R/UcnwK23WOFdVqnoCRygrXx0/wb3ZTFou2tc2Fmfqu8QML19E67zjfwMHNitYjNaAYwi6ewKvg8sjo1wWXs34k7GquYGNjw+w9Wv/pBAoGAUlVHfZ4RncAiiH/x3EDgqmmVikFpLoM2xXxM16nplrjdBE6IzkpgWb/x2ZI6JCMDyoV2kvF6owW2+QEQ81MrHQMtBRpAvd8nI03gXA5VF3uwp4UjfGpoIAGDBrqQv9DM8vx6C6VJNTT5esZWZSw/+PZ4D19l0/n7gICGx3ugw0Q=
|
||||
# # 线上支付宝公钥证书路径
|
||||
# alipayCertPath: cert/alipay/alipayCertPublicKey_RSA2.crt
|
||||
# # 线上支付宝根证书路径
|
||||
# alipayRootCertPath: cert/alipay/alipayRootCert.crt
|
||||
# # 线上支付宝公钥
|
||||
# publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApcX0/YWkzEYO4Lki2ViFzezoIYq1AgOjc4lES59hmrJLJGWenCk/88M4SqKRj/6xPpsiMqe+GAzKRqZoCJvV1Cp5sqRaR/e+QyAqW8wDZbEKvnCK3lKB9W/8lntwzB1zGRDD9Tk1v5hcdXbCJ/hrg8REwlTSespeVD1+nnlKZbj14zvgmYM1SupYzmDw3SWArkf/OQDo6dnJGQkBOv92dDA2pzatUVkdKccctd35MEM7N88gjlHKcUJ1d95H3vij/zy4luV4ylHnxho7ZkZK4vh0v40Oqw/DUdpkbju4dcuBUXGrup+8/7A7ZSdqkf2XDvPW9PxGotQ4YvmCDt6izwIDAQAB
|
||||
# notifyUrl: https://253d7236.r27.cpolar.top/ali/pay/notify
|
||||
# # 线上支付宝网关
|
||||
# gatewayUrl: https://openapi.alipay.com/gateway.do
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIDnTCCAoWgAwIBAgIQICUCFPTaqv/ZUGkFjQNMjTANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
|
||||
BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
|
||||
aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
|
||||
YXNzIDIgUjEwHhcNMjUwMjE0MDkxMDAxWhcNMzAwMjEzMDkxMDAxWjB+MQswCQYDVQQGEwJDTjEZ
|
||||
MBcGA1UECgwQMjA4ODk0Mjk4OTQ4MjU3OTEPMA0GA1UECwwGQWxpcGF5MUMwQQYDVQQDDDrmlK/k
|
||||
u5jlrp0o5Lit5Zu9Kee9kee7nOaKgOacr+aciemZkOWFrOWPuC0yMDg4OTQyOTg5NDgyNTc5MIIB
|
||||
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwa7R9uTM3VJpWZDWiNSUw23AoIlSZ4Y6lgaA
|
||||
xuhKYmUx8P2yCHJ8xEyASRHUggrYoEvkbuLqHPpNPmJsMaqnbuP4uwfkxO9l/D2bnPRFd2e4eQhX
|
||||
L7YHOLRWgHhMBfkMYMq9A8kJHDa9drVbxvp1zbvxakJvEuJ9TVCvHdpsTGbMxBn5PP7qTQYoQAQj
|
||||
FYF6j6eLmrskFgqYGmDV2dbf/tFLaQZSuhut47pb3glvi7g0ECMy+S3v76pZk5+FP42EkBFFsLH1
|
||||
lTREgO1PTSRAEiZkSGRLtmf3u6EMb42pE6EUF4pHHaACEQ3ZRuYK8Mo00A0FmwAoKil2MxkzAX5Z
|
||||
KQIDAQABoxIwEDAOBgNVHQ8BAf8EBAMCA/gwDQYJKoZIhvcNAQELBQADggEBAGsnIGoHjk4+YUJJ
|
||||
nLMggzUmAuKt1rHcUN+3SfsNmnGqwluy4cm4emxj2qwcTzEEQvrES33difh4Ubtf2XyS1MFLkxhG
|
||||
WonCuEUjZqKgWz66gCG3l0l7HRy2VJaaaVlC49yJMOsuUNtAFjh+Pu5XVb7ff8Adf3YGNeFC4Tde
|
||||
gkBgDO8RbPSfdc7bP0Fq+TPj5nMCu64KzBz4RP5da7Q/mSFI2PCvtEquhq/eeDezfHUAz2ehC/bA
|
||||
dSRHytgzrGktk+BIPtEsoYG9zIHBNwA8JCr9Z5q2eauhYvIE1sJVO151Dph1u4LE1voQQ4qr4t6v
|
||||
gU2IoL6w5LvdWDSQCIrPOa4=
|
||||
-----END CERTIFICATE-----
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIE4jCCAsqgAwIBAgIIYsSr5bKAMl8wDQYJKoZIhvcNAQELBQAwejELMAkGA1UEBhMCQ04xFjAU
|
||||
BgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEw
|
||||
LwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMy
|
||||
MjE0MzQxNVoXDTM3MTEyNjE0MzQxNVowgYIxCzAJBgNVBAYTAkNOMRYwFAYDVQQKDA1BbnQgRmlu
|
||||
YW5jaWFsMSAwHgYDVQQLDBdDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTE5MDcGA1UEAwwwQW50IEZp
|
||||
bmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSBDbGFzcyAyIFIxMIIBIjANBgkqhkiG9w0B
|
||||
AQEFAAOCAQ8AMIIBCgKCAQEAsLMfYaoRoPRbmDcAfXPCmKf43pWRN5yTXa/KJWO0l+mrgQvs89bA
|
||||
NEvbDUxlkGwycwtwi5DgBuBgVhLliXu+R9CYgr2dXs8D8Hx/gsggDcyGPLmVrDOnL+dyeauheARZ
|
||||
fA3du60fwEwwbGcVIpIxPa/4n3IS/ElxQa6DNgqxh8J9Xwh7qMGl0JK9+bALuxf7B541Gr4p0WEN
|
||||
G8fhgjBV4w4ut9eQLOoa1eddOUSZcy46Z7allwowwgt7b5VFfx/P1iKJ3LzBMgkCK7GZ2kiLrL7R
|
||||
iqV+h482J7hkJD+ardoc6LnrHO/hIZymDxok+VH9fVeUdQa29IZKrIDVj65THQIDAQABo2MwYTAf
|
||||
BgNVHSMEGDAWgBRfdLQEwE8HWurlsdsio4dBspzhATAdBgNVHQ4EFgQUSqHkYINtUSAtDPnS8Xoy
|
||||
oP9p7qEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggIB
|
||||
AIQ8TzFy4bVIVb8+WhHKCkKNPcJe2EZuIcqvRoi727lZTJOfYy/JzLtckyZYfEI8J0lasZ29wkTt
|
||||
a1IjSo+a6XdhudU4ONVBrL70U8Kzntplw/6TBNbLFpp7taRALjUgbCOk4EoBMbeCL0GiYYsTS0mw
|
||||
7xdySzmGQku4GTyqutIGPQwKxSj9iSFw1FCZqr4VP4tyXzMUgc52SzagA6i7AyLedd3tbS6lnR5B
|
||||
L+W9Kx9hwT8L7WANAxQzv/jGldeuSLN8bsTxlOYlsdjmIGu/C9OWblPYGpjQQIRyvs4Cc/mNhrh+
|
||||
14EQgwuemIIFDLOgcD+iISoN8CqegelNcJndFw1PDN6LkVoiHz9p7jzsge8RKay/QW6C03KNDpWZ
|
||||
EUCgCUdfHfo8xKeR+LL1cfn24HKJmZt8L/aeRZwZ1jwePXFRVtiXELvgJuM/tJDIFj2KD337iV64
|
||||
fWcKQ/ydDVGqfDZAdcU4hQdsrPWENwPTQPfVPq2NNLMyIH9+WKx9Ed6/WzeZmIy5ZWpX1TtTolo6
|
||||
OJXQFeItMAjHxW/ZSZTok5IS3FuRhExturaInnzjYpx50a6kS34c5+c8hYq7sAtZ/CNLZmBnBCFD
|
||||
aMQqT8xFZJ5uolUaSeXxg7JFY1QsYp5RKvj4SjFwCGKJ2+hPPe9UyyltxOidNtxjaknOCeBHytOr
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,88 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQG
|
||||
EwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQw
|
||||
MzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVO
|
||||
UkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE
|
||||
MPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRT
|
||||
V7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5Yti
|
||||
W/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZ
|
||||
MxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b
|
||||
53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xI
|
||||
pDoiVhsLwg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF0zCCA7ugAwIBAgIIH8+hjWpIDREwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE
|
||||
BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmlj
|
||||
YXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmlj
|
||||
YXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMTEzNDg0MFoXDTM4MDIyODEzNDg0
|
||||
MFowejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNV
|
||||
BAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5j
|
||||
aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMIICIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAg8AMIICCgKCAgEAtytTRcBNuur5h8xuxnlKJetT65cHGemGi8oD+beHFPTk
|
||||
rUTlFt9Xn7fAVGo6QSsPb9uGLpUFGEdGmbsQ2q9cV4P89qkH04VzIPwT7AywJdt2
|
||||
xAvMs+MgHFJzOYfL1QkdOOVO7NwKxH8IvlQgFabWomWk2Ei9WfUyxFjVO1LVh0Bp
|
||||
dRBeWLMkdudx0tl3+21t1apnReFNQ5nfX29xeSxIhesaMHDZFViO/DXDNW2BcTs6
|
||||
vSWKyJ4YIIIzStumD8K1xMsoaZBMDxg4itjWFaKRgNuPiIn4kjDY3kC66Sl/6yTl
|
||||
YUz8AybbEsICZzssdZh7jcNb1VRfk79lgAprm/Ktl+mgrU1gaMGP1OE25JCbqli1
|
||||
Pbw/BpPynyP9+XulE+2mxFwTYhKAwpDIDKuYsFUXuo8t261pCovI1CXFzAQM2w7H
|
||||
DtA2nOXSW6q0jGDJ5+WauH+K8ZSvA6x4sFo4u0KNCx0ROTBpLif6GTngqo3sj+98
|
||||
SZiMNLFMQoQkjkdN5Q5g9N6CFZPVZ6QpO0JcIc7S1le/g9z5iBKnifrKxy0TQjtG
|
||||
PsDwc8ubPnRm/F82RReCoyNyx63indpgFfhN7+KxUIQ9cOwwTvemmor0A+ZQamRe
|
||||
9LMuiEfEaWUDK+6O0Gl8lO571uI5onYdN1VIgOmwFbe+D8TcuzVjIZ/zvHrAGUcC
|
||||
AwEAAaNdMFswCwYDVR0PBAQDAgEGMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFF90
|
||||
tATATwda6uWx2yKjh0GynOEBMB8GA1UdIwQYMBaAFF90tATATwda6uWx2yKjh0Gy
|
||||
nOEBMA0GCSqGSIb3DQEBCwUAA4ICAQCVYaOtqOLIpsrEikE5lb+UARNSFJg6tpkf
|
||||
tJ2U8QF/DejemEHx5IClQu6ajxjtu0Aie4/3UnIXop8nH/Q57l+Wyt9T7N2WPiNq
|
||||
JSlYKYbJpPF8LXbuKYG3BTFTdOVFIeRe2NUyYh/xs6bXGr4WKTXb3qBmzR02FSy3
|
||||
IODQw5Q6zpXj8prYqFHYsOvGCEc1CwJaSaYwRhTkFedJUxiyhyB5GQwoFfExCVHW
|
||||
05ZFCAVYFldCJvUzfzrWubN6wX0DD2dwultgmldOn/W/n8at52mpPNvIdbZb2F41
|
||||
T0YZeoWnCJrYXjq/32oc1cmifIHqySnyMnavi75DxPCdZsCOpSAT4j4lAQRGsfgI
|
||||
kkLPGQieMfNNkMCKh7qjwdXAVtdqhf0RVtFILH3OyEodlk1HYXqX5iE5wlaKzDop
|
||||
PKwf2Q3BErq1xChYGGVS+dEvyXc/2nIBlt7uLWKp4XFjqekKbaGaLJdjYP5b2s7N
|
||||
1dM0MXQ/f8XoXKBkJNzEiM3hfsU6DOREgMc1DIsFKxfuMwX3EkVQM1If8ghb6x5Y
|
||||
jXayv+NLbidOSzk4vl5QwngO/JYFMkoc6i9LNwEaEtR9PhnrdubxmrtM+RjfBm02
|
||||
77q3dSWFESFQ4QxYWew4pHE0DpWbWy/iMIKQ6UZ5RLvB8GEcgt8ON7BBJeMc+Dyi
|
||||
kT9qhqn+lw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICiDCCAgygAwIBAgIIQX76UsB/30owDAYIKoZIzj0EAwMFADB6MQswCQYDVQQG
|
||||
EwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UECwwXQ2VydGlmaWNh
|
||||
dGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNpYWwgQ2VydGlmaWNh
|
||||
dGlvbiBBdXRob3JpdHkgRTEwHhcNMTkwNDI4MTYyMDQ0WhcNNDkwNDIwMTYyMDQ0
|
||||
WjB6MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UE
|
||||
CwwXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNp
|
||||
YWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRTEwdjAQBgcqhkjOPQIBBgUrgQQA
|
||||
IgNiAASCCRa94QI0vR5Up9Yr9HEupz6hSoyjySYqo7v837KnmjveUIUNiuC9pWAU
|
||||
WP3jwLX3HkzeiNdeg22a0IZPoSUCpasufiLAnfXh6NInLiWBrjLJXDSGaY7vaokt
|
||||
rpZvAdmjXTBbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRZ
|
||||
4ZTgDpksHL2qcpkFkxD2zVd16TAfBgNVHSMEGDAWgBRZ4ZTgDpksHL2qcpkFkxD2
|
||||
zVd16TAMBggqhkjOPQQDAwUAA2gAMGUCMQD4IoqT2hTUn0jt7oXLdMJ8q4vLp6sg
|
||||
wHfPiOr9gxreb+e6Oidwd2LDnC4OUqCWiF8CMAzwKs4SnDJYcMLf2vpkbuVE4dTH
|
||||
Rglz+HGcTLWsFs4KxLsq7MuU+vJTBUeDJeDjdA==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDxTCCAq2gAwIBAgIUEMdk6dVgOEIS2cCP0Q43P90Ps5YwDQYJKoZIhvcNAQEF
|
||||
BQAwajELMAkGA1UEBhMCQ04xEzARBgNVBAoMCmlUcnVzQ2hpbmExHDAaBgNVBAsM
|
||||
E0NoaW5hIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMMH2lUcnVzQ2hpbmEgQ2xhc3Mg
|
||||
MiBSb290IENBIC0gRzMwHhcNMTMwNDE4MDkzNjU2WhcNMzMwNDE4MDkzNjU2WjBq
|
||||
MQswCQYDVQQGEwJDTjETMBEGA1UECgwKaVRydXNDaGluYTEcMBoGA1UECwwTQ2hp
|
||||
bmEgVHJ1c3QgTmV0d29yazEoMCYGA1UEAwwfaVRydXNDaGluYSBDbGFzcyAyIFJv
|
||||
b3QgQ0EgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPPShpV
|
||||
nJbMqqCw6Bz1kehnoPst9pkr0V9idOwU2oyS47/HjJXk9Rd5a9xfwkPO88trUpz5
|
||||
4GmmwspDXjVFu9L0eFaRuH3KMha1Ak01citbF7cQLJlS7XI+tpkTGHEY5pt3EsQg
|
||||
wykfZl/A1jrnSkspMS997r2Gim54cwz+mTMgDRhZsKK/lbOeBPpWtcFizjXYCqhw
|
||||
WktvQfZBYi6o4sHCshnOswi4yV1p+LuFcQ2ciYdWvULh1eZhLxHbGXyznYHi0dGN
|
||||
z+I9H8aXxqAQfHVhbdHNzi77hCxFjOy+hHrGsyzjrd2swVQ2iUWP8BfEQqGLqM1g
|
||||
KgWKYfcTGdbPB1MCAwEAAaNjMGEwHQYDVR0OBBYEFG/oAMxTVe7y0+408CTAK8hA
|
||||
uTyRMB8GA1UdIwQYMBaAFG/oAMxTVe7y0+408CTAK8hAuTyRMA8GA1UdEwEB/wQF
|
||||
MAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBLnUTfW7hp
|
||||
emMbuUGCk7RBswzOT83bDM6824EkUnf+X0iKS95SUNGeeSWK2o/3ALJo5hi7GZr3
|
||||
U8eLaWAcYizfO99UXMRBPw5PRR+gXGEronGUugLpxsjuynoLQu8GQAeysSXKbN1I
|
||||
UugDo9u8igJORYA+5ms0s5sCUySqbQ2R5z/GoceyI9LdxIVa1RjVX8pYOj8JFwtn
|
||||
DJN3ftSFvNMYwRuILKuqUYSHc2GPYiHVflDh5nDymCMOQFcFG3WsEuB+EYQPFgIU
|
||||
1DHmdZcz7Llx8UOZXX2JupWCYzK1XhJb+r4hK5ncf/w8qGtYlmyJpxk3hr1TfUJX
|
||||
Yf4Zr0fJsGuv
|
||||
-----END CERTIFICATE-----
|
|
@ -0,0 +1,23 @@
|
|||
-----BEGIN CERTIFICATE-----
|
||||
MIIEgjCCA2qgAwIBAgIQICUCFE7HTf+7v9yXtoeyLjANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UE
|
||||
BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmljYXRpb24gQXV0
|
||||
aG9yaXR5MTkwNwYDVQQDDDBBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IENs
|
||||
YXNzIDEgUjEwHhcNMjUwMjE0MDkxMDAwWhcNMzAwMjEzMDkxMDAwWjBKMQswCQYDVQQGEwJDTjEP
|
||||
MA0GA1UECgwG5Ya35paMMQ8wDQYDVQQLDAZBbGlwYXkxGTAXBgNVBAMMEDIwODg5NDI5ODk0ODI1
|
||||
NzkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCQuhRU5iHoabfzJS40A+moMKzb5rmi
|
||||
5XbL59K98CW65Oq/rnzQnj6sCYggIXOLCLKUykZ1XIVa+4V7bGFkMDF0236ncPumnVY/tfCSebLy
|
||||
Kl+up1mGeH4mAR6ily7nXAhRnXL+A0015bpCa5FCg2ReN68MEmquB/mHfeLqJfRupwzDWnIWxYSK
|
||||
kFCJ0i47KTFYhM93LHHQ8GrZNNaeiJ6q59MruQI83z0HCxN/DzK4Z2rBWGilwPuYcSEa0STPXYhz
|
||||
8XMXUX/Mlp7dd5zyWeNaxkNRWlhKHvhLVPGvteaEcchs476DIWLCRVXEC1372wMKNrKblzRp7Wi5
|
||||
+l+W14k5AgMBAAGjggEpMIIBJTAfBgNVHSMEGDAWgBRxB+IEYRbk5fJl6zEPyeD0PJrVkTAdBgNV
|
||||
HQ4EFgQUqfZMfgxmG9w6m5lXQSdoiPe0vagwQAYDVR0gBDkwNzA1BgdggRwBbgEBMCowKAYIKwYB
|
||||
BQUHAgEWHGh0dHA6Ly9jYS5hbGlwYXkuY29tL2Nwcy5wZGYwDgYDVR0PAQH/BAQDAgbAMC8GA1Ud
|
||||
HwQoMCYwJKAioCCGHmh0dHA6Ly9jYS5hbGlwYXkuY29tL2NybDk4LmNybDBgBggrBgEFBQcBAQRU
|
||||
MFIwKAYIKwYBBQUHMAKGHGh0dHA6Ly9jYS5hbGlwYXkuY29tL2NhNi5jZXIwJgYIKwYBBQUHMAGG
|
||||
Gmh0dHA6Ly9jYS5hbGlwYXkuY29tOjgzNDAvMA0GCSqGSIb3DQEBCwUAA4IBAQAmDOoavQGthLtz
|
||||
WuW1e0g0K2WChYevFcnWWNILTJ0EsB01Ka0FagOo1T3ErGns+G9lbSj9g6DQZ5DVqLCGnl2ZRvBN
|
||||
KwSnA/7Frllf7CebBaW5WWJ3VKWxP929izvywlPeQdmRELNGK4H/IZoW+nCDYjUgXLOLMgBnqmLY
|
||||
wgug/g3iQ+yFSFuvSNE2J84FwPycWweDJ8zrj4aM9S/bjjWoE/Lfe/a86BIYV19A72Ozc/aTGnxP
|
||||
W/D5txDrhO2wWeCzXd7TuBN1Hze5IX/hYeDqM3rjHuQcGcbFJOchqqR5fUEC/SU9MZ4j/KWND83l
|
||||
Y28GbRbP5jxhgckHIKjfKh6b
|
||||
-----END CERTIFICATE-----
|
|
@ -33,7 +33,7 @@ public class BaseEntity implements Serializable
|
|||
private String createBy;
|
||||
|
||||
/** 创建时间 */
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
package com.mcwl.myInvitation.domain;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.mcwl.common.core.domain.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("inv_commission_ratio")
|
||||
public class CommissionRatio extends BaseEntity {
|
||||
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 最小单数
|
||||
*/
|
||||
private Integer minCount;
|
||||
/**
|
||||
* 最大单数
|
||||
*/
|
||||
private Integer maxCount;
|
||||
/**
|
||||
* 抽取比例
|
||||
*/
|
||||
private Double ratio;
|
||||
/**
|
||||
* 类型 0邀请人-被邀请人 1公司-商家
|
||||
*/
|
||||
private Integer type;
|
||||
|
||||
|
||||
}
|
|
@ -26,6 +26,12 @@ public class Consume extends BaseEntity {
|
|||
// 消费金额
|
||||
private Double amount;
|
||||
|
||||
// 商品id
|
||||
private Long productId;
|
||||
|
||||
// 商品类型
|
||||
private Integer type;
|
||||
|
||||
// 消费时间
|
||||
private Date consumeDate;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
package com.mcwl.myInvitation.domain.vo;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.mcwl.common.core.domain.BaseEntity;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@ApiModel(description = "佣金比例")
|
||||
public class CommissionRatioVo {
|
||||
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId
|
||||
private Long id;
|
||||
/**
|
||||
* 最小单数
|
||||
*/
|
||||
private Integer minCount;
|
||||
/**
|
||||
* 最大单数
|
||||
*/
|
||||
private Integer maxCount;
|
||||
/**
|
||||
* 抽取比例
|
||||
*/
|
||||
private Double ratio;
|
||||
/**
|
||||
* 提成类型,平台手续费、邀请人提成
|
||||
*/
|
||||
private String ratioName;
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package com.mcwl.myInvitation.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.mcwl.myInvitation.domain.Commission;
|
||||
import com.mcwl.myInvitation.domain.CommissionRatio;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface CommissionRatioMapper extends BaseMapper<CommissionRatio> {
|
||||
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package com.mcwl.myInvitation.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mcwl.myInvitation.domain.CommissionRatio;
|
||||
import com.mcwl.myInvitation.domain.vo.CommissionRatioVo;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
public interface CommissionRatioService extends IService<CommissionRatio> {
|
||||
|
||||
/**
|
||||
* 获取佣金比例列表
|
||||
*
|
||||
* @return List<CommissionRatioVo>
|
||||
*/
|
||||
List<CommissionRatioVo> ratioList();
|
||||
|
||||
CommissionRatioVo updateRatio(Long id, Double ratio);
|
||||
|
||||
CommissionRatioVo detail(Long id);
|
||||
}
|
|
@ -0,0 +1,71 @@
|
|||
package com.mcwl.myInvitation.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.mcwl.myInvitation.domain.CommissionRatio;
|
||||
import com.mcwl.myInvitation.domain.vo.CommissionRatioVo;
|
||||
import com.mcwl.myInvitation.mapper.CommissionRatioMapper;
|
||||
import com.mcwl.myInvitation.service.CommissionRatioService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class CommissionRatioServiceImpl extends ServiceImpl<CommissionRatioMapper, CommissionRatio> implements CommissionRatioService {
|
||||
|
||||
|
||||
@Override
|
||||
public List<CommissionRatioVo> ratioList() {
|
||||
List<CommissionRatio> list = baseMapper.selectList(null);
|
||||
if (list == null || list.isEmpty()) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<CommissionRatioVo> vos = new ArrayList<>();
|
||||
for (CommissionRatio commissionRatio : list) {
|
||||
CommissionRatioVo vo = getCommissionRatioVo(commissionRatio);
|
||||
vos.add(vo);
|
||||
}
|
||||
return vos;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommissionRatioVo updateRatio(Long id, Double ratio) {
|
||||
CommissionRatio commissionRatio = baseMapper.selectById(id);
|
||||
if (Objects.isNull(commissionRatio)) {
|
||||
return null;
|
||||
}
|
||||
commissionRatio.setRatio(ratio);
|
||||
baseMapper.insert(commissionRatio);
|
||||
|
||||
return this.getCommissionRatioVo(commissionRatio);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommissionRatioVo detail(Long id) {
|
||||
CommissionRatio commissionRatio = baseMapper.selectById(id);
|
||||
if (Objects.isNull(commissionRatio)) {
|
||||
return null;
|
||||
}
|
||||
return this.getCommissionRatioVo(commissionRatio);
|
||||
}
|
||||
|
||||
|
||||
private CommissionRatioVo getCommissionRatioVo(CommissionRatio commissionRatio) {
|
||||
CommissionRatioVo vo = new CommissionRatioVo();
|
||||
BeanUtil.copyProperties(commissionRatio, vo);
|
||||
if (commissionRatio.getType() == 0) {
|
||||
vo.setRatioName("平台手续费");
|
||||
} else if (commissionRatio.getType() == 1) {
|
||||
vo.setRatioName("邀请人提成");
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -15,8 +15,10 @@ public class AliConfig {
|
|||
private String appId;
|
||||
@Value("${mall.mgt.aliPayConfig.privateKey}")
|
||||
private String privateKey;
|
||||
@Value("${mall.mgt.aliPayConfig.publicKey}")
|
||||
private String publicKey;
|
||||
@Value("${mall.mgt.aliPayConfig.alipayCertPath}")
|
||||
private String alipayCertPath;
|
||||
@Value("${mall.mgt.aliPayConfig.alipayRootCertPath}")
|
||||
private String alipayRootCertPath;
|
||||
@Value("${mall.mgt.aliPayConfig.gatewayUrl}")
|
||||
private String gatewayUrl;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
package com.mcwl.pay.domain.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @Author:ChenYan
|
||||
* @Project:McWl
|
||||
* @Package:com.mcwl.pay.domain
|
||||
* @Filename:PaymentStatus
|
||||
* @Description TODO
|
||||
* @Date:2025/1/3 17:24
|
||||
*/
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public enum CommissionRationEnum {
|
||||
|
||||
/**
|
||||
* 佣金配给邀请者用户
|
||||
*/
|
||||
COMMISSION_RATION_INVITER_USER("CommissionRationInviterUser"),
|
||||
/**
|
||||
* 佣金配给商家用户
|
||||
*/
|
||||
COMMISSION_RATION_MERCHANT("CommissionRationMerchant");
|
||||
|
||||
private String name;
|
||||
}
|
|
@ -15,7 +15,7 @@ public interface AliPayService {
|
|||
|
||||
PayVo pointsPay(Double paymentAmount) throws Exception;
|
||||
|
||||
R<String> fetch(String outBizNo, String amount) throws AlipayApiException;
|
||||
R<String> fetch(String amount) throws AlipayApiException;
|
||||
|
||||
// 查询订单状态
|
||||
R<Object> queryTradeStatus(String outTradeNo) throws Exception;
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.mcwl.pay.service;
|
|||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.mcwl.common.domain.IdsParam;
|
||||
import com.mcwl.pay.domain.OrderTrade;
|
||||
import com.mcwl.resource.domain.dto.ProductRes;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -27,4 +28,5 @@ public interface OrderTradeService extends IService<OrderTrade> {
|
|||
|
||||
void orderHandler(OrderTrade orderTrade, String suffix, Map<String, String> params);
|
||||
|
||||
void productHandler(ProductRes productRes);
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.mcwl.pay.service.impl;
|
|||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.io.resource.ClassPathResource;
|
||||
import cn.hutool.core.lang.UUID;
|
||||
import cn.hutool.extra.mail.MailUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
|
@ -13,6 +14,7 @@ import com.alipay.api.DefaultAlipayClient;
|
|||
import com.alipay.api.domain.AlipayFundAccountQueryModel;
|
||||
import com.alipay.api.domain.AlipayFundTransUniTransferModel;
|
||||
import com.alipay.api.domain.Participant;
|
||||
import com.alipay.api.internal.util.file.IOUtils;
|
||||
import com.alipay.api.request.AlipayFundAccountQueryRequest;
|
||||
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
|
||||
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
|
||||
|
@ -52,6 +54,8 @@ import org.springframework.stereotype.Component;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
|
@ -273,14 +277,12 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
|
||||
/**
|
||||
* 支付宝转账方法
|
||||
*
|
||||
* @param outBizNo 外部业务单号
|
||||
* @param amount 转账金额
|
||||
* @return 返回支付宝转账响应的内容
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public R<String> fetch(String outBizNo, String amount) throws AlipayApiException {
|
||||
public R<String> fetch(String amount) throws AlipayApiException {
|
||||
Long userId = SecurityUtils.getUserId();
|
||||
SysUser sysUser = sysUserService.selectUserById(userId);
|
||||
if (sysUser.getWallet() < Double.parseDouble(amount)) {
|
||||
|
@ -293,9 +295,8 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
// 构造请求参数以调用接口
|
||||
AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
|
||||
AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
|
||||
|
||||
// 设置商家侧唯一订单号
|
||||
model.setOutBizNo(outBizNo);
|
||||
model.setOutBizNo(UUID.fastUUID().toString(true));
|
||||
|
||||
// 设置订单总金额
|
||||
model.setTransAmount(amount);
|
||||
|
@ -319,25 +320,25 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
return R.fail("请先绑定支付宝账号");
|
||||
}
|
||||
|
||||
// 添加提现记录和修改用户钱包
|
||||
this.addLogAndUpdateUserWallet(sysUser, amount);
|
||||
|
||||
// 收款方信息
|
||||
Participant payeeInfo = new Participant();
|
||||
|
||||
// 沙箱环境
|
||||
payeeInfo.setIdentity("2088722057445020");
|
||||
payeeInfo.setIdentityType("ALIPAY_USER_ID");
|
||||
// payeeInfo.setIdentity("2088722057445020");
|
||||
// payeeInfo.setIdentityType("ALIPAY_USER_ID");
|
||||
|
||||
// 线上环境
|
||||
// payeeInfo.setIdentity(sysUserPayAccount.getOpenId());
|
||||
// payeeInfo.setIdentityType("ALIPAY_OPEN_ID");
|
||||
payeeInfo.setIdentity(sysUserPayAccount.getOpenId());
|
||||
payeeInfo.setIdentityType("ALIPAY_OPEN_ID");
|
||||
model.setPayeeInfo(payeeInfo);
|
||||
|
||||
request.setBizModel(model);
|
||||
|
||||
// 添加提现记录和修改用户钱包
|
||||
this.addLogAndUpdateUserWallet(sysUser, amount);
|
||||
|
||||
// 证书用:certificateExecute(request),密钥用:execute(request)
|
||||
AlipayFundTransUniTransferResponse response = alipayClient.execute(request);
|
||||
AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
|
||||
System.out.println(response.getBody());
|
||||
|
||||
if (response.isSuccess()) {
|
||||
|
@ -530,7 +531,7 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
private void addLogAndUpdateUserWallet(SysUser sysUser, String amount) {
|
||||
BigDecimal wallet = new BigDecimal(sysUser.getWallet().toString());
|
||||
BigDecimal amountBigDecimal = new BigDecimal(amount);
|
||||
sysUser.setWallet(wallet.subtract(amountBigDecimal).doubleValue());
|
||||
sysUser.setWallet(wallet.subtract(amountBigDecimal).setScale(2, RoundingMode.HALF_UP).doubleValue());
|
||||
sysUserService.updateUser(sysUser);
|
||||
|
||||
// 添加记录
|
||||
|
@ -540,19 +541,37 @@ public class AliPayServiceImpl implements AliPayService {
|
|||
sysUserPayAccountLog.setAccount("支付宝");
|
||||
sysUserPayAccountLogService.save(sysUserPayAccountLog);
|
||||
}
|
||||
public AlipayConfig getAlipayConfig() {
|
||||
|
||||
AlipayConfig config = new AlipayConfig();
|
||||
|
||||
private AlipayConfig getAlipayConfig() {
|
||||
String privateKey = aliConfig.getPrivateKey();
|
||||
String alipayPublicKey = aliConfig.getPublicKey();
|
||||
AlipayConfig alipayConfig = new AlipayConfig();
|
||||
alipayConfig.setServerUrl(aliConfig.getGatewayUrl());
|
||||
alipayConfig.setAppId(aliConfig.getAppId());
|
||||
alipayConfig.setPrivateKey(privateKey);
|
||||
alipayConfig.setFormat("json");
|
||||
alipayConfig.setAlipayPublicKey(alipayPublicKey);
|
||||
alipayConfig.setCharset("UTF-8");
|
||||
alipayConfig.setSignType("RSA2");
|
||||
return alipayConfig;
|
||||
// 设置网关地址
|
||||
config.setServerUrl(aliConfig.getGatewayUrl());
|
||||
|
||||
// 设置应用ID
|
||||
config.setAppId(aliConfig.getAppId());
|
||||
|
||||
// 设置应用私钥
|
||||
config.setPrivateKey(aliConfig.getPrivateKey());
|
||||
|
||||
// 设置支付宝公钥,因为配置了证书,所以不需要设置支付宝公钥
|
||||
// config.setAlipayPublicKey(aliConfig.getPublicKey());
|
||||
|
||||
// 设置应用公钥证书路径
|
||||
config.setAppCertPath(getClass().getResource("/certs/appCertPublicKey.crt").getPath());
|
||||
|
||||
// 设置支付宝公钥证书路径
|
||||
config.setAlipayPublicCertPath(getClass().getResource(aliConfig.getAlipayCertPath()).getPath());
|
||||
|
||||
// 设置支付宝根证书路径
|
||||
config.setRootCertPath(getClass().getResource(aliConfig.getAlipayRootCertPath()).getPath());
|
||||
|
||||
// 设置字符编码格式
|
||||
config.setCharset("UTF-8");
|
||||
|
||||
// 设置签名类型
|
||||
config.setSignType("RSA2");
|
||||
|
||||
return config;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,18 +6,29 @@ import com.mcwl.common.core.domain.entity.SysUser;
|
|||
import com.mcwl.common.core.redis.RedisCache;
|
||||
import com.mcwl.common.domain.IdsParam;
|
||||
import com.mcwl.common.utils.DateUtils;
|
||||
import com.mcwl.common.utils.SecurityUtils;
|
||||
import com.mcwl.common.utils.StringUtils;
|
||||
import com.mcwl.memberCenter.domain.RechargeRecord;
|
||||
import com.mcwl.memberCenter.service.MemberService;
|
||||
import com.mcwl.memberCenter.service.RechargeRecordService;
|
||||
import com.mcwl.myInvitation.domain.Commission;
|
||||
import com.mcwl.myInvitation.domain.CommissionRatio;
|
||||
import com.mcwl.myInvitation.domain.Consume;
|
||||
import com.mcwl.myInvitation.service.CommissionRatioService;
|
||||
import com.mcwl.myInvitation.service.CommissionService;
|
||||
import com.mcwl.myInvitation.service.ConsumeService;
|
||||
import com.mcwl.pay.domain.OrderTrade;
|
||||
import com.mcwl.pay.domain.enums.CommissionRationEnum;
|
||||
import com.mcwl.pay.mapper.OrderTradeMapper;
|
||||
import com.mcwl.pay.service.OrderTradeService;
|
||||
import com.mcwl.resource.domain.ModelImage;
|
||||
import com.mcwl.resource.domain.ModelProduct;
|
||||
import com.mcwl.resource.domain.WorkFlow;
|
||||
import com.mcwl.resource.domain.dto.ProductRes;
|
||||
import com.mcwl.resource.domain.enums.OrderTypeEnum;
|
||||
import com.mcwl.resource.service.ModelImageService;
|
||||
import com.mcwl.resource.service.ModelService;
|
||||
import com.mcwl.resource.service.WorkFlowService;
|
||||
import com.mcwl.system.service.ISysUserService;
|
||||
import com.mcwl.system.service.impl.SysUserServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -25,6 +36,7 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
|
@ -40,11 +52,11 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
|
|||
|
||||
@Autowired
|
||||
private OrderTradeMapper orderTradeMapper;
|
||||
@Autowired
|
||||
private SysUserServiceImpl userExtensionService;
|
||||
@Autowired
|
||||
private SysUserServiceImpl userExtensionService;
|
||||
|
||||
@Autowired
|
||||
private OrderTradeService orderTradeService;
|
||||
@Autowired
|
||||
private OrderTradeService orderTradeService;
|
||||
|
||||
@Autowired
|
||||
private CommissionService commissionService;
|
||||
|
@ -58,12 +70,77 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
|
|||
@Autowired
|
||||
private MemberService memberService;
|
||||
|
||||
@Autowired
|
||||
private ModelService modelService;
|
||||
|
||||
@Autowired
|
||||
private ModelImageService modelImageService;
|
||||
|
||||
@Autowired
|
||||
private WorkFlowService workFlowService;
|
||||
|
||||
@Autowired
|
||||
private CommissionRatioService commissionRatioService;
|
||||
|
||||
@Autowired
|
||||
private RechargeRecordService rechargeRecordService;
|
||||
|
||||
@Autowired
|
||||
private RedisCache redisCache;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void productHandler(ProductRes productRes) {
|
||||
|
||||
Long productUserId = productRes.getProductUserId();
|
||||
Long productId = productRes.getProductId();
|
||||
Integer productType = productRes.getProductType();
|
||||
|
||||
SysUser sysUser = sysUserService.selectUserById(SecurityUtils.getUserId());
|
||||
// 获取邀请人id
|
||||
Long inviterUserId = sysUser.getInviterUserId();
|
||||
// 邀请者获取的提成
|
||||
Map<String, Double> map = new HashMap<>();
|
||||
if (productType == 0) {
|
||||
map = this.modelOrderHandler(productUserId, productId, sysUser);
|
||||
} else if (productType == 1) {
|
||||
map = this.workFlowOrderHandler(productUserId, productId, sysUser);
|
||||
} else if (productType == 2) {
|
||||
map = this.imageOrderHandler(productUserId, productId, sysUser);
|
||||
}
|
||||
|
||||
if (map.isEmpty()) {
|
||||
throw new RuntimeException("商品不存在");
|
||||
}
|
||||
|
||||
// 邀请人提成
|
||||
Double amount = map.get("amount");
|
||||
// 商品价格
|
||||
Double price = map.get("price");
|
||||
|
||||
// 保存消费表
|
||||
Consume consume = new Consume();
|
||||
consume.setUserId(SecurityUtils.getUserId());
|
||||
consume.setAmount(price);
|
||||
consume.setProductId(productId);
|
||||
consume.setType(productType);
|
||||
consume.setConsumeDate(new Date());
|
||||
consumeService.save(consume);
|
||||
|
||||
|
||||
// 通过sysUser获取邀请人id
|
||||
if (Objects.isNull(inviterUserId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 保存提成表
|
||||
Commission commission = new Commission();
|
||||
commission.setConsumeId(inviterUserId);
|
||||
commission.setAmount(amount);
|
||||
commissionService.save(commission);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<OrderTrade> selectMallProductList(OrderTrade orderTrade) {
|
||||
|
@ -108,8 +185,8 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
|
|||
|
||||
@Override
|
||||
public int insertMallProduct(OrderTrade orderTrade) {
|
||||
// 保存订单
|
||||
return orderTradeMapper.insert(orderTrade);
|
||||
// 保存订单
|
||||
return orderTradeMapper.insert(orderTrade);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -181,7 +258,7 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
|
|||
|
||||
BigDecimal wallet = new BigDecimal(user.getWallet().toString());
|
||||
|
||||
BigDecimal walletDecimal = wallet.add(amountBigDecimal);
|
||||
BigDecimal walletDecimal = wallet.add(amountBigDecimal).setScale(2, RoundingMode.HALF_UP);
|
||||
|
||||
user.setWallet(walletDecimal.doubleValue());
|
||||
sysUserService.updateUser(user);
|
||||
|
@ -210,44 +287,6 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
|
|||
|
||||
}
|
||||
|
||||
private void productHandler(OrderTrade orderTrade) {
|
||||
Long userId = orderTrade.getUserId();
|
||||
SysUser sysUser = sysUserService.selectUserById(userId);
|
||||
double amount = 0.0;
|
||||
// 通过sysUser获取邀请人id
|
||||
Long inviterUserId = sysUser.getInviterUserId();
|
||||
if (Objects.nonNull(inviterUserId)) {
|
||||
amount = 0.5; // 固定0.5元提成
|
||||
}
|
||||
|
||||
|
||||
// 保存消费表
|
||||
Consume consume = new Consume();
|
||||
consume.setUserId(userId);
|
||||
consume.setAmount(Double.valueOf(orderTrade.getPaymentAmount()));
|
||||
consume.setConsumeDate(orderTrade.getOrderTime());
|
||||
consume.setCreateBy(orderTrade.getUserName());
|
||||
consume.setUpdateBy(orderTrade.getUserName());
|
||||
consume.setCreateTime(new Date());
|
||||
consume.setUpdateTime(new Date());
|
||||
consume.setRemark("购买商品");
|
||||
consumeService.save(consume);
|
||||
|
||||
|
||||
// 保存提成表
|
||||
Commission commission = new Commission();
|
||||
commission.setConsumeId(inviterUserId);
|
||||
commission.setAmount(amount);
|
||||
commission.setPayStatus(0);
|
||||
commission.setCreateBy(sysUser.getUserName());
|
||||
commission.setUpdateBy(sysUser.getUserName());
|
||||
commission.setCreateTime(new Date());
|
||||
commission.setUpdateTime(new Date());
|
||||
commission.setRemark("提成");
|
||||
commissionService.save(commission);
|
||||
|
||||
}
|
||||
|
||||
private void orderHandler(OrderTrade orderTrade, Map<String, String> params) {
|
||||
// 更新订单状态
|
||||
// 支付宝交易凭证号
|
||||
|
@ -269,4 +308,153 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
|
|||
orderTrade.setUpdateTime(new Date());
|
||||
orderTradeService.updateById(orderTrade);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 模型订单处理,返回模型金额和邀请人提成
|
||||
*
|
||||
* @param productUserId 产品用户id
|
||||
* @param modelId 模型id
|
||||
* @param sysUser 当前用户
|
||||
* @return Map<String, Double> 模型金额(price) 邀请人提成(amount)
|
||||
*/
|
||||
private Map<String, Double> modelOrderHandler(Long productUserId, Long modelId, SysUser sysUser) {
|
||||
|
||||
ModelProduct modelProduct = modelService.lambdaQuery()
|
||||
.eq(ModelProduct::getId, modelId)
|
||||
.eq(ModelProduct::getUserId, productUserId)
|
||||
.one();
|
||||
if (Objects.isNull(modelProduct)) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
// 获取模型价格
|
||||
Double price = modelProduct.getProductPrice();
|
||||
|
||||
return getStringDoubleMap(productUserId, sysUser, price);
|
||||
}
|
||||
|
||||
/**
|
||||
* 工作流订单处理,返回工作流金额和邀请人提成
|
||||
*
|
||||
* @param productUserId 产品用户id
|
||||
* @param workFlowId 工作流id
|
||||
* @param sysUser 当前用户
|
||||
* @return Map<String, Double> 工作流金额(price) 邀请人提成(amount)
|
||||
*/
|
||||
private Map<String, Double> workFlowOrderHandler(Long productUserId, Long workFlowId, SysUser sysUser) {
|
||||
WorkFlow workFlow = workFlowService.lambdaQuery()
|
||||
.eq(WorkFlow::getId, workFlowId)
|
||||
.eq(WorkFlow::getUserId, productUserId)
|
||||
.one();
|
||||
if (Objects.isNull(workFlow)) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
// 获取模型价格
|
||||
Double price = workFlow.getProductPrice();
|
||||
|
||||
return getStringDoubleMap(productUserId, sysUser, price);
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片订单处理,返回图片金额和邀请人提成
|
||||
*
|
||||
* @param productUserId 产品用户id
|
||||
* @param imageId 图片id
|
||||
* @param sysUser 当前用户
|
||||
* @return Map<String, Double> 图片金额(price) 邀请人提成(amount)
|
||||
*/
|
||||
private Map<String, Double> imageOrderHandler(Long productUserId, Long imageId, SysUser sysUser) {
|
||||
ModelImage modelImage = modelImageService.lambdaQuery()
|
||||
.eq(ModelImage::getId, imageId)
|
||||
.eq(ModelImage::getUserId, productUserId)
|
||||
.one();
|
||||
if (Objects.isNull(modelImage)) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
// 获取模型价格
|
||||
Double price = modelImage.getProductPrice();
|
||||
|
||||
return getStringDoubleMap(productUserId, sysUser, price);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理商品、邀请人提成
|
||||
* @param productUserId 产品用户id
|
||||
* @param sysUser 当前用户
|
||||
* @param price 商品价格
|
||||
* @return Map<String, Double> 商品价格(price) 邀请人提成(amount)
|
||||
*/
|
||||
private Map<String, Double> getStringDoubleMap(Long productUserId, SysUser sysUser, Double price) {
|
||||
// 从redis获取提成比例
|
||||
// 抽取商家金额比例
|
||||
String CommissionRationMerchant = redisCache.getCacheObject(CommissionRationEnum.COMMISSION_RATION_MERCHANT.getName());
|
||||
if (Objects.isNull(CommissionRationMerchant)) {
|
||||
CommissionRatio commissionRatio = commissionRatioService.lambdaQuery()
|
||||
.eq(CommissionRatio::getType, 1)
|
||||
.one();
|
||||
CommissionRationMerchant = commissionRatio.getRatio().toString();
|
||||
}
|
||||
|
||||
// 佣金配给邀请者用户比例
|
||||
String commissionRationInviterUser = redisCache.getCacheObject(CommissionRationEnum.COMMISSION_RATION_INVITER_USER.getName());
|
||||
if (Objects.isNull(CommissionRationMerchant)) {
|
||||
CommissionRatio commissionRatio = commissionRatioService.lambdaQuery()
|
||||
.eq(CommissionRatio::getType, 0)
|
||||
.one();
|
||||
commissionRationInviterUser = commissionRatio.getRatio().toString();
|
||||
}
|
||||
|
||||
Double rationMerchant = redisCache.getCacheObject(CommissionRationMerchant);
|
||||
Double rationInviterUser = redisCache.getCacheObject(commissionRationInviterUser);
|
||||
|
||||
// 将模型价格、抽取商家金额比例、佣金配给邀请者用户比例转换为BigDecimal类型
|
||||
BigDecimal priceBigDecimal = new BigDecimal(price.toString());
|
||||
BigDecimal rationMerchantBigDecimal = new BigDecimal(rationMerchant.toString());
|
||||
BigDecimal rationInviterUserBigDecimal = new BigDecimal(rationInviterUser.toString());
|
||||
|
||||
// 邀请人获取的金额 = 模型价格 * 抽取商家金额比例 * 邀请人提成比例
|
||||
BigDecimal inviterUserAmount = priceBigDecimal
|
||||
.multiply(rationMerchantBigDecimal)
|
||||
.multiply(rationInviterUserBigDecimal)
|
||||
.setScale(2, RoundingMode.HALF_UP);
|
||||
|
||||
// 商家获取的金额 = 模型价格 * (1 - 抽取商家金额比例)
|
||||
BigDecimal merchantAmount = priceBigDecimal
|
||||
.multiply(new BigDecimal("1.00").subtract(rationMerchantBigDecimal));
|
||||
|
||||
// 通过sysUser获取邀请人id
|
||||
if (Objects.nonNull(sysUser.getInviterUserId())) {
|
||||
// 更新邀请人钱包金额
|
||||
SysUser inviterUser = sysUserService.selectUserById(sysUser.getInviterUserId());
|
||||
if (Objects.nonNull(inviterUser)) {
|
||||
inviterUser.setWallet(new BigDecimal(inviterUser.getWallet().toString())
|
||||
.add(inviterUserAmount)
|
||||
.setScale(2, RoundingMode.HALF_UP)
|
||||
.doubleValue());
|
||||
sysUserService.updateUser(inviterUser);
|
||||
}
|
||||
}
|
||||
// 更新当前用户钱包金额
|
||||
sysUser.setWallet(new BigDecimal(sysUser.getWallet().toString())
|
||||
.subtract(priceBigDecimal)
|
||||
.setScale(2, RoundingMode.HALF_UP)
|
||||
.doubleValue());
|
||||
// 更新商家钱包金额
|
||||
SysUser merchants = sysUserService.selectUserById(productUserId);
|
||||
merchants.setWallet(new BigDecimal(merchants.getWallet().toString())
|
||||
.add(merchantAmount)
|
||||
.setScale(2, RoundingMode.HALF_UP)
|
||||
.doubleValue());
|
||||
sysUserService.updateUser(merchants);
|
||||
|
||||
|
||||
Map<String, Double> map = new HashMap<>();
|
||||
map.put("price", price);
|
||||
map.put("amount", inviterUserAmount.doubleValue());
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -115,4 +115,10 @@ public class ModelImage extends BaseEntity {
|
|||
*/
|
||||
@ApiModelProperty(value = "审核失败原因")
|
||||
private String auditText;
|
||||
|
||||
/**
|
||||
* 商品价格
|
||||
*/
|
||||
@ApiModelProperty(value = "商品价格")
|
||||
private Double productPrice;
|
||||
}
|
||||
|
|
|
@ -137,6 +137,12 @@ public class ModelProduct extends BaseEntity {
|
|||
@ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
|
||||
private String delFlag;
|
||||
|
||||
/**
|
||||
* 商品价格
|
||||
*/
|
||||
@ApiModelProperty(value = "商品价格")
|
||||
private Double productPrice;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -184,4 +184,10 @@ public class WorkFlow {
|
|||
@TableField(exist = false)
|
||||
private Integer isLike;
|
||||
|
||||
/**
|
||||
* 商品价格
|
||||
*/
|
||||
@ApiModelProperty(value = "商品价格")
|
||||
private Double productPrice;
|
||||
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ public class ModelCommentRes {
|
|||
*/
|
||||
@ApiModelProperty(value = "模型id", required = true)
|
||||
@NotNull(message = "模型id不能为空")
|
||||
private Long workFlowId;
|
||||
private Long modelId;
|
||||
|
||||
/**
|
||||
* 评论内容
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package com.mcwl.resource.domain.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@ApiModel(description = "产品信息")
|
||||
public class ProductRes {
|
||||
|
||||
/**
|
||||
* 产品用户id
|
||||
*/
|
||||
@NotNull(message = "产品用户id不能为空")
|
||||
@ApiModelProperty(value = "产品用户id", required = true)
|
||||
private Long productUserId;
|
||||
|
||||
/**
|
||||
* 产品id
|
||||
*/
|
||||
@NotNull(message = "产品id不能为空")
|
||||
@ApiModelProperty(value = "产品id", required = true)
|
||||
private Long productId;
|
||||
|
||||
/**
|
||||
* 商品类型
|
||||
*/
|
||||
@NotNull(message = "产品类型不能为空")
|
||||
@ApiModelProperty(value = "产品类型 0模型 1工作流 2图片", required = true)
|
||||
private Integer productType;
|
||||
|
||||
|
||||
}
|
|
@ -1,10 +1,12 @@
|
|||
package com.mcwl.resource.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
|
@ -98,9 +100,22 @@ public class ModelImageVo {
|
|||
@ApiModelProperty(value = "是否置顶")
|
||||
private Integer isTop;
|
||||
|
||||
/**
|
||||
* 是否点赞
|
||||
*/
|
||||
@ApiModelProperty(value = "是否点赞")
|
||||
private Integer isLike;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
@ApiModelProperty(value = "审核状态")
|
||||
private Integer auditStatus;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
}
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
package com.mcwl.resource.domain.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@ApiModel(description = "模型请求对象")
|
||||
|
@ -59,9 +63,21 @@ public class ModelVo {
|
|||
@ApiModelProperty(value = "是否置顶")
|
||||
private Integer isTop;
|
||||
|
||||
/**
|
||||
* 是否点赞
|
||||
*/
|
||||
@ApiModelProperty(value = "是否点赞")
|
||||
private Integer isLike;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
@ApiModelProperty(value = "审核状态")
|
||||
private Integer auditStatus;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel;
|
|||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@ApiModel(description = "工作流请求对象")
|
||||
public class WorkFlowVo {
|
||||
|
@ -54,10 +56,22 @@ public class WorkFlowVo {
|
|||
@ApiModelProperty(value = "是否置顶")
|
||||
private Integer isTop;
|
||||
|
||||
/**
|
||||
* 是否点赞
|
||||
*/
|
||||
@ApiModelProperty(value = "是否点赞")
|
||||
private Integer isLike;
|
||||
|
||||
/**
|
||||
* 审核状态
|
||||
*/
|
||||
@ApiModelProperty(value = "审核状态")
|
||||
private Integer auditStatus;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
}
|
||||
|
|
|
@ -14,11 +14,13 @@ import com.mcwl.common.utils.SecurityUtils;
|
|||
import com.mcwl.common.utils.StringUtils;
|
||||
import com.mcwl.common.utils.baidu.BaiduCensor;
|
||||
import com.mcwl.resource.domain.ModelImage;
|
||||
import com.mcwl.resource.domain.ModelImageLike;
|
||||
import com.mcwl.resource.domain.dto.ModelImagePageRes;
|
||||
import com.mcwl.resource.domain.dto.ModelImageRes;
|
||||
import com.mcwl.resource.domain.vo.ModelImageVo;
|
||||
import com.mcwl.resource.mapper.ModelImageCommentMapper;
|
||||
import com.mcwl.resource.mapper.ModelImageMapper;
|
||||
import com.mcwl.resource.service.ModelImageLikeService;
|
||||
import com.mcwl.resource.service.ModelImageService;
|
||||
import com.mcwl.system.service.ISysDictDataService;
|
||||
import com.mcwl.system.service.ISysUserService;
|
||||
|
@ -42,12 +44,13 @@ public class ModelImageServiceImpl extends ServiceImpl<ModelImageMapper, ModelIm
|
|||
|
||||
private final ModelImageMapper modelImageMapper;
|
||||
|
||||
private final ModelImageLikeService modelImageLikeService;
|
||||
|
||||
private final ISysUserService sysUserService;
|
||||
|
||||
private final ISysDictDataService sysDictDataService;
|
||||
|
||||
@Autowired
|
||||
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
||||
private final ThreadPoolTaskExecutor threadPoolTaskExecutor;
|
||||
|
||||
|
||||
@Override
|
||||
|
@ -230,6 +233,17 @@ public class ModelImageServiceImpl extends ServiceImpl<ModelImageMapper, ModelIm
|
|||
}
|
||||
BeanUtil.copyProperties(modelImage, modelImageVo);
|
||||
|
||||
ModelImageLike modelImageLike = modelImageLikeService.lambdaQuery()
|
||||
.eq(ModelImageLike::getUserId, SecurityUtils.getUserId())
|
||||
.eq(ModelImageLike::getModelImageId, imageId)
|
||||
.one();
|
||||
|
||||
if (Objects.nonNull(modelImageLike)) {
|
||||
modelImageVo.setIsLike(1);
|
||||
} else {
|
||||
modelImageVo.setIsLike(0);
|
||||
}
|
||||
|
||||
// 设置标签
|
||||
List<String> tagList = new ArrayList<>();
|
||||
if (StringUtils.isNotEmpty(modelImage.getTags())) {
|
||||
|
|
Loading…
Reference in New Issue