From aa43a92c7ec9053dbaef92fe5ccb3011b670442c Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期三, 12 七月 2023 11:46:21 +0800
Subject: [PATCH] 更新线上视频奖励模块接口
---
cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageList.java | 2
cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java | 56 +
cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java | 10
cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideoClassificationListVo.java | 22
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideoClassificationServiceImpl.java | 15
cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionInfo.java | 2
cloud-server-activity/src/main/java/com/dsh/activity/service/IBenefitsVideoClassificationService.java | 11
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/Course.java | 48 +
cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java | 2
cloud-server-account/src/main/java/com/dsh/account/controller/UserIntegralChangesController.java | 33 +
cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java | 28
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/CourseClient.java | 21
cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideosInfoVo.java | 30 +
cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java | 2
cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java | 6
cloud-server-competition/src/main/java/com/dsh/CompetitionApplication.java | 2
cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserBenefitsVideosMapper.java | 11
cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml | 10
cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideosListVo.java | 26
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java | 40
cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java | 144 ++--
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/SaveUserIntegralChangesVo.java | 23
cloud-server-activity/src/main/java/com/dsh/activity/service/IUserBenefitsVideosService.java | 11
cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java | 17
cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java | 16
cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java | 10
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java | 4
cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java | 11
cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/AuthService.java | 2
cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/ResultUtil.java | 5
cloud-server-competition/src/main/java/com/dsh/competition/util/JuHeUtil.java | 44 +
cloud-server-activity/src/main/resources/mapper/BenefitsVideoClassificationMapper.xml | 6
cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java | 144 ++--
cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java | 14
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserBenefitsVideosServiceImpl.java | 15
cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java | 110 +++
cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideoClassificationMapper.java | 11
cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java | 158 +++++
cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/UserIntegralChangesClient.java | 21
cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java | 144 ++--
cloud-server-other/src/main/java/com/dsh/other/entity/Banner.java | 53 +
cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java | 11
cloud-server-competition/src/main/java/com/dsh/competition/util/TaskUtil.java | 31 +
cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java | 24
cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java | 44 +
cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java | 21
cloud-server-activity/src/main/resources/mapper/UserBenefitsVideosMapper.xml | 6
cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideoClassification.java | 43 +
cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java | 20
cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java | 15
cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml | 28
cloud-server-account/src/main/java/com/dsh/account/model/SaveUserIntegralChangesVo.java | 23
cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java | 16
cloud-server-competition/src/main/java/com/dsh/competition/model/EditParticipant.java | 16
cloud-server-activity/src/main/java/com/dsh/activity/entity/UserBenefitsVideos.java | 48 +
55 files changed, 1,424 insertions(+), 262 deletions(-)
diff --git a/cloud-server-account/src/main/java/com/dsh/account/controller/UserIntegralChangesController.java b/cloud-server-account/src/main/java/com/dsh/account/controller/UserIntegralChangesController.java
new file mode 100644
index 0000000..41f6691
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/controller/UserIntegralChangesController.java
@@ -0,0 +1,33 @@
+package com.dsh.account.controller;
+
+import com.dsh.account.model.SaveUserIntegralChangesVo;
+import com.dsh.account.service.UserIntegralChangesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 11:25
+ */
+@RestController
+@RequestMapping("")
+public class UserIntegralChangesController {
+
+ @Autowired
+ private UserIntegralChangesService userIntegralChangesService;
+
+
+ /**
+ * 保存用户积分变动记录
+ * @param vo
+ */
+ @ResponseBody
+ @PostMapping("/userIntegralChanges/saveUserIntegralChanges")
+ public void saveUserIntegralChanges(@RequestBody SaveUserIntegralChangesVo vo){
+ try {
+ userIntegralChangesService.saveUserIntegralChanges(vo);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java b/cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java
index 7930442..305748a 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/entity/UserIntegralChanges.java
@@ -1,14 +1,14 @@
package com.dsh.account.entity;
-import com.baomidou.mybatisplus.enums.IdType;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
-import com.baomidou.mybatisplus.annotations.TableId;
-import com.baomidou.mybatisplus.activerecord.Model;
-import com.baomidou.mybatisplus.annotations.TableName;
import java.io.Serializable;
-import com.baomidou.mybatisplus.annotations.Version;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -37,26 +37,32 @@
/**
* 用户id
*/
+ @TableField("appUserId")
private Integer appUserId;
/**
* 积分类型(1=赠送积分,2=兑换商品,3=完成课后练习,4=观看教学视频)
*/
+ @TableField("type")
private Integer type;
/**
* 历史积分
*/
+ @TableField("oldIntegral")
private Integer oldIntegral;
/**
* 新积分
*/
+ @TableField("newIntegral")
private Integer newIntegral;
/**
* 备注
*/
+ @TableField("remark")
private String remark;
/**
* 添加时间
*/
+ @TableField("insertTime")
private Date insertTime;
diff --git a/cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java b/cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java
index 5e9a97d..72bff09 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/mapper/UserIntegralChangesMapper.java
@@ -1,7 +1,7 @@
package com.dsh.account.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.account.entity.UserIntegralChanges;
-import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
* <p>
diff --git a/cloud-server-account/src/main/java/com/dsh/account/model/SaveUserIntegralChangesVo.java b/cloud-server-account/src/main/java/com/dsh/account/model/SaveUserIntegralChangesVo.java
new file mode 100644
index 0000000..57a33db
--- /dev/null
+++ b/cloud-server-account/src/main/java/com/dsh/account/model/SaveUserIntegralChangesVo.java
@@ -0,0 +1,23 @@
+package com.dsh.account.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 11:26
+ */
+@Data
+public class SaveUserIntegralChangesVo {
+ /**
+ * 用户id
+ */
+ private Integer appUserId;
+ /**
+ * 积分类型(1=赠送积分,2=兑换商品,3=完成课后练习,4=观看教学视频)
+ */
+ private Integer type;
+ /**
+ * 积分
+ */
+ private Integer integral;
+}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java b/cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java
index 2e21559..2d1b48a 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/UserIntegralChangesService.java
@@ -1,7 +1,8 @@
package com.dsh.account.service;
-import com.baomidou.mybatisplus.service.IService;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.account.entity.UserIntegralChanges;
+import com.dsh.account.model.SaveUserIntegralChangesVo;
import com.dsh.account.model.vo.userBenefitDetail.IntegralDetailsResponse;
/**
@@ -16,4 +17,11 @@
IntegralDetailsResponse queryUserPointsDetails(String yearMonth, Integer recordId, Integer userIdFormRedis);
+
+ /**
+ * 保存用户积分变动
+ * @param vo
+ * @throws Exception
+ */
+ void saveUserIntegralChanges(SaveUserIntegralChangesVo vo) throws Exception;
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
index 0280cee..309550a 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/service/impl/UserIntegralChangesServiceImpl.java
@@ -1,11 +1,12 @@
package com.dsh.account.service.impl;
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsh.account.entity.TAppUser;
import com.dsh.account.entity.UserIntegralChanges;
import com.dsh.account.mapper.TAppUserMapper;
import com.dsh.account.mapper.UserIntegralChangesMapper;
+import com.dsh.account.model.SaveUserIntegralChangesVo;
import com.dsh.account.model.vo.userBenefitDetail.IntegralDetailsResponse;
import com.dsh.account.service.UserIntegralChangesService;
import com.dsh.account.util.DateTimeHelper;
@@ -49,10 +50,10 @@
monthStart = DateTimeHelper.getCurrentMouthStart();
monthEnd = DateTimeHelper.getCurrentMouthEnd();
}
- List<UserIntegralChanges> userIntegralChanges = this.baseMapper.selectList(new EntityWrapper<UserIntegralChanges>()
+ List<UserIntegralChanges> userIntegralChanges = this.baseMapper.selectList(new QueryWrapper<UserIntegralChanges>()
.eq("appUserId",userIdFormRedis )
.between("insertTime",monthStart,monthEnd)
- .orderBy("insertTime",false));
+ .orderByDesc("insertTime"));
if (userIntegralChanges.size() > 0 ){
for (UserIntegralChanges userIntegralChange : userIntegralChanges) {
IntegralDetailsResponse.IntegralsData detail= new IntegralDetailsResponse.IntegralsData();
@@ -96,4 +97,23 @@
}
return vo;
}
+
+
+ /**
+ * 保存用户积分变动
+ * @param vo
+ * @throws Exception
+ */
+ @Override
+ public void saveUserIntegralChanges(SaveUserIntegralChangesVo vo) throws Exception {
+ TAppUser appUser = tauMapper.selectById(vo.getAppUserId());
+ UserIntegralChanges userIntegralChanges = new UserIntegralChanges();
+ userIntegralChanges.setAppUserId(vo.getAppUserId());
+ userIntegralChanges.setOldIntegral(appUser.getIntegral());
+ userIntegralChanges.setType(vo.getType());
+ appUser.setIntegral(appUser.getIntegral() + vo.getIntegral());
+ userIntegralChanges.setNewIntegral(appUser.getIntegral());
+ userIntegralChanges.setInsertTime(new Date());
+ this.save(userIntegralChanges);
+ }
}
diff --git a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
index 2d2a81b..0ffecf3 100644
--- a/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
+++ b/cloud-server-account/src/main/java/com/dsh/account/util/PayMoneyUtil.java
@@ -41,13 +41,13 @@
*/
@Component
public class PayMoneyUtil {
- private String aliAppid = "";//支付宝appid
+ private String aliAppid = "2021004103650328";//支付宝appid
- private String appPrivateKey = "";//支付宝开发者应用私钥
+ private String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCSsBy+F6k1CTL4b0qQssuhf6x2aeqSn2eBmv0mJALK9iqRgA9EG0buYVnV/tsNGYvKCgX56onb+Cv+f9/TShZzp0FVGemIcgPhrjK0WW2RJBMq9EmPzc2x+7SkygKO1H6S3CwWhYdc7TCNL9OnFAHSEa+FfGNWXg0jM0mSXI7/me8icbWZd5mdiLTV+OWx5ONAE0GfVPhUPnb9faunE6gvZCamZnS+H6ACzzidO7ksVkZq5PBsI3Jew2oAcAJSktsljMZNqDrVknzUbvKBXSw80zZD66i5twx8+8els5VLo6qu9PD80l+K430r2eMqxzXm9mRXZSPSxoOm5c+0cNiHAgMBAAECggEAR+EIlJWfkp+JXHecgD88zUx0xCmuil6WJ8o81h27SJ1LyrSHxoXfQhxuGxChYk/sUfqLZyVonGOFm1Yp5a1eRxnkR8FE0FmeUU49Bmbz67VTty6xhUgBzX9by4w5qKezxl8hM4AHDqAjtGuFOU/yfG+yJKUJQF8h7OfK22+DmveglMt+W8buCf+IJahMyxYLWnA5eG8X1KjOC5PnpQEEBBB3g8fJpdbcoUteGGKzGhkSMKXuM//m2T8bU1sNZytnV+rDblg4E9IZIJwhory7WBxDzykEGpbM+RwJ6E6bAp6MXMUKbed1Uf/40d8C5yItWhjUh1a+ZDS0XbsMP+C/IQKBgQDmYhUr5wcqNQHqpKZWd0l/UZyR+Ykjk7WNvWFQIoMZmCWCGcepyQHAdXpk29evgTqcF9v9dlGDc7waFc93L2uxEYOaSk5UK8Sf6yoXHDocKwauY5DDvAuyy2b9QQDNqisi/MN872RaefBILz/DYN2ZbTtp8i/udSaRl01h6EXQfwKBgQCi/5+eIEcQZTa4zhq5CXKKVbcU2Y8uVsM1tgLaxOwQFr0Xd0ckQiJdkN7qhjgeSuOz0BOXo1xovzN4ZIKISB5sZDadgQCZi7O1YeKc8ElLPnV/WfKBGAxSBpURyMUOYH1mno5QG+QiGmTgH0/OhmqWfp+dVWHNwlx0EwMOpCBz+QKBgBRuVlpSXrxLfyQD/gxk/8uevTfk3VieXNd5GAw3Q1EdwRXMm3xfKxyaToRrSrFx0HTPWN8dgxUZSnE1xfRX7EEDwJwKQvAMAZ/9BvqNskmVNz537fqtzovIphWHkj6q/LBZoiyOPmQXtEtyhUEacgyNN1up8r4+/XCj7mTkaGyZAoGBAIx+GG6LE7WmB8yymYX0Bq4Fw5BNFYSzc/7PqxY1teMINmQLg15VQpmzTPCIT8aMdkd+ieSiAfynEQ4sU/ZzcwWqOwj3MDUonPUyMcljs0kPxObH+KYcvEHXOpXhnzgNIwlYkQGriK98YIZtdrRkV2rwKVPLTEm1xUqnOHNeNDrBAoGASnewOvqzZQVnzbGYur7nbEBQaMKWP2IYKozr57+EHQ40QFyTzFUx+jhxnQ2TIoXQEbozNp11eWGm9TZenHxUbOZmAmPKGq5DQzBgwj/V9QPNPpulCEkgjEqIn0gdCNaEilZXTpdsLPxmZ/J9IxGJt+y/5OYhbIwfSS9gbvVEook=";//支付宝开发者应用私钥
- private String alipayPublicKey = "";//支付宝应用公钥
+ private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwRiMpvwg288WxCwJTBxeqQcFlkZR1p+hZn3/GshrYgRKhGu34IfnRbEnb70YJBq0N1AmdJRU4tYMS1qqFcvKdXnUrdPz+yx4F/uWv+Vz7ftzAEZ1JJh1s9IhJ1ayE4NNWBczj12cIrinUcIHNoITmPFSpcizk9jGnzZZDK4u2oZQEontseu6QyLoc4bBXgy3J1Cux7Q3kO0m3unr0j14PSOAY6kMmgPOyAyuP5Vl655OFJz1x4YDiXs6c+fHLzEZh+Bmm4kCedE7PeJ69xpxSo+i0qia9mhiR4L3LmX7yAzDffHfSQHdxzN0UR34ZF9ChZi/tGOeGABbC35tzGiWWQIDAQAB";//支付宝应用公钥
- private String alipay_public_key = "";//支付宝支付公钥
+ private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥
private String appid = "";//微信appid
@@ -73,83 +73,83 @@
* 支付宝支付
*/
public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl){
- //构造client
- CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
- //设置网关地址
- certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
- //设置应用Id
- certAlipayRequest.setAppId(aliAppid);
- //设置应用私钥
- certAlipayRequest.setPrivateKey(appPrivateKey);
- //设置请求格式,固定值json
- certAlipayRequest.setFormat("json");
- //设置字符集
- certAlipayRequest.setCharset("UTF-8");
- //设置签名类型
- certAlipayRequest.setSignType("RSA2");
- //设置应用公钥证书路径
- certAlipayRequest.setCertPath(app_cert_path);
- //设置支付宝公钥证书路径
- certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
- //设置支付宝根证书路径
- certAlipayRequest.setRootCertPath(alipay_root_cert_path);
- //构造client
- AlipayClient alipayClient = null;
- try {
- alipayClient = new DefaultAlipayClient(certAlipayRequest);
- } catch (AlipayApiException e) {
- e.printStackTrace();
- }
- //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
- AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
- //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
- AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
- model.setBody(body);
- model.setSubject (subject);
- model.setOutTradeNo (outTradeNo);
- model.setTimeoutExpress ("30m" );
- model.setTotalAmount (amount);
- model.setProductCode ( "QUICK_MSECURITY_PAY" );
- model.setPassbackParams(passbackParams);//自定义参数
- request.setBizModel ( model );
- request.setNotifyUrl (callbackPath + notifyUrl);
- try {
- //这里和普通的接口调用不同,使用的是sdkExecute
- AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
- Map<String, String> map = new HashMap<>();
- map.put("orderString", response.getBody());
- System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
- return ResultUtil.success(map);
- } catch (AlipayApiException e ) {
- e.printStackTrace();
- }
-
-
-// //实例化客户端
-// AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
-// //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
-// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
-// //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
-// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
-// model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
-// model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。
-// model.setOutTradeNo(outTradeNo);//商户网站唯一订单号
-// model.setTimeoutExpress("30m");
-// model.setTotalAmount(amount);//付款金额
-// model.setProductCode("QUICK_MSECURITY_PAY");
-// model.setPassbackParams(passbackParams);//自定义参数
-// request.setBizModel(model);
-// request.setNotifyUrl(callbackPath + notifyUrl);
+// //构造client
+// CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
+// //设置网关地址
+// certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
+// //设置应用Id
+// certAlipayRequest.setAppId(aliAppid);
+// //设置应用私钥
+// certAlipayRequest.setPrivateKey(appPrivateKey);
+// //设置请求格式,固定值json
+// certAlipayRequest.setFormat("json");
+// //设置字符集
+// certAlipayRequest.setCharset("UTF-8");
+// //设置签名类型
+// certAlipayRequest.setSignType("RSA2");
+// //设置应用公钥证书路径
+// certAlipayRequest.setCertPath(app_cert_path);
+// //设置支付宝公钥证书路径
+// certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
+// //设置支付宝根证书路径
+// certAlipayRequest.setRootCertPath(alipay_root_cert_path);
+// //构造client
+// AlipayClient alipayClient = null;
// try {
+// alipayClient = new DefaultAlipayClient(certAlipayRequest);
+// } catch (AlipayApiException e) {
+// e.printStackTrace();
+// }
+// //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
+// //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
+// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
+// model.setBody(body);
+// model.setSubject (subject);
+// model.setOutTradeNo (outTradeNo);
+// model.setTimeoutExpress ("30m" );
+// model.setTotalAmount (amount);
+// model.setProductCode ( "QUICK_MSECURITY_PAY" );
+// model.setPassbackParams(passbackParams);//自定义参数
+// request.setBizModel ( model );
+// request.setNotifyUrl (callbackPath + notifyUrl);
+// try {
// //这里和普通的接口调用不同,使用的是sdkExecute
// AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
// Map<String, String> map = new HashMap<>();
// map.put("orderString", response.getBody());
// System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
// return ResultUtil.success(map);
-// } catch (AlipayApiException e) {
+// } catch (AlipayApiException e ) {
// e.printStackTrace();
// }
+
+
+ //实例化客户端
+ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
+ //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+ AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
+ //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
+ AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
+ model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
+ model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。
+ model.setOutTradeNo(outTradeNo);//商户网站唯一订单号
+ model.setTimeoutExpress("30m");
+ model.setTotalAmount(amount);//付款金额
+ model.setProductCode("QUICK_MSECURITY_PAY");
+ model.setPassbackParams(passbackParams);//自定义参数
+ request.setBizModel(model);
+ request.setNotifyUrl(callbackPath + notifyUrl);
+ try {
+ //这里和普通的接口调用不同,使用的是sdkExecute
+ AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
+ Map<String, String> map = new HashMap<>();
+ map.put("orderString", response.getBody());
+ System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
+ return ResultUtil.success(map);
+ } catch (AlipayApiException e) {
+ e.printStackTrace();
+ }
return null;
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java b/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java
index 971a10f..8cf32c6 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/controller/BenefitVideoController.java
@@ -3,12 +3,19 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.activity.entity.BenefitsVideos;
+import com.dsh.activity.model.BenefitsVideoClassificationListVo;
+import com.dsh.activity.model.BenefitsVideosInfoVo;
+import com.dsh.activity.model.BenefitsVideosListVo;
import com.dsh.activity.service.BenefitsVideosService;
+import com.dsh.activity.util.ResultUtil;
+import com.dsh.activity.util.TokenUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
-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 org.springframework.web.bind.annotation.*;
+
+import java.util.List;
@RestController
@RequestMapping("")
@@ -18,6 +25,10 @@
@Autowired
private BenefitsVideosService bfvService;
+ @Autowired
+ private TokenUtil tokenUtil;
+
+
@PostMapping("base/benefitVideo/getList")
@@ -26,4 +37,95 @@
}
+
+
+ @ResponseBody
+ @PostMapping("/api/benefitsVideo/queryClassificationBenefitsVideosList")
+ @ApiOperation(value = "获取视频列表", tags = {"APP-线上课得积分", "APP-看视频得奖励"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "位置(1=线上课得积分,2=看视频得奖励)", name = "position", dataType = "int", required = true),
+ @ApiImplicitParam(value = "搜索内容", name = "search", dataType = "string", required = false),
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ResultUtil<List<BenefitsVideoClassificationListVo>> queryClassificationBenefitsVideosList(Integer position, String search){
+ try {
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ if(null == uid){
+ return ResultUtil.tokenErr();
+ }
+ List<BenefitsVideoClassificationListVo> listVos = bfvService.queryClassificationBenefitsVideosList(uid, position, search);
+ return ResultUtil.success(listVos);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+
+
+ @ResponseBody
+ @PostMapping("/api/benefitsVideo/queryBenefitsVideosList")
+ @ApiOperation(value = "获取视频列表", tags = {"APP-线上课得积分", "APP-看视频得奖励"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "视频分类id", name = "classificationId", dataType = "int", required = true),
+ @ApiImplicitParam(value = "页码,首页1", name = "pageSize", dataType = "int", required = true),
+ @ApiImplicitParam(value = "页条数", name = "pageNo", dataType = "int", required = true),
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ResultUtil<List<BenefitsVideosListVo>> queryBenefitsVideosList(Integer classificationId, Integer pageSize, Integer pageNo){
+ try {
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ if(null == uid){
+ return ResultUtil.tokenErr();
+ }
+ List<BenefitsVideosListVo> benefitsVideosListVos = bfvService.queryBenefitsVideosList(uid, classificationId, pageSize, pageNo);
+ return ResultUtil.success(benefitsVideosListVos);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+
+
+
+ @ResponseBody
+ @PostMapping("/api/benefitsVideo/queryBenefitsVideosInfo")
+ @ApiOperation(value = "获取视频详情", tags = {"APP-线上课得积分", "APP-看视频得奖励"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "视频id", name = "id", dataType = "int", required = true),
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ResultUtil<BenefitsVideosInfoVo> queryBenefitsVideosInfo(Integer id){
+ try {
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ if(null == uid){
+ return ResultUtil.tokenErr();
+ }
+ BenefitsVideosInfoVo benefitsVideosInfoVo = bfvService.queryBenefitsVideosInfo(uid, id);
+ return ResultUtil.success(benefitsVideosInfoVo);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+
+ @ResponseBody
+ @PostMapping("/api/benefitsVideo/receiveAward")
+ @ApiOperation(value = "观看视频结束后领取奖励", tags = {"APP-线上课得积分", "APP-看视频得奖励"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "视频id", name = "id", dataType = "int", required = true),
+ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
+ })
+ public ResultUtil receiveAward(Integer id) {
+ try {
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ if(null == uid){
+ return ResultUtil.tokenErr();
+ }
+ bfvService.receiveAward(uid, id);
+ return ResultUtil.success();
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideoClassification.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideoClassification.java
new file mode 100644
index 0000000..f1fe293
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideoClassification.java
@@ -0,0 +1,43 @@
+package com.dsh.activity.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:28
+ */
+@Data
+@TableName("t_benefits_video_classification")
+public class BenefitsVideoClassification {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 分类名称
+ */
+ @TableField("name")
+ private String name;
+ /**
+ * 位置(1=线上课得积分,2=看视频得奖励)
+ */
+ @TableField("position")
+ private Integer position;
+ /**
+ * 排序
+ */
+ @TableField("sort")
+ private Integer sort;
+ /**
+ * 添加时间
+ */
+ @TableField("insertTime")
+ private Date insertTime;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java
index b603c57..5246b77 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/BenefitsVideos.java
@@ -1,6 +1,7 @@
package com.dsh.activity.entity;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
@@ -35,34 +36,27 @@
/**
* 分类id
*/
+ @TableField("benefitsVideoClassificationId")
private Integer benefitsVideoClassificationId;
/**
- * 视频名称
+ * 课程id
*/
- private String name;
- /**
- * 视频封面
- */
- private String cover;
- /**
- * 视频简介
- */
- private String introduction;
- /**
- * 视频地址
- */
- private String videos;
+ @TableField("courseId")
+ private Integer courseId;
/**
* 可得积分
*/
- private String integral;
+ @TableField("integral")
+ private Integer integral;
/**
* 状态(1=正常,2=冻结,3=删除)
*/
+ @TableField("state")
private Integer state;
/**
* 添加时间
*/
+ @TableField("insertTime")
private Date insertTime;
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserBenefitsVideos.java b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserBenefitsVideos.java
new file mode 100644
index 0000000..251fc00
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/entity/UserBenefitsVideos.java
@@ -0,0 +1,48 @@
+package com.dsh.activity.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 9:12
+ */
+@Data
+@TableName("t_user_benefits_videos")
+public class UserBenefitsVideos {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.INPUT)
+ private Long id;
+ /**
+ * 用户id
+ */
+ @TableField("appUserId")
+ private Integer appUserId;
+ /**
+ * 分类id
+ */
+ @TableField("benefitsVideoClassificationId")
+ private Integer benefitsVideoClassificationId;
+ /**
+ * 福利视频id
+ */
+ @TableField("benefitsVideosId")
+ private Integer benefitsVideosId;
+ /**
+ * 获取积分
+ */
+ @TableField("integral")
+ private Integer integral;
+ /**
+ * 添加时间
+ */
+ @TableField("insertTime")
+ private Date insertTime;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/UserIntegralChangesClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/UserIntegralChangesClient.java
new file mode 100644
index 0000000..6420526
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/UserIntegralChangesClient.java
@@ -0,0 +1,21 @@
+package com.dsh.activity.feignclient.account;
+
+import com.dsh.activity.feignclient.account.model.SaveUserIntegralChangesVo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 11:40
+ */
+@FeignClient("mb-cloud-account")
+public interface UserIntegralChangesClient {
+
+
+ /**
+ * 保存用户积分变动记录
+ * @param vo
+ */
+ @PostMapping("/userIntegralChanges/saveUserIntegralChanges")
+ void saveUserIntegralChanges(SaveUserIntegralChangesVo vo);
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/SaveUserIntegralChangesVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/SaveUserIntegralChangesVo.java
new file mode 100644
index 0000000..c76eebf
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/account/model/SaveUserIntegralChangesVo.java
@@ -0,0 +1,23 @@
+package com.dsh.activity.feignclient.account.model;
+
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 11:26
+ */
+@Data
+public class SaveUserIntegralChangesVo {
+ /**
+ * 用户id
+ */
+ private Integer appUserId;
+ /**
+ * 积分类型(1=赠送积分,2=兑换商品,3=完成课后练习,4=观看教学视频)
+ */
+ private Integer type;
+ /**
+ * 积分
+ */
+ private Integer integral;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/CourseClient.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/CourseClient.java
new file mode 100644
index 0000000..4373a9d
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/CourseClient.java
@@ -0,0 +1,21 @@
+package com.dsh.activity.feignclient.course;
+
+import com.dsh.activity.feignclient.course.model.Course;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 9:57
+ */
+@FeignClient("mb-cloud-course")
+public interface CourseClient {
+
+ /**
+ * 根据id获取课程详情
+ * @param id
+ * @return
+ */
+ @PostMapping("/course/queryCourseById")
+ Course queryCourseById(Integer id);
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/Course.java b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/Course.java
new file mode 100644
index 0000000..0273c7b
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/feignclient/course/model/Course.java
@@ -0,0 +1,48 @@
+package com.dsh.activity.feignclient.course.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 9:58
+ */
+@Data
+public class Course {
+ private Integer id;
+ /**
+ * 课程名称
+ */
+ private String name;
+ /**
+ * 类型(1=课后练习,2=运动教学视频,3=器材教学视频)
+ */
+ private Integer type;
+ /**
+ * 介绍
+ */
+ private String introduce;
+ /**
+ * 封面图
+ */
+ private String coverDrawing;
+ /**
+ * 介绍图
+ */
+ private String introductionDrawing;
+ /**
+ * 课程视频
+ */
+ private String courseVideo;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date insertTime;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideoClassificationMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideoClassificationMapper.java
new file mode 100644
index 0000000..a7c8261
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideoClassificationMapper.java
@@ -0,0 +1,11 @@
+package com.dsh.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.activity.entity.BenefitsVideoClassification;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:30
+ */
+public interface BenefitsVideoClassificationMapper extends BaseMapper<BenefitsVideoClassification> {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java
index eaa063c..6d94acb 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/BenefitsVideosMapper.java
@@ -1,7 +1,12 @@
package com.dsh.activity.mapper;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsh.activity.entity.BenefitsVideos;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
/**
* <p>
@@ -13,4 +18,15 @@
*/
public interface BenefitsVideosMapper extends BaseMapper<BenefitsVideos> {
+
+ /**
+ * 获取福利课程列表
+ * @param uid
+ * @param classificationId
+ * @param pageSize
+ * @param pageNo
+ * @return
+ */
+ List<Map<String, Object>> queryBenefitsVideosList(@Param("uid") Integer uid, @Param("classificationId") Integer classificationId,
+ @Param("pageSize") Integer pageSize, @Param("pageNo") Integer pageNo);
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserBenefitsVideosMapper.java b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserBenefitsVideosMapper.java
new file mode 100644
index 0000000..fa8ce72
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/mapper/UserBenefitsVideosMapper.java
@@ -0,0 +1,11 @@
+package com.dsh.activity.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.activity.entity.UserBenefitsVideos;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 9:14
+ */
+public interface UserBenefitsVideosMapper extends BaseMapper<UserBenefitsVideos> {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideoClassificationListVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideoClassificationListVo.java
new file mode 100644
index 0000000..67f9692
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideoClassificationListVo.java
@@ -0,0 +1,22 @@
+package com.dsh.activity.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:57
+ */
+@Data
+@ApiModel
+public class BenefitsVideoClassificationListVo {
+ @ApiModelProperty("数据id")
+ private Integer id;
+ @ApiModelProperty("分类名称")
+ private String name;
+ @ApiModelProperty("视频列表")
+ private List<BenefitsVideosListVo> list;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideosInfoVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideosInfoVo.java
new file mode 100644
index 0000000..94886fd
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideosInfoVo.java
@@ -0,0 +1,30 @@
+package com.dsh.activity.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 10:36
+ */
+@Data
+@ApiModel
+public class BenefitsVideosInfoVo {
+ @ApiModelProperty("数据id")
+ private Integer id;
+ @ApiModelProperty("视频名称")
+ private String name;
+ @ApiModelProperty("封面图")
+ private String cover;
+ @ApiModelProperty("视频简介")
+ private String introduce;
+ @ApiModelProperty("视频介绍")
+ private String introductionDrawing;
+ @ApiModelProperty("视频地址")
+ private String courseVideo;
+ @ApiModelProperty("积分")
+ private Integer integral;
+ @ApiModelProperty("学习状态(0=未学习,1=已学习)")
+ private Integer study;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideosListVo.java b/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideosListVo.java
new file mode 100644
index 0000000..be41431
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/model/BenefitsVideosListVo.java
@@ -0,0 +1,26 @@
+package com.dsh.activity.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:56
+ */
+@Data
+@ApiModel
+public class BenefitsVideosListVo {
+ @ApiModelProperty("数据id")
+ private Integer id;
+ @ApiModelProperty("视频名称")
+ private String name;
+ @ApiModelProperty("封面图")
+ private String cover;
+ @ApiModelProperty("视频简介")
+ private String introduce;
+ @ApiModelProperty("积分")
+ private Integer integral;
+ @ApiModelProperty("学习状态(0=未学习,1=已学习)")
+ private Integer study;
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java
index 4727bae..b49ec9d 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/BenefitsVideosService.java
@@ -2,6 +2,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsh.activity.entity.BenefitsVideos;
+import com.dsh.activity.model.BenefitsVideoClassificationListVo;
+import com.dsh.activity.model.BenefitsVideosInfoVo;
+import com.dsh.activity.model.BenefitsVideosListVo;
+
+import java.util.List;
/**
* <p>
@@ -13,4 +18,43 @@
*/
public interface BenefitsVideosService extends IService<BenefitsVideos> {
+
+ /**
+ * 获取福利视频分类列表数据
+ * @param uid
+ * @param search
+ * @return
+ * @throws Exception
+ */
+ List<BenefitsVideoClassificationListVo> queryClassificationBenefitsVideosList(Integer uid, Integer position, String search) throws Exception;
+
+
+ /**
+ * 获取福利视频列表
+ * @param uid
+ * @param classificationId
+ * @param pageSize
+ * @param pageNo
+ * @return
+ * @throws Exception
+ */
+ List<BenefitsVideosListVo> queryBenefitsVideosList(Integer uid, Integer classificationId, Integer pageSize, Integer pageNo) throws Exception;
+
+
+ /**
+ * 获取福利视频详情
+ * @param uid
+ * @param id
+ * @return
+ * @throws Exception
+ */
+ BenefitsVideosInfoVo queryBenefitsVideosInfo(Integer uid, Integer id) throws Exception;
+
+
+ /**
+ * 视频观看完毕后获得奖励
+ * @param id
+ * @throws Exception
+ */
+ void receiveAward(Integer uid, Integer id) throws Exception;
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/IBenefitsVideoClassificationService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/IBenefitsVideoClassificationService.java
new file mode 100644
index 0000000..a6b909d
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/IBenefitsVideoClassificationService.java
@@ -0,0 +1,11 @@
+package com.dsh.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.entity.BenefitsVideoClassification;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:31
+ */
+public interface IBenefitsVideoClassificationService extends IService<BenefitsVideoClassification> {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/IUserBenefitsVideosService.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/IUserBenefitsVideosService.java
new file mode 100644
index 0000000..bf1b870
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/IUserBenefitsVideosService.java
@@ -0,0 +1,11 @@
+package com.dsh.activity.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.activity.entity.UserBenefitsVideos;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 9:15
+ */
+public interface IUserBenefitsVideosService extends IService<UserBenefitsVideos> {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideoClassificationServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideoClassificationServiceImpl.java
new file mode 100644
index 0000000..9369d4e
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideoClassificationServiceImpl.java
@@ -0,0 +1,15 @@
+package com.dsh.activity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.BenefitsVideoClassification;
+import com.dsh.activity.mapper.BenefitsVideoClassificationMapper;
+import com.dsh.activity.service.IBenefitsVideoClassificationService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:31
+ */
+@Service
+public class BenefitsVideoClassificationServiceImpl extends ServiceImpl<BenefitsVideoClassificationMapper, BenefitsVideoClassification> implements IBenefitsVideoClassificationService {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java
index 1a7dc72..aad419a 100644
--- a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/BenefitsVideosServiceImpl.java
@@ -1,10 +1,33 @@
package com.dsh.activity.service.impl;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.BenefitsVideoClassification;
import com.dsh.activity.entity.BenefitsVideos;
+import com.dsh.activity.entity.UserBenefitsVideos;
+import com.dsh.activity.feignclient.account.UserIntegralChangesClient;
+import com.dsh.activity.feignclient.account.model.SaveUserIntegralChangesVo;
+import com.dsh.activity.feignclient.course.CourseClient;
+import com.dsh.activity.feignclient.course.model.Course;
import com.dsh.activity.mapper.BenefitsVideosMapper;
+import com.dsh.activity.model.BenefitsVideoClassificationListVo;
+import com.dsh.activity.model.BenefitsVideosInfoVo;
+import com.dsh.activity.model.BenefitsVideosListVo;
import com.dsh.activity.service.BenefitsVideosService;
+import com.dsh.activity.service.IBenefitsVideoClassificationService;
+import com.dsh.activity.service.IUserBenefitsVideosService;
+import com.dsh.activity.util.ToolUtil;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* <p>
@@ -17,4 +40,139 @@
@Service
public class BenefitsVideosServiceImpl extends ServiceImpl<BenefitsVideosMapper, BenefitsVideos> implements BenefitsVideosService {
+ @Autowired
+ private IBenefitsVideoClassificationService benefitsVideoClassificationService;
+
+ @Autowired
+ private IUserBenefitsVideosService userBenefitsVideosService;
+
+ @Resource
+ private CourseClient courseClient;
+
+ @Resource
+ private UserIntegralChangesClient userIntegralChangesClient;
+
+
+
+
+
+ /**
+ * 获取福利视频分类列表数据
+ * @param uid
+ * @param search
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public List<BenefitsVideoClassificationListVo> queryClassificationBenefitsVideosList(Integer uid, Integer position, String search) throws Exception {
+ QueryWrapper<BenefitsVideoClassification> wrapper = new QueryWrapper<BenefitsVideoClassification>().eq("position", position);
+ if(ToolUtil.isNotEmpty(search)){
+ wrapper.like("name", search);
+ }
+ List<BenefitsVideoClassification> list = benefitsVideoClassificationService.list(wrapper.orderByAsc("sort"));
+ List<UserBenefitsVideos> userBenefitsVideos = userBenefitsVideosService.list(new QueryWrapper<UserBenefitsVideos>().eq("appUserId", uid));
+ List<Integer> collect = userBenefitsVideos.stream().map(UserBenefitsVideos::getBenefitsVideosId).collect(Collectors.toList());
+
+ List<BenefitsVideoClassificationListVo> listVos = new ArrayList<>();
+ for (BenefitsVideoClassification benefitsVideoClassification : list) {
+ BenefitsVideoClassificationListVo benefitsVideoClassificationListVo = new BenefitsVideoClassificationListVo();
+ benefitsVideoClassificationListVo.setId(benefitsVideoClassification.getId());
+ benefitsVideoClassificationListVo.setName(benefitsVideoClassification.getName());
+
+ List<BenefitsVideos> list1 = this.list(new QueryWrapper<BenefitsVideos>().eq("state", 1).notIn("id", collect).orderByDesc("insertTime").last(" limit 4"));
+ List<BenefitsVideosListVo> lists = new ArrayList<>();
+ for (BenefitsVideos benefitsVideos : list1) {
+ Integer courseId = benefitsVideos.getCourseId();
+ Course course = courseClient.queryCourseById(courseId);
+ BenefitsVideosListVo benefitsVideosListVo = new BenefitsVideosListVo();
+ benefitsVideosListVo.setId(benefitsVideos.getId());
+ benefitsVideosListVo.setName(course.getName());
+ benefitsVideosListVo.setCover(course.getCoverDrawing());
+ benefitsVideosListVo.setIntroduce(course.getIntroduce());
+ lists.add(benefitsVideosListVo);
+ }
+ benefitsVideoClassificationListVo.setList(lists);
+ listVos.add(benefitsVideoClassificationListVo);
+ }
+ return listVos;
+ }
+
+
+ @Override
+ public List<BenefitsVideosListVo> queryBenefitsVideosList(Integer uid, Integer classificationId, Integer pageSize, Integer pageNo) throws Exception {
+ pageSize = (pageSize - 1) * pageNo;
+ List<Map<String, Object>> benefitsVideos = this.baseMapper.queryBenefitsVideosList(uid, classificationId, pageSize, pageNo);
+ List<BenefitsVideosListVo> lists = new ArrayList<>();
+ for (Map<String, Object> benefitsVideo : benefitsVideos) {
+ Integer id = Integer.valueOf(benefitsVideo.get("id").toString());
+ Integer courseId = Integer.valueOf(benefitsVideo.get("courseId").toString());
+ Integer integral = Integer.valueOf(benefitsVideo.get("integral").toString());
+ Integer study = Integer.valueOf(benefitsVideo.get("study").toString());
+ Course course = courseClient.queryCourseById(courseId);
+ BenefitsVideosListVo benefitsVideosListVo = new BenefitsVideosListVo();
+ benefitsVideosListVo.setId(id);
+ benefitsVideosListVo.setName(course.getName());
+ benefitsVideosListVo.setCover(course.getCoverDrawing());
+ benefitsVideosListVo.setIntroduce(course.getIntroduce());
+ benefitsVideosListVo.setIntegral(integral);
+ benefitsVideosListVo.setStudy(study);
+ lists.add(benefitsVideosListVo);
+ }
+ return lists;
+ }
+
+
+ /**
+ * 获取福利视频详情
+ * @param uid
+ * @param id
+ * @return
+ * @throws Exception
+ */
+ @Override
+ public BenefitsVideosInfoVo queryBenefitsVideosInfo(Integer uid, Integer id) throws Exception {
+ BenefitsVideos benefitsVideos = this.getById(id);
+ Integer courseId = benefitsVideos.getCourseId();
+ Course course = courseClient.queryCourseById(courseId);
+ BenefitsVideosInfoVo benefitsVideosInfoVo = new BenefitsVideosInfoVo();
+ benefitsVideosInfoVo.setId(id);
+ benefitsVideosInfoVo.setName(course.getName());
+ benefitsVideosInfoVo.setCover(course.getCoverDrawing());
+ benefitsVideosInfoVo.setIntroduce(course.getIntroduce());
+ benefitsVideosInfoVo.setIntroductionDrawing(course.getIntroductionDrawing());
+ benefitsVideosInfoVo.setCourseVideo(course.getCourseVideo());
+ benefitsVideosInfoVo.setIntegral(benefitsVideos.getIntegral());
+ UserBenefitsVideos one = userBenefitsVideosService.getOne(new QueryWrapper<UserBenefitsVideos>().eq("appUserId", uid).eq("benefitsVideosId", id));
+ benefitsVideosInfoVo.setStudy(null == one ? 0 : 1);
+ return benefitsVideosInfoVo;
+ }
+
+
+ /**
+ * 视频观看完毕后获得奖励
+ * @param uid
+ * @param id
+ * @throws Exception
+ */
+ @Override
+ public void receiveAward(Integer uid, Integer id) throws Exception {
+ BenefitsVideos benefitsVideos = this.getById(id);
+ UserBenefitsVideos one = userBenefitsVideosService.getOne(new QueryWrapper<UserBenefitsVideos>().eq("appUserId", uid).eq("benefitsVideosId", id));
+ if(null == one){
+ one = new UserBenefitsVideos();
+ one.setAppUserId(uid);
+ one.setBenefitsVideoClassificationId(benefitsVideos.getBenefitsVideoClassificationId());
+ one.setBenefitsVideosId(id);
+ one.setInsertTime(new Date());
+ one.setIntegral(benefitsVideos.getIntegral());
+ userBenefitsVideosService.save(one);
+
+ //添加积分
+ SaveUserIntegralChangesVo vo = new SaveUserIntegralChangesVo();
+ vo.setAppUserId(uid);
+ vo.setIntegral(benefitsVideos.getIntegral());
+ vo.setType(4);
+ userIntegralChangesClient.saveUserIntegralChanges(vo);
+ }
+ }
}
diff --git a/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserBenefitsVideosServiceImpl.java b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserBenefitsVideosServiceImpl.java
new file mode 100644
index 0000000..7a5eff8
--- /dev/null
+++ b/cloud-server-activity/src/main/java/com/dsh/activity/service/impl/UserBenefitsVideosServiceImpl.java
@@ -0,0 +1,15 @@
+package com.dsh.activity.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.activity.entity.UserBenefitsVideos;
+import com.dsh.activity.mapper.UserBenefitsVideosMapper;
+import com.dsh.activity.service.IUserBenefitsVideosService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/12 9:15
+ */
+@Service
+public class UserBenefitsVideosServiceImpl extends ServiceImpl<UserBenefitsVideosMapper, UserBenefitsVideos> implements IUserBenefitsVideosService {
+}
diff --git a/cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java b/cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
index bb66dd0..7e0a34d 100644
--- a/cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
+++ b/cloud-server-activity/src/main/java/com/dsh/config/Sharding_jdbc/ShardingConfig.java
@@ -84,6 +84,15 @@
result2.getKeyGenerators().put("t_user_points_merchandise-snowflake", new AlgorithmConfiguration("SNOWFLAKE", new Properties()));
linkedList.add(result2);
+ //分片规则配置
+ ShardingRuleConfiguration result3 = new ShardingRuleConfiguration();
+ result3.getTables().add(getUserBenefitsVideosTableRuleConfiguration());
+ Properties props3 = new Properties();
+ props3.setProperty("algorithm-expression", "t_user_benefits_videos$->{appUserId % 5 + 1}");
+ result3.getShardingAlgorithms().put("t_user_benefits_videos-inline", new AlgorithmConfiguration("INLINE", props3));
+ result3.getKeyGenerators().put("t_user_benefits_videos-snowflake", new AlgorithmConfiguration("SNOWFLAKE", new Properties()));
+ linkedList.add(result3);
+
return linkedList;
}
@@ -111,4 +120,16 @@
return result;
}
+
+ /**
+ * 分片算法配置
+ * @return
+ */
+ private ShardingTableRuleConfiguration getUserBenefitsVideosTableRuleConfiguration() {
+ ShardingTableRuleConfiguration result = new ShardingTableRuleConfiguration("t_user_benefits_videos", "m_$->{0}.t_user_benefits_videos$->{1..5}");//30
+ result.setTableShardingStrategy(new StandardShardingStrategyConfiguration("appUserId", "t_user_benefits_videos-inline"));
+ result.setKeyGenerateStrategy(new KeyGenerateStrategyConfiguration("id", "t_user_benefits_videos-snowflake"));
+ return result;
+ }
+
}
diff --git a/cloud-server-activity/src/main/resources/mapper/BenefitsVideoClassificationMapper.xml b/cloud-server-activity/src/main/resources/mapper/BenefitsVideoClassificationMapper.xml
new file mode 100644
index 0000000..df28755
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/BenefitsVideoClassificationMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.activity.mapper.BenefitsVideoClassificationMapper">
+
+
+</mapper>
diff --git a/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml b/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml
index 8350761..a89bf74 100644
--- a/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml
+++ b/cloud-server-activity/src/main/resources/mapper/BenefitsVideosMapper.xml
@@ -3,4 +3,32 @@
<mapper namespace="com.dsh.activity.mapper.BenefitsVideosMapper">
+ <select id="queryBenefitsVideosList" resultType="map">
+ select * from (
+ (select
+ id,
+ courseId,
+ integral,
+ 0 as study
+ from t_benefits_videos where state = 1 and id not in (select benefitsVideosId from t_user_benefits_videos where appUserId = #{uid})
+ <if test="null != classificationId">
+ and benefitsVideoClassificationId = #{classificationId}
+ </if>
+ order by insertTime desc)
+
+ union all
+
+ (select
+ id,
+ courseId,
+ integral,
+ 1 as study
+ from t_benefits_videos where state = 1 and id in (select benefitsVideosId from t_user_benefits_videos where appUserId = #{uid})
+ <if test="null != classificationId">
+ and benefitsVideoClassificationId = #{classificationId}
+ </if>
+ order by insertTime desc)
+ ) as a limit #{pageSize}, #{pageNo}
+ </select>
+
</mapper>
diff --git a/cloud-server-activity/src/main/resources/mapper/UserBenefitsVideosMapper.xml b/cloud-server-activity/src/main/resources/mapper/UserBenefitsVideosMapper.xml
new file mode 100644
index 0000000..860436f
--- /dev/null
+++ b/cloud-server-activity/src/main/resources/mapper/UserBenefitsVideosMapper.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.dsh.activity.mapper.UserBenefitsVideosMapper">
+
+
+</mapper>
diff --git a/cloud-server-competition/src/main/java/com/dsh/CompetitionApplication.java b/cloud-server-competition/src/main/java/com/dsh/CompetitionApplication.java
index a5a0ac8..a464f60 100644
--- a/cloud-server-competition/src/main/java/com/dsh/CompetitionApplication.java
+++ b/cloud-server-competition/src/main/java/com/dsh/CompetitionApplication.java
@@ -9,6 +9,7 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
+import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.annotation.PostConstruct;
@@ -18,6 +19,7 @@
* @author jason
*/
@EnableSwagger2
+@EnableScheduling
@EnableFeignClients
@MBCloudApplication
@Import({WebConfig.class})
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java
index 69a7c85..f1c1c47 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/mapper/CompetitionMapper.java
@@ -29,4 +29,14 @@
List<CompetitionListVo> queryCompetitionList(@Param("cityCode") String cityCode, @Param("content") String content,
@Param("registerCondition") Integer registerCondition, @Param("heat") Integer heat);
+
+ /**
+ * 定时任务修改赛事状态
+ */
+ void taskSetStatusStart();
+
+
+
+ void taskSetStatusEnd();
+
}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionInfo.java b/cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionInfo.java
index 6ffed56..4bf4f7b 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionInfo.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/model/CompetitionInfo.java
@@ -59,4 +59,6 @@
private Integer apply;
@ApiModelProperty("报名参赛人员")
private List<ParticipantVo> participant;
+ @ApiModelProperty("状态(1=未开始,2=进行中,3=已结束,4=已取消)")
+ private Integer status;
}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/model/EditParticipant.java b/cloud-server-competition/src/main/java/com/dsh/competition/model/EditParticipant.java
index 3bb658e..d7ae2fe 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/model/EditParticipant.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/model/EditParticipant.java
@@ -1,7 +1,10 @@
package com.dsh.competition.model;
+import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
+
+import java.util.Date;
/**
* @author zhibing.pu
@@ -11,10 +14,19 @@
public class EditParticipant {
@ApiModelProperty(value = "数据id", dataType = "int", required = true)
private Integer id;
- @ApiModelProperty(value = "身高(CM)", dataType = "int", required = true)
+ @ApiModelProperty(value = "身高(CM)", dataType = "int", required = false)
private Integer height;
- @ApiModelProperty(value = "体重(KG)", dataType = "double", required = true)
+ @ApiModelProperty(value = "体重(KG)", dataType = "double", required = false)
private Double weight;
@ApiModelProperty(value = "联系电话", dataType = "string", required = false)
private String phone;
+ @ApiModelProperty(value = "姓名", dataType = "string", required = false)
+ private String name;
+ @ApiModelProperty(value = "生日", dataType = "string", required = false)
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date birthday;
+ @ApiModelProperty(value = "性别(1=男,2=女)", dataType = "int", required = false)
+ private Integer gender;
+ @ApiModelProperty(value = "身份证号码", dataType = "string", required = false)
+ private String idcard;
}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java
index 005e215..570cb53 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/CompetitionService.java
@@ -47,4 +47,10 @@
* @throws Exception
*/
ResultUtil paymentCompetition(Integer uid, PaymentCompetitionVo paymentCompetitionVo) throws Exception;
+
+
+ /**
+ * 定时任务修改赛事状态
+ */
+ void taskSetStatus();
}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
index cae574a..b0f2838 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/CompetitionServiceImpl.java
@@ -104,16 +104,18 @@
competitionInfo.setImgs(competition.getImgs());
competitionInfo.setName(competition.getName());
competitionInfo.setRegisterCondition(competition.getRegisterCondition());
- Store store = storeClient.queryStoreById(competition.getStoreId());
- competitionInfo.setStoreName(store.getName());
- competitionInfo.setStoreAddress(store.getAddress());
- competitionInfo.setStoreLon(store.getLon());
- competitionInfo.setStoreLat(store.getLat());
- competitionInfo.setStoreCoverDrawing(store.getCoverDrawing());
- if(ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)){
- Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat());
- double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
- competitionInfo.setDistance(wgs84);
+ if(null != competition.getStoreId()){
+ Store store = storeClient.queryStoreById(competition.getStoreId());
+ competitionInfo.setStoreName(store.getName());
+ competitionInfo.setStoreAddress(store.getAddress());
+ competitionInfo.setStoreLon(store.getLon());
+ competitionInfo.setStoreLat(store.getLat());
+ competitionInfo.setStoreCoverDrawing(store.getCoverDrawing());
+ if(ToolUtil.isNotEmpty(lon) && ToolUtil.isNotEmpty(lat)){
+ Map<String, Double> distance = GeodesyUtil.getDistance(lon + "," + lat, store.getLon() + "," + store.getLat());
+ double wgs84 = new BigDecimal(distance.get("WGS84")).divide(new BigDecimal(1000)).setScale(2, RoundingMode.HALF_EVEN).doubleValue();
+ competitionInfo.setDistance(wgs84);
+ }
}
competitionInfo.setRegisterEndTime(sdf.format(competition.getRegisterEndTime()));
competitionInfo.setStartTime(sdf.format(competition.getStartTime()));
@@ -127,11 +129,12 @@
competitionInfo.setIntroduction(competition.getIntroduction());
competitionInfo.setRegistrationNotes(competition.getRegistrationNotes());
competitionInfo.setApply(0);
- PaymentCompetition one = paymentCompetitionService.getOne(new QueryWrapper<PaymentCompetition>().eq("competitionId", id).eq("appUserId", uid).eq("payStatus", 2));
+ competitionInfo.setStatus(competition.getStatus());
+ PaymentCompetition one = paymentCompetitionService.getOne(new QueryWrapper<PaymentCompetition>().eq("competitionId", id).eq("appUserId", uid).ne("payStatus", 1).orderByDesc("insertTime").last(" limit 1"));
if(null != one){
competitionInfo.setApply(1);
List<ParticipantVo> participant = new ArrayList<>();
- List<UserCompetition> list = userCompetitionService.list(new QueryWrapper<UserCompetition>().eq("competitionId", id).eq("appUserId", uid));
+ List<UserCompetition> list = userCompetitionService.list(new QueryWrapper<UserCompetition>().eq("paymentCompetitionId", one.getId()));
List<Integer> collect = list.stream().map(UserCompetition::getParticipantId).collect(Collectors.toList());
List<Participant> participants = participantService.listByIds(collect);
SimpleDateFormat sdf_year = new SimpleDateFormat("yyyy");
@@ -145,6 +148,9 @@
participant.add(participantVo);
}
competitionInfo.setParticipant(participant);
+ if(one.getPayStatus() == 3){
+ competitionInfo.setStatus(4);
+ }
}
return competitionInfo;
}
@@ -369,4 +375,14 @@
}
return alipay;
}
+
+
+ /**
+ * 定时任务修改赛事状态
+ */
+ @Override
+ public void taskSetStatus() {
+ this.baseMapper.taskSetStatusStart();
+ this.baseMapper.taskSetStatusEnd();
+ }
}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
index 2e4e589..14bb0d3 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/ParticipantServiceImpl.java
@@ -12,6 +12,7 @@
import com.dsh.competition.model.ParticipantVo;
import com.dsh.competition.model.SaveParticipant;
import com.dsh.competition.service.IParticipantService;
+import com.dsh.competition.util.JuHeUtil;
import com.dsh.competition.util.ResultUtil;
import com.dsh.competition.util.ToolUtil;
import org.springframework.beans.BeanUtils;
@@ -53,6 +54,13 @@
if(null != one){
return ResultUtil.error("电话号码重复");
}
+ if(ToolUtil.isNotEmpty(addParticipant.getName()) && ToolUtil.isNotEmpty(addParticipant.getIdcard())){
+ Boolean aBoolean = JuHeUtil.idcardAuthentication(addParticipant.getIdcard(), addParticipant.getName());
+ if(!aBoolean){
+ return ResultUtil.error("身份证和姓名不匹配");
+ }
+ }
+
Participant participant = new Participant();
BeanUtils.copyProperties(addParticipant, participant);
participant.setAppUserId(uid);
@@ -106,6 +114,12 @@
if(null != one && one.getId().compareTo(editParticipant.getId()) != 0){
return ResultUtil.error("电话号码重复");
}
+ if(ToolUtil.isNotEmpty(editParticipant.getName()) && ToolUtil.isNotEmpty(editParticipant.getIdcard())){
+ Boolean aBoolean = JuHeUtil.idcardAuthentication(editParticipant.getIdcard(), editParticipant.getName());
+ if(!aBoolean){
+ return ResultUtil.error("身份证和姓名不匹配");
+ }
+ }
Participant participant = this.getById(editParticipant.getId());
participant.setHeight(editParticipant.getHeight());
participant.setWeight(editParticipant.getWeight());
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
index 6db453b..c2e3036 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/service/impl/PaymentCompetitionServiceImpl.java
@@ -135,6 +135,10 @@
participant.add(participantVo);
}
competitionInfo.setParticipant(participant);
+ competitionInfo.setStatus(competition.getStatus());
+ if(paymentCompetition.getPayStatus() == 3){
+ competitionInfo.setStatus(4);
+ }
return competitionInfo;
}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/util/JuHeUtil.java b/cloud-server-competition/src/main/java/com/dsh/competition/util/JuHeUtil.java
new file mode 100644
index 0000000..572ea37
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/util/JuHeUtil.java
@@ -0,0 +1,44 @@
+package com.dsh.competition.util;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.dsh.competition.util.httpClinet.HttpClientUtil;
+import com.dsh.competition.util.httpClinet.HttpResult;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 12:05
+ */
+public class JuHeUtil {
+
+
+ /**
+ * 校验实名认证
+ * @param idcard
+ * @param name
+ * @return
+ * @throws Exception
+ */
+ public static Boolean idcardAuthentication(String idcard, String name) throws Exception{
+ Map<String, Object> params = new HashMap<>();
+ params.put("idcard", idcard);
+ params.put("realname", name);
+ params.put("key", "29fec4bbe3108e4fbf52704e5a906fe0");
+ HttpResult httpResult = HttpClientUtil.pushHttpRequset("POST", "http://op.juhe.cn/idcard/query", params, null, "form");
+ if(httpResult.getCode() != 200){
+ return false;
+ }
+ JSONObject jsonObject = JSON.parseObject(httpResult.getData());
+ Integer error_code = jsonObject.getInteger("error_code");
+ if(0 == error_code){
+ JSONObject result = jsonObject.getJSONObject("result");
+ Integer res = result.getInteger("res");
+ return res == 1 ? true : false;
+ }
+ return false;
+ }
+
+}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
index 5a67746..e2c8a61 100644
--- a/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/util/PayMoneyUtil.java
@@ -41,13 +41,13 @@
*/
@Component
public class PayMoneyUtil {
- private String aliAppid = "";//支付宝appid
+ private String aliAppid = "2021004103650328";//支付宝appid
- private String appPrivateKey = "";//支付宝开发者应用私钥
+ private String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCSsBy+F6k1CTL4b0qQssuhf6x2aeqSn2eBmv0mJALK9iqRgA9EG0buYVnV/tsNGYvKCgX56onb+Cv+f9/TShZzp0FVGemIcgPhrjK0WW2RJBMq9EmPzc2x+7SkygKO1H6S3CwWhYdc7TCNL9OnFAHSEa+FfGNWXg0jM0mSXI7/me8icbWZd5mdiLTV+OWx5ONAE0GfVPhUPnb9faunE6gvZCamZnS+H6ACzzidO7ksVkZq5PBsI3Jew2oAcAJSktsljMZNqDrVknzUbvKBXSw80zZD66i5twx8+8els5VLo6qu9PD80l+K430r2eMqxzXm9mRXZSPSxoOm5c+0cNiHAgMBAAECggEAR+EIlJWfkp+JXHecgD88zUx0xCmuil6WJ8o81h27SJ1LyrSHxoXfQhxuGxChYk/sUfqLZyVonGOFm1Yp5a1eRxnkR8FE0FmeUU49Bmbz67VTty6xhUgBzX9by4w5qKezxl8hM4AHDqAjtGuFOU/yfG+yJKUJQF8h7OfK22+DmveglMt+W8buCf+IJahMyxYLWnA5eG8X1KjOC5PnpQEEBBB3g8fJpdbcoUteGGKzGhkSMKXuM//m2T8bU1sNZytnV+rDblg4E9IZIJwhory7WBxDzykEGpbM+RwJ6E6bAp6MXMUKbed1Uf/40d8C5yItWhjUh1a+ZDS0XbsMP+C/IQKBgQDmYhUr5wcqNQHqpKZWd0l/UZyR+Ykjk7WNvWFQIoMZmCWCGcepyQHAdXpk29evgTqcF9v9dlGDc7waFc93L2uxEYOaSk5UK8Sf6yoXHDocKwauY5DDvAuyy2b9QQDNqisi/MN872RaefBILz/DYN2ZbTtp8i/udSaRl01h6EXQfwKBgQCi/5+eIEcQZTa4zhq5CXKKVbcU2Y8uVsM1tgLaxOwQFr0Xd0ckQiJdkN7qhjgeSuOz0BOXo1xovzN4ZIKISB5sZDadgQCZi7O1YeKc8ElLPnV/WfKBGAxSBpURyMUOYH1mno5QG+QiGmTgH0/OhmqWfp+dVWHNwlx0EwMOpCBz+QKBgBRuVlpSXrxLfyQD/gxk/8uevTfk3VieXNd5GAw3Q1EdwRXMm3xfKxyaToRrSrFx0HTPWN8dgxUZSnE1xfRX7EEDwJwKQvAMAZ/9BvqNskmVNz537fqtzovIphWHkj6q/LBZoiyOPmQXtEtyhUEacgyNN1up8r4+/XCj7mTkaGyZAoGBAIx+GG6LE7WmB8yymYX0Bq4Fw5BNFYSzc/7PqxY1teMINmQLg15VQpmzTPCIT8aMdkd+ieSiAfynEQ4sU/ZzcwWqOwj3MDUonPUyMcljs0kPxObH+KYcvEHXOpXhnzgNIwlYkQGriK98YIZtdrRkV2rwKVPLTEm1xUqnOHNeNDrBAoGASnewOvqzZQVnzbGYur7nbEBQaMKWP2IYKozr57+EHQ40QFyTzFUx+jhxnQ2TIoXQEbozNp11eWGm9TZenHxUbOZmAmPKGq5DQzBgwj/V9QPNPpulCEkgjEqIn0gdCNaEilZXTpdsLPxmZ/J9IxGJt+y/5OYhbIwfSS9gbvVEook=";//支付宝开发者应用私钥
- private String alipayPublicKey = "";//支付宝应用公钥
+ private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwRiMpvwg288WxCwJTBxeqQcFlkZR1p+hZn3/GshrYgRKhGu34IfnRbEnb70YJBq0N1AmdJRU4tYMS1qqFcvKdXnUrdPz+yx4F/uWv+Vz7ftzAEZ1JJh1s9IhJ1ayE4NNWBczj12cIrinUcIHNoITmPFSpcizk9jGnzZZDK4u2oZQEontseu6QyLoc4bBXgy3J1Cux7Q3kO0m3unr0j14PSOAY6kMmgPOyAyuP5Vl655OFJz1x4YDiXs6c+fHLzEZh+Bmm4kCedE7PeJ69xpxSo+i0qia9mhiR4L3LmX7yAzDffHfSQHdxzN0UR34ZF9ChZi/tGOeGABbC35tzGiWWQIDAQAB";//支付宝应用公钥
- private String alipay_public_key = "";//支付宝支付公钥
+ private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥
private String appid = "";//微信appid
@@ -73,83 +73,83 @@
* 支付宝支付
*/
public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl){
- //构造client
- CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
- //设置网关地址
- certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
- //设置应用Id
- certAlipayRequest.setAppId(aliAppid);
- //设置应用私钥
- certAlipayRequest.setPrivateKey(appPrivateKey);
- //设置请求格式,固定值json
- certAlipayRequest.setFormat("json");
- //设置字符集
- certAlipayRequest.setCharset("UTF-8");
- //设置签名类型
- certAlipayRequest.setSignType("RSA2");
- //设置应用公钥证书路径
- certAlipayRequest.setCertPath(app_cert_path);
- //设置支付宝公钥证书路径
- certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
- //设置支付宝根证书路径
- certAlipayRequest.setRootCertPath(alipay_root_cert_path);
- //构造client
- AlipayClient alipayClient = null;
- try {
- alipayClient = new DefaultAlipayClient(certAlipayRequest);
- } catch (AlipayApiException e) {
- e.printStackTrace();
- }
- //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
- AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
- //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
- AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
- model.setBody(body);
- model.setSubject (subject);
- model.setOutTradeNo (outTradeNo);
- model.setTimeoutExpress ("30m" );
- model.setTotalAmount (amount);
- model.setProductCode ( "QUICK_MSECURITY_PAY" );
- model.setPassbackParams(passbackParams);//自定义参数
- request.setBizModel ( model );
- request.setNotifyUrl (callbackPath + notifyUrl);
- try {
- //这里和普通的接口调用不同,使用的是sdkExecute
- AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
- Map<String, String> map = new HashMap<>();
- map.put("orderString", response.getBody());
- System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
- return ResultUtil.success(map);
- } catch (AlipayApiException e ) {
- e.printStackTrace();
- }
-
-
-// //实例化客户端
-// AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
-// //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
-// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
-// //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
-// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
-// model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
-// model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。
-// model.setOutTradeNo(outTradeNo);//商户网站唯一订单号
-// model.setTimeoutExpress("30m");
-// model.setTotalAmount(amount);//付款金额
-// model.setProductCode("QUICK_MSECURITY_PAY");
-// model.setPassbackParams(passbackParams);//自定义参数
-// request.setBizModel(model);
-// request.setNotifyUrl(callbackPath + notifyUrl);
+// //构造client
+// CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
+// //设置网关地址
+// certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
+// //设置应用Id
+// certAlipayRequest.setAppId(aliAppid);
+// //设置应用私钥
+// certAlipayRequest.setPrivateKey(appPrivateKey);
+// //设置请求格式,固定值json
+// certAlipayRequest.setFormat("json");
+// //设置字符集
+// certAlipayRequest.setCharset("UTF-8");
+// //设置签名类型
+// certAlipayRequest.setSignType("RSA2");
+// //设置应用公钥证书路径
+// certAlipayRequest.setCertPath(app_cert_path);
+// //设置支付宝公钥证书路径
+// certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
+// //设置支付宝根证书路径
+// certAlipayRequest.setRootCertPath(alipay_root_cert_path);
+// //构造client
+// AlipayClient alipayClient = null;
// try {
+// alipayClient = new DefaultAlipayClient(certAlipayRequest);
+// } catch (AlipayApiException e) {
+// e.printStackTrace();
+// }
+// //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
+// //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
+// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
+// model.setBody(body);
+// model.setSubject (subject);
+// model.setOutTradeNo (outTradeNo);
+// model.setTimeoutExpress ("30m" );
+// model.setTotalAmount (amount);
+// model.setProductCode ( "QUICK_MSECURITY_PAY" );
+// model.setPassbackParams(passbackParams);//自定义参数
+// request.setBizModel ( model );
+// request.setNotifyUrl (callbackPath + notifyUrl);
+// try {
// //这里和普通的接口调用不同,使用的是sdkExecute
// AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
// Map<String, String> map = new HashMap<>();
// map.put("orderString", response.getBody());
// System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
// return ResultUtil.success(map);
-// } catch (AlipayApiException e) {
+// } catch (AlipayApiException e ) {
// e.printStackTrace();
// }
+
+
+ //实例化客户端
+ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
+ //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+ AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
+ //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
+ AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
+ model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
+ model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。
+ model.setOutTradeNo(outTradeNo);//商户网站唯一订单号
+ model.setTimeoutExpress("30m");
+ model.setTotalAmount(amount);//付款金额
+ model.setProductCode("QUICK_MSECURITY_PAY");
+ model.setPassbackParams(passbackParams);//自定义参数
+ request.setBizModel(model);
+ request.setNotifyUrl(callbackPath + notifyUrl);
+ try {
+ //这里和普通的接口调用不同,使用的是sdkExecute
+ AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
+ Map<String, String> map = new HashMap<>();
+ map.put("orderString", response.getBody());
+ System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
+ return ResultUtil.success(map);
+ } catch (AlipayApiException e) {
+ e.printStackTrace();
+ }
return null;
}
diff --git a/cloud-server-competition/src/main/java/com/dsh/competition/util/TaskUtil.java b/cloud-server-competition/src/main/java/com/dsh/competition/util/TaskUtil.java
new file mode 100644
index 0000000..73a09f3
--- /dev/null
+++ b/cloud-server-competition/src/main/java/com/dsh/competition/util/TaskUtil.java
@@ -0,0 +1,31 @@
+package com.dsh.competition.util;
+
+import com.dsh.competition.service.CompetitionService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 8:39
+ */
+@Component
+public class TaskUtil {
+
+ @Autowired
+ private CompetitionService competitionService;
+
+
+ /**
+ * 每隔一分钟去处理的定时任务
+ */
+ @Scheduled(fixedRate = 60000)
+ public void taskMinute(){
+ try {
+ //定时修改赛事状态
+ competitionService.taskSetStatus();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml b/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml
index df40070..dad9994 100644
--- a/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml
+++ b/cloud-server-competition/src/main/resources/mapper/CompetitionMapper.xml
@@ -35,4 +35,14 @@
order by aa.heat desc
</if>
</select>
+
+
+ <update id="taskSetStatusStart">
+ update t_competition set status = 2 where status = 1 and state = 1 and auditStatus = 2 and now() between startTime and endTime
+ </update>
+
+
+ <update id="taskSetStatusEnd">
+ update t_competition set status = 3 where status = 2 and state = 1 and auditStatus = 2 and now() >= endTime
+ </update>
</mapper>
diff --git a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
index a6579c8..30ff749 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/controller/CourseController.java
@@ -242,4 +242,21 @@
e.printStackTrace();
}
}
+
+
+ /**
+ * 根据id获取课程数据
+ * @param id
+ * @return
+ */
+ @ResponseBody
+ @PostMapping("/course/queryCourseById")
+ public TCourse queryCourseById(@RequestBody Integer id){
+ try {
+ return courseService.getById(id);
+ }catch (Exception e){
+ e.printStackTrace();
+ return null;
+ }
+ }
}
diff --git a/cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java b/cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java
index c499789..f29e090 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/entity/TCourse.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -70,6 +71,7 @@
* 添加时间
*/
@TableField("insertTime")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date insertTime;
diff --git a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageList.java b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageList.java
index 847cb56..bd9c817 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageList.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/model/CoursePackageList.java
@@ -17,7 +17,7 @@
private String lat;
@ApiModelProperty(value = "课程类型id", dataType = "int", required = false)
private Integer coursePackageTypeId;
- @ApiModelProperty(value = "门店id", dataType = "int", required = false)
+ @ApiModelProperty(value = "门店id", dataType = "int", required = true)
private Integer storeId;
@ApiModelProperty(value = "搜索内容", dataType = "string", required = false)
private String search;
diff --git a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
index 39debe3..656bdf7 100644
--- a/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
+++ b/cloud-server-course/src/main/java/com/dsh/course/util/PayMoneyUtil.java
@@ -42,13 +42,13 @@
*/
@Component
public class PayMoneyUtil {
- private String aliAppid = "";//支付宝appid
+ private String aliAppid = "2021004103650328";//支付宝appid
- private String appPrivateKey = "";//支付宝开发者应用私钥
+ private String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCSsBy+F6k1CTL4b0qQssuhf6x2aeqSn2eBmv0mJALK9iqRgA9EG0buYVnV/tsNGYvKCgX56onb+Cv+f9/TShZzp0FVGemIcgPhrjK0WW2RJBMq9EmPzc2x+7SkygKO1H6S3CwWhYdc7TCNL9OnFAHSEa+FfGNWXg0jM0mSXI7/me8icbWZd5mdiLTV+OWx5ONAE0GfVPhUPnb9faunE6gvZCamZnS+H6ACzzidO7ksVkZq5PBsI3Jew2oAcAJSktsljMZNqDrVknzUbvKBXSw80zZD66i5twx8+8els5VLo6qu9PD80l+K430r2eMqxzXm9mRXZSPSxoOm5c+0cNiHAgMBAAECggEAR+EIlJWfkp+JXHecgD88zUx0xCmuil6WJ8o81h27SJ1LyrSHxoXfQhxuGxChYk/sUfqLZyVonGOFm1Yp5a1eRxnkR8FE0FmeUU49Bmbz67VTty6xhUgBzX9by4w5qKezxl8hM4AHDqAjtGuFOU/yfG+yJKUJQF8h7OfK22+DmveglMt+W8buCf+IJahMyxYLWnA5eG8X1KjOC5PnpQEEBBB3g8fJpdbcoUteGGKzGhkSMKXuM//m2T8bU1sNZytnV+rDblg4E9IZIJwhory7WBxDzykEGpbM+RwJ6E6bAp6MXMUKbed1Uf/40d8C5yItWhjUh1a+ZDS0XbsMP+C/IQKBgQDmYhUr5wcqNQHqpKZWd0l/UZyR+Ykjk7WNvWFQIoMZmCWCGcepyQHAdXpk29evgTqcF9v9dlGDc7waFc93L2uxEYOaSk5UK8Sf6yoXHDocKwauY5DDvAuyy2b9QQDNqisi/MN872RaefBILz/DYN2ZbTtp8i/udSaRl01h6EXQfwKBgQCi/5+eIEcQZTa4zhq5CXKKVbcU2Y8uVsM1tgLaxOwQFr0Xd0ckQiJdkN7qhjgeSuOz0BOXo1xovzN4ZIKISB5sZDadgQCZi7O1YeKc8ElLPnV/WfKBGAxSBpURyMUOYH1mno5QG+QiGmTgH0/OhmqWfp+dVWHNwlx0EwMOpCBz+QKBgBRuVlpSXrxLfyQD/gxk/8uevTfk3VieXNd5GAw3Q1EdwRXMm3xfKxyaToRrSrFx0HTPWN8dgxUZSnE1xfRX7EEDwJwKQvAMAZ/9BvqNskmVNz537fqtzovIphWHkj6q/LBZoiyOPmQXtEtyhUEacgyNN1up8r4+/XCj7mTkaGyZAoGBAIx+GG6LE7WmB8yymYX0Bq4Fw5BNFYSzc/7PqxY1teMINmQLg15VQpmzTPCIT8aMdkd+ieSiAfynEQ4sU/ZzcwWqOwj3MDUonPUyMcljs0kPxObH+KYcvEHXOpXhnzgNIwlYkQGriK98YIZtdrRkV2rwKVPLTEm1xUqnOHNeNDrBAoGASnewOvqzZQVnzbGYur7nbEBQaMKWP2IYKozr57+EHQ40QFyTzFUx+jhxnQ2TIoXQEbozNp11eWGm9TZenHxUbOZmAmPKGq5DQzBgwj/V9QPNPpulCEkgjEqIn0gdCNaEilZXTpdsLPxmZ/J9IxGJt+y/5OYhbIwfSS9gbvVEook=";//支付宝开发者应用私钥
- private String alipayPublicKey = "";//支付宝应用公钥
+ private String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwRiMpvwg288WxCwJTBxeqQcFlkZR1p+hZn3/GshrYgRKhGu34IfnRbEnb70YJBq0N1AmdJRU4tYMS1qqFcvKdXnUrdPz+yx4F/uWv+Vz7ftzAEZ1JJh1s9IhJ1ayE4NNWBczj12cIrinUcIHNoITmPFSpcizk9jGnzZZDK4u2oZQEontseu6QyLoc4bBXgy3J1Cux7Q3kO0m3unr0j14PSOAY6kMmgPOyAyuP5Vl655OFJz1x4YDiXs6c+fHLzEZh+Bmm4kCedE7PeJ69xpxSo+i0qia9mhiR4L3LmX7yAzDffHfSQHdxzN0UR34ZF9ChZi/tGOeGABbC35tzGiWWQIDAQAB";//支付宝应用公钥
- private String alipay_public_key = "";//支付宝支付公钥
+ private String alipay_public_key = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmu8n/4yTHWbn7VOrNc9OsLtDL1bEQ8gC1dHkj8Wy5z0mkaOsjJRIG/28ze12M0V8jdCKuuDr5Z1OPKiqf+XO3ypguEh+mYUVMBM/cZodDFQfTY1TKLWjvQCuaqlA+QUTCK6f7T7stsgyQ1o9Jj0rXZDz6PM4QHSTzjrLIBaeqM5WIBvH+fy/X+QG5Utd+/UT0kc0JyvuKhZ65yVUd/C9VcwJJAPliRsAQNrqYterwAJ9zvw9tF11wj9W0XgJ8Ccu4x3gR1vrlLRJJo/OA97RmxPQ+5hSacWQZCUd1dwiBq+YCrKVHGTj14izRHXrLc0yBlRXo7tBOIqcy3IsvKVthQIDAQAB";//支付宝支付公钥
private String appid = "";//微信appid
@@ -74,83 +74,83 @@
* 支付宝支付
*/
public ResultUtil alipay(String body, String subject, String passbackParams, String outTradeNo, String amount, String notifyUrl){
- //构造client
- CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
- //设置网关地址
- certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
- //设置应用Id
- certAlipayRequest.setAppId(aliAppid);
- //设置应用私钥
- certAlipayRequest.setPrivateKey(appPrivateKey);
- //设置请求格式,固定值json
- certAlipayRequest.setFormat("json");
- //设置字符集
- certAlipayRequest.setCharset("UTF-8");
- //设置签名类型
- certAlipayRequest.setSignType("RSA2");
- //设置应用公钥证书路径
- certAlipayRequest.setCertPath(app_cert_path);
- //设置支付宝公钥证书路径
- certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
- //设置支付宝根证书路径
- certAlipayRequest.setRootCertPath(alipay_root_cert_path);
- //构造client
- AlipayClient alipayClient = null;
- try {
- alipayClient = new DefaultAlipayClient(certAlipayRequest);
- } catch (AlipayApiException e) {
- e.printStackTrace();
- }
- //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
- AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
- //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
- AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
- model.setBody(body);
- model.setSubject (subject);
- model.setOutTradeNo (outTradeNo);
- model.setTimeoutExpress ("30m" );
- model.setTotalAmount (amount);
- model.setProductCode ( "QUICK_MSECURITY_PAY" );
- model.setPassbackParams(passbackParams);//自定义参数
- request.setBizModel ( model );
- request.setNotifyUrl (callbackPath + notifyUrl);
- try {
- //这里和普通的接口调用不同,使用的是sdkExecute
- AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
- Map<String, String> map = new HashMap<>();
- map.put("orderString", response.getBody());
- System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
- return ResultUtil.success(map);
- } catch (AlipayApiException e ) {
- e.printStackTrace();
- }
-
-
-// //实例化客户端
-// AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
-// //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
-// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
-// //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
-// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
-// model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
-// model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。
-// model.setOutTradeNo(outTradeNo);//商户网站唯一订单号
-// model.setTimeoutExpress("30m");
-// model.setTotalAmount(amount);//付款金额
-// model.setProductCode("QUICK_MSECURITY_PAY");
-// model.setPassbackParams(passbackParams);//自定义参数
-// request.setBizModel(model);
-// request.setNotifyUrl(callbackPath + notifyUrl);
+// //构造client
+// CertAlipayRequest certAlipayRequest = new CertAlipayRequest ();
+// //设置网关地址
+// certAlipayRequest.setServerUrl("https://openapi.alipay.com/gateway.do");
+// //设置应用Id
+// certAlipayRequest.setAppId(aliAppid);
+// //设置应用私钥
+// certAlipayRequest.setPrivateKey(appPrivateKey);
+// //设置请求格式,固定值json
+// certAlipayRequest.setFormat("json");
+// //设置字符集
+// certAlipayRequest.setCharset("UTF-8");
+// //设置签名类型
+// certAlipayRequest.setSignType("RSA2");
+// //设置应用公钥证书路径
+// certAlipayRequest.setCertPath(app_cert_path);
+// //设置支付宝公钥证书路径
+// certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path);
+// //设置支付宝根证书路径
+// certAlipayRequest.setRootCertPath(alipay_root_cert_path);
+// //构造client
+// AlipayClient alipayClient = null;
// try {
+// alipayClient = new DefaultAlipayClient(certAlipayRequest);
+// } catch (AlipayApiException e) {
+// e.printStackTrace();
+// }
+// //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest ();
+// //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
+// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel ();
+// model.setBody(body);
+// model.setSubject (subject);
+// model.setOutTradeNo (outTradeNo);
+// model.setTimeoutExpress ("30m" );
+// model.setTotalAmount (amount);
+// model.setProductCode ( "QUICK_MSECURITY_PAY" );
+// model.setPassbackParams(passbackParams);//自定义参数
+// request.setBizModel ( model );
+// request.setNotifyUrl (callbackPath + notifyUrl);
+// try {
// //这里和普通的接口调用不同,使用的是sdkExecute
// AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
// Map<String, String> map = new HashMap<>();
// map.put("orderString", response.getBody());
// System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
// return ResultUtil.success(map);
-// } catch (AlipayApiException e) {
+// } catch (AlipayApiException e ) {
// e.printStackTrace();
// }
+
+
+ //实例化客户端
+ AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", aliAppid, appPrivateKey, "json", "UTF-8", alipay_public_key, "RSA2");
+ //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
+ AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
+ //SDK已经封装掉了公共参数,这里只需要传入业务参数。以下方法为sdk的model入参方式(model和biz_content同时存在的情况下取biz_content)。
+ AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
+ model.setBody(body);//对一笔交易的具体描述信息。如果是多种商品,请将商品描述字符串累加传给body。
+ model.setSubject(subject);//商品的标题/交易标题/订单标题/订单关键字等。
+ model.setOutTradeNo(outTradeNo);//商户网站唯一订单号
+ model.setTimeoutExpress("30m");
+ model.setTotalAmount(amount);//付款金额
+ model.setProductCode("QUICK_MSECURITY_PAY");
+ model.setPassbackParams(passbackParams);//自定义参数
+ request.setBizModel(model);
+ request.setNotifyUrl(callbackPath + notifyUrl);
+ try {
+ //这里和普通的接口调用不同,使用的是sdkExecute
+ AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
+ Map<String, String> map = new HashMap<>();
+ map.put("orderString", response.getBody());
+ System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
+ return ResultUtil.success(map);
+ } catch (AlipayApiException e) {
+ e.printStackTrace();
+ }
return null;
}
diff --git a/cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/AuthService.java b/cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/AuthService.java
index 3c84935..b1aba3f 100644
--- a/cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/AuthService.java
+++ b/cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/AuthService.java
@@ -40,7 +40,7 @@
// 签名无 not sign
if (StringUtils.isBlank(sign) || !sign.equals(signUrlEncode)) {
- return ResultUtil.sign();
+ return ResultUtil.sign(signUrl);
}
} catch (Exception e) {
e.printStackTrace();
diff --git a/cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/ResultUtil.java b/cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/ResultUtil.java
index 6894e2f..3a54146 100644
--- a/cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/ResultUtil.java
+++ b/cloud-server-gateway/src/main/java/cn/mb/cloud/gateway/auth/ResultUtil.java
@@ -182,4 +182,9 @@
return ResultUtil.getResult(ResultUtil.SIGN_ERROR, SIGN);
}
+
+ public static <T> ResultUtil<T> sign(String msg){
+ return ResultUtil.getResult(ResultUtil.SIGN_ERROR, msg);
+ }
+
}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
new file mode 100644
index 0000000..f4d73c3
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/BannerController.java
@@ -0,0 +1,56 @@
+package com.dsh.other.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.dsh.other.entity.Banner;
+import com.dsh.other.model.BannerVo;
+import com.dsh.other.service.IBannerService;
+import com.dsh.other.util.ResultUtil;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:48
+ */
+@RestController
+@RequestMapping("")
+public class BannerController {
+
+ @Autowired
+ private IBannerService bannerService;
+
+
+
+
+ @ResponseBody
+ @PostMapping("/base/banner/queryBannerList")
+ @ApiOperation(value = "获取banner数据", tags = {"APP-加入玩湃"})
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "位置(1=首页,2=首页底部,3=线上课得积分,4=看视频得奖励,5=常见问题)", name = "position", dataType = "int", required = true),
+ })
+ public ResultUtil<List<BannerVo>> queryBannerList(Integer position){
+ try {
+ List<Banner> list = bannerService.list(new QueryWrapper<Banner>().eq("position", position).eq("state", 1).orderByAsc("sort"));
+ List<BannerVo> list1 = new ArrayList<>();
+ for (Banner banner : list) {
+ BannerVo bannerVo = new BannerVo();
+ BeanUtils.copyProperties(banner, bannerVo);
+ list1.add(bannerVo);
+ }
+ return ResultUtil.success(list1);
+ }catch (Exception e){
+ e.printStackTrace();
+ return ResultUtil.runErr();
+ }
+ }
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/entity/Banner.java b/cloud-server-other/src/main/java/com/dsh/other/entity/Banner.java
new file mode 100644
index 0000000..a664590
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/entity/Banner.java
@@ -0,0 +1,53 @@
+package com.dsh.other.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:35
+ */
+@Data
+@TableName("t_banner")
+public class Banner {
+ /**
+ * 主键
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ /**
+ * 位置(1=首页,2=首页底部,3=线上课得积分,4=看视频得奖励,5=常见问题)
+ */
+ @TableField("position")
+ private Integer position;
+ /**
+ * 图片地址
+ */
+ @TableField("img")
+ private String img;
+ /**
+ * 跳转页面
+ */
+ @TableField("jumpPage")
+ private String jumpPage;
+ /**
+ * 排序
+ */
+ @TableField("sort")
+ private Integer sort;
+ /**
+ * 状态(1=正常,2=冻结,3=删除)
+ */
+ @TableField("state")
+ private Integer state;
+ /**
+ * 添加时间
+ */
+ @TableField("insertTime")
+ private Date insertTime;
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java b/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java
new file mode 100644
index 0000000..0f3cbeb
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/mapper/BannerMapper.java
@@ -0,0 +1,11 @@
+package com.dsh.other.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.dsh.other.entity.Banner;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:46
+ */
+public interface BannerMapper extends BaseMapper<Banner> {
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java b/cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java
new file mode 100644
index 0000000..bb95ea3
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/model/BannerVo.java
@@ -0,0 +1,20 @@
+package com.dsh.other.model;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:50
+ */
+@Data
+@ApiModel
+public class BannerVo {
+ @ApiModelProperty("数据id")
+ private Integer id;
+ @ApiModelProperty("图片路径")
+ private String img;
+ @ApiModelProperty("跳转页面")
+ private String jumpPage;
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java b/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java
new file mode 100644
index 0000000..cf7c7d5
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/IBannerService.java
@@ -0,0 +1,11 @@
+package com.dsh.other.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.dsh.other.entity.Banner;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:47
+ */
+public interface IBannerService extends IService<Banner> {
+}
diff --git a/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java b/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java
new file mode 100644
index 0000000..7982499
--- /dev/null
+++ b/cloud-server-other/src/main/java/com/dsh/other/service/impl/BannerServiceImpl.java
@@ -0,0 +1,15 @@
+package com.dsh.other.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.dsh.other.entity.Banner;
+import com.dsh.other.mapper.BannerMapper;
+import com.dsh.other.service.IBannerService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author zhibing.pu
+ * @date 2023/7/11 17:47
+ */
+@Service
+public class BannerServiceImpl extends ServiceImpl<BannerMapper, Banner> implements IBannerService {
+}
--
Gitblit v1.7.1