From 8d5465bb7b8c639fcd4ce8e988d42fdbc0236858 Mon Sep 17 00:00:00 2001 From: liuchuang <123456> Date: Wed, 24 Feb 2021 16:54:07 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E7=AD=BE=E5=88=B0=E6=8E=A5=E5=8F=A3=20init=201=E3=80=81?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=88=97=E8=A1=A8=EF=BC=88=E6=89=93=E5=8D=A1?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E6=B4=BB=E5=8A=A8=EF=BC=89=202=E3=80=81?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=B4=BB=E5=8A=A8=E7=AD=BE=E5=88=B0=E7=A0=81?= =?UTF-8?q?=203=E3=80=81=E8=8E=B7=E5=8F=96=E6=B4=BB=E5=8A=A8=E7=AD=BE?= =?UTF-8?q?=E5=88=B0=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApiWorkActSignInController.java | 75 ++++++++ .../esua/epdc/feign/ActInfoFeignClient.java | 39 +++- .../fallback/ActInfoFeignClientFallback.java | 20 +- .../esua/epdc/service/ActSignInService.java | 50 +++++ .../service/impl/ActSignInServiceImpl.java | 37 ++++ .../epdc/activity/ActSignInQrCodeDTO.java | 81 ++++++++ .../activity/form/ActSignInListFormDTO.java | 27 +++ .../activity/form/ActSignInRecordFormDTO.java | 34 ++++ .../result/ActSignInListResultDTO.java | 39 ++++ .../result/ActSignInQrCodeResultDTO.java | 21 +++ .../activity/result/ActSignInRecordsDTO.java | 44 +++++ .../result/ActSignInRecordsResultDTO.java | 25 +++ .../controller/ActSignInQrCodeController.java | 84 +++++++++ .../controller/AppActInfoController.java | 18 ++ .../AppActSignInQrCodeController.java | 62 ++++++ .../epdc/modules/activity/dao/ActInfoDao.java | 16 +- .../activity/dao/ActSignInQrCodeDao.java | 33 ++++ .../activity/dao/ActUserPointsLogDao.java | 31 ++- .../entity/ActSignInQrCodeEntity.java | 51 +++++ .../activity/service/ActInfoService.java | 12 ++ .../service/ActSignInQrCodeService.java | 119 ++++++++++++ .../service/ActUserPointsLogService.java | 13 ++ .../service/impl/ActInfoServiceImpl.java | 14 +- .../impl/ActSignInQrCodeServiceImpl.java | 177 ++++++++++++++++++ .../impl/ActUserPointsLogServiceImpl.java | 22 +++ .../epdc/modules/feign/OssFeignClient.java | 41 ++++ .../fallback/OssFeignClientFallback.java | 28 +++ .../resources/mapper/activity/ActInfoDao.xml | 18 ++ .../mapper/activity/ActSignInQrCodeDao.xml | 19 ++ .../mapper/activity/ActUserPointsLogDao.xml | 37 +++- 30 files changed, 1269 insertions(+), 18 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkActSignInController.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ActSignInService.java create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ActSignInServiceImpl.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/ActSignInQrCodeDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInListFormDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInRecordFormDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInListResultDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInQrCodeResultDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsResultDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/ActSignInQrCodeController.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActSignInQrCodeController.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActSignInQrCodeDao.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/entity/ActSignInQrCodeEntity.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActSignInQrCodeService.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActSignInQrCodeServiceImpl.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActSignInQrCodeDao.xml diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkActSignInController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkActSignInController.java new file mode 100644 index 00000000..decb04a2 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiWorkActSignInController.java @@ -0,0 +1,75 @@ +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInListResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.service.ActSignInService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 工作端-活动扫码签到 + * + * @author Liuchuang + * @since 2021/2/24 13:39 + */ +@RestController +@RequestMapping("work/actsignin") +public class ApiWorkActSignInController { + + @Autowired + private ActSignInService actSignInService; + + /** + * 活动列表(打卡中的活动) + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/2/24 13:49 + */ + @GetMapping("actlist") + public Result> getSignInActList(ActSignInListFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + + return actSignInService.listOfSignInActs(formDto); + } + + /** + * 获取活动签到码 + * + * @param actId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/24 14:22 + */ + @GetMapping("getqrcode/{actId}") + public Result getActSignInQrCode(@PathVariable("actId") String actId) { + return actSignInService.getActSignInQrCode(actId); + } + + /** + * 获取活动签到记录 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/2/24 15:20 + */ + @GetMapping("getsigninlist") + public Result getSignInList(ActSignInRecordFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + + return actSignInService.listOfSignInRecords(formDto); + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ActInfoFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ActInfoFeignClient.java index a77da9ac..4c11e66d 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ActInfoFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ActInfoFeignClient.java @@ -2,9 +2,10 @@ package com.elink.esua.epdc.feign; import com.elink.esua.epdc.activity.ActBannerDTO; import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; import com.elink.esua.epdc.activity.form.EpdcAppBannerFormDTO; -import com.elink.esua.epdc.activity.result.ActInfoAppResultDTO; -import com.elink.esua.epdc.activity.result.ActInfoDetailAppResultDTO; +import com.elink.esua.epdc.activity.result.*; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.config.FeignRequestInterceptor; @@ -13,7 +14,6 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -87,4 +87,37 @@ public interface ActInfoFeignClient { @GetMapping(value = "heart/epdc-app/actbanner/detail/{id}", consumes = MediaType.APPLICATION_JSON_VALUE) Result getBannerDetail(@PathVariable("id") String id); + /** + * 工作端-可生成签到码的活动 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/2/24 13:53 + */ + @GetMapping(value = "heart/appactinfo/signinactlist", consumes = MediaType.APPLICATION_JSON_VALUE) + Result> getSignInActList(ActSignInListFormDTO formDto); + + /** + * 获取活动签到码 + * + * @param actId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/24 14:27 + */ + @GetMapping(value ="heart/epdc-app/actsigninqrcode/getqrcode/{actId}", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getActSignInQrCode(@PathVariable("actId") String actId); + + /** + * 获取活动签到记录 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/2/24 15:23 + */ + @GetMapping(value ="heart/epdc-app/actsigninqrcode/getsigninlist", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getSignInList(ActSignInRecordFormDTO formDto); + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ActInfoFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ActInfoFeignClientFallback.java index 8d96daa1..e031824f 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ActInfoFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ActInfoFeignClientFallback.java @@ -2,9 +2,10 @@ package com.elink.esua.epdc.feign.fallback; import com.elink.esua.epdc.activity.ActBannerDTO; import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; import com.elink.esua.epdc.activity.form.EpdcAppBannerFormDTO; -import com.elink.esua.epdc.activity.result.ActInfoAppResultDTO; -import com.elink.esua.epdc.activity.result.ActInfoDetailAppResultDTO; +import com.elink.esua.epdc.activity.result.*; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -57,4 +58,19 @@ public class ActInfoFeignClientFallback implements ActInfoFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPDC_HEART_SERVER, "getBannerDetail", id); } + @Override + public Result> getSignInActList(ActSignInListFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_HEART_SERVER, "getSignInActList", formDto); + } + + @Override + public Result getActSignInQrCode(String actId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_HEART_SERVER, "getActSignInQrCode", actId); + } + + @Override + public Result getSignInList(ActSignInRecordFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_HEART_SERVER, "getSignInList", formDto); + } + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ActSignInService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ActSignInService.java new file mode 100644 index 00000000..b1ca5036 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ActSignInService.java @@ -0,0 +1,50 @@ +package com.elink.esua.epdc.service; + +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInListResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.commons.tools.utils.Result; + +import java.util.List; + +/** + * 工作端-活动扫码签到 + * + * @author Liuchuang + * @since 2021/2/24 13:39 + */ +public interface ActSignInService { + + /** + * 活动列表(打卡中的活动) + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/2/24 13:51 + */ + Result> listOfSignInActs(ActSignInListFormDTO formDto); + + /** + * 获取活动签到码 + * + * @param actId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/24 14:24 + */ + Result getActSignInQrCode(String actId); + + /** + * 获取活动签到记录 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/2/24 15:22 + */ + Result listOfSignInRecords(ActSignInRecordFormDTO formDto); +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ActSignInServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ActSignInServiceImpl.java new file mode 100644 index 00000000..6af49b58 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ActSignInServiceImpl.java @@ -0,0 +1,37 @@ +package com.elink.esua.epdc.service.impl; + +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInListResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.feign.ActInfoFeignClient; +import com.elink.esua.epdc.service.ActSignInService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ActSignInServiceImpl implements ActSignInService { + + @Autowired + private ActInfoFeignClient actInfoFeignClient; + + @Override + public Result> listOfSignInActs(ActSignInListFormDTO formDto) { + return actInfoFeignClient.getSignInActList(formDto); + } + + @Override + public Result getActSignInQrCode(String actId) { + return actInfoFeignClient.getActSignInQrCode(actId); + } + + @Override + public Result listOfSignInRecords(ActSignInRecordFormDTO formDto) { + return actInfoFeignClient.getSignInList(formDto); + } +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/ActSignInQrCodeDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/ActSignInQrCodeDTO.java new file mode 100644 index 00000000..e13cd5a2 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/ActSignInQrCodeDTO.java @@ -0,0 +1,81 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.activity; + +import java.io.Serializable; +import java.util.Date; +import lombok.Data; + + +/** + * 活动签到二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-02-24 + */ +@Data +public class ActSignInQrCodeDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private String id; + + /** + * 活动ID + */ + private String actId; + + /** + * 二维码地址 + */ + private String codeUrl; + + /** + * 删除标记:0-否,1-是 + */ + private String delFlag; + + /** + * 乐观锁 + */ + private Integer revision; + + /** + * 创建人 + */ + private String createdBy; + + /** + * 创建时间 + */ + private Date createdTime; + + /** + * 更新人 + */ + private String updatedBy; + + /** + * 更新时间 + */ + private Date updatedTime; + +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInListFormDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInListFormDTO.java new file mode 100644 index 00000000..c9f5aef1 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInListFormDTO.java @@ -0,0 +1,27 @@ +package com.elink.esua.epdc.activity.form; + +import lombok.Data; + +import javax.validation.constraints.Min; +import java.io.Serializable; + +/** + * 活动列表-form + * @author Liuchuang + */ +@Data +public class ActSignInListFormDTO implements Serializable { + private static final long serialVersionUID = -2850925877613620284L; + + /** + * 页码,从1开始 + */ + @Min(value = 1, message = "页码必须大于0") + private Integer pageIndex; + + /** + * 页容量,默认10页 + */ + @Min(value = 1, message = "每页条数必须大于必须大于0") + private Integer pageSize = 10; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInRecordFormDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInRecordFormDTO.java new file mode 100644 index 00000000..3d13387f --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInRecordFormDTO.java @@ -0,0 +1,34 @@ +package com.elink.esua.epdc.activity.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 签到记录-form + * @author Liuchuang + */ +@Data +public class ActSignInRecordFormDTO implements Serializable { + private static final long serialVersionUID = 1458931120619377019L; + + /** + * 页码 + */ + @NotNull(message = "页码不能为空") + private Integer pageIndex; + + /** + * 页容量 + */ + @NotNull(message = "分页数量不能为空") + private Integer pageSize; + + /** + * 活动ID + */ + @NotBlank(message = "活动ID不能为空") + private String actId; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInListResultDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInListResultDTO.java new file mode 100644 index 00000000..30dda362 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInListResultDTO.java @@ -0,0 +1,39 @@ +package com.elink.esua.epdc.activity.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 活动信息 + * @author Liuchuang + */ +@Data +public class ActSignInListResultDTO implements Serializable { + private static final long serialVersionUID = 5597918895256848428L; + + /** + * 活动ID + */ + private String id; + + /** + * 标题 + */ + private String title; + + /** + * 活动头图 + */ + private String headPic; + + /** + * 打卡开始时间 + */ + private String signinStartTime; + + /** + * 打卡截止时间 + */ + private String signinEndTime; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInQrCodeResultDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInQrCodeResultDTO.java new file mode 100644 index 00000000..8e6df87c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInQrCodeResultDTO.java @@ -0,0 +1,21 @@ +package com.elink.esua.epdc.activity.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 活动签到码 + * + * @author Liuchuang + * @since 2021/2/24 14:51 + */ +@Data +public class ActSignInQrCodeResultDTO implements Serializable { + private static final long serialVersionUID = 567506783648999124L; + + /** + * 二维码地址 + */ + private String codeUrl; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsDTO.java new file mode 100644 index 00000000..e12afe6c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsDTO.java @@ -0,0 +1,44 @@ +package com.elink.esua.epdc.activity.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 签到记录-result + * @author Liuchuang + */ +@Data +public class ActSignInRecordsDTO implements Serializable { + private static final long serialVersionUID = 3786377690296637263L; + + /** + * 记录ID + */ + private String id; + + /** + * 用户昵称 + */ + private String nickname; + + /** + * 签到时间 + */ + private String createdTime; + + /** + * 操作积分类型 0-减积分,1-加积分 + */ + private String operationPointsType; + + /** + * 操作积分值 + */ + private Integer points; + + /** + * 用户头像 + */ + private String faceImg; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsResultDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsResultDTO.java new file mode 100644 index 00000000..b8f17f51 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsResultDTO.java @@ -0,0 +1,25 @@ +package com.elink.esua.epdc.activity.result; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 扫码签到记录 + * @author Liuchuang + */ +@Data +public class ActSignInRecordsResultDTO implements Serializable { + private static final long serialVersionUID = -140813417697540322L; + + /** + * 签到总人数 + */ + private Integer signInTotal; + + /** + * 签到记录 + */ + private List signInList; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/ActSignInQrCodeController.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/ActSignInQrCodeController.java new file mode 100644 index 00000000..8f64de1c --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/ActSignInQrCodeController.java @@ -0,0 +1,84 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.modules.activity.controller; + +import com.elink.esua.epdc.activity.ActSignInQrCodeDTO; +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.AssertUtils; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; +import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; +import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; +import com.elink.esua.epdc.modules.activity.service.ActSignInQrCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + + +/** + * 活动签到二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-02-24 + */ +@RestController +@RequestMapping("actsigninqrcode") +public class ActSignInQrCodeController { + + @Autowired + private ActSignInQrCodeService actSignInQrCodeService; + + @GetMapping("page") + public Result> page(@RequestParam Map params){ + PageData page = actSignInQrCodeService.page(params); + return new Result>().ok(page); + } + + @GetMapping("{id}") + public Result get(@PathVariable("id") String id){ + ActSignInQrCodeDTO data = actSignInQrCodeService.get(id); + return new Result().ok(data); + } + + @PostMapping + public Result save(@RequestBody ActSignInQrCodeDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + actSignInQrCodeService.save(dto); + return new Result(); + } + + @PutMapping + public Result update(@RequestBody ActSignInQrCodeDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + actSignInQrCodeService.update(dto); + return new Result(); + } + + @DeleteMapping + public Result delete(@RequestBody String[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + actSignInQrCodeService.delete(ids); + return new Result(); + } + +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActInfoController.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActInfoController.java index 94ee0623..2305f620 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActInfoController.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActInfoController.java @@ -19,14 +19,17 @@ package com.elink.esua.epdc.modules.activity.controller; import com.elink.esua.epdc.activity.ActInfoDTO; import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; import com.elink.esua.epdc.activity.result.ActInfoAppResultDTO; import com.elink.esua.epdc.activity.result.ActInfoDetailAppResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInListResultDTO; import com.elink.esua.epdc.activity.result.AppActInfoDTO; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.modules.activity.service.ActInfoService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -140,4 +143,19 @@ public class AppActInfoController { return new Result().ok(unreadCount); } + /** + * 工作端-可生成签到码的活动 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/2/24 13:56 + */ + @GetMapping( "signinactlist") + public Result> getSignInActList(@RequestBody ActSignInListFormDTO formDto) { + List data = actInfoService.listOfSignInActs(formDto); + + return new Result>().ok(data); + } + } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActSignInQrCodeController.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActSignInQrCodeController.java new file mode 100644 index 00000000..4f4f8dfe --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActSignInQrCodeController.java @@ -0,0 +1,62 @@ +package com.elink.esua.epdc.modules.activity.controller; + +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.modules.activity.service.ActSignInQrCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * 签到码移动端接口 + * + * @author Liuchuang + * @since 2021/2/24 14:29 + */ +@RestController +@RequestMapping(Constant.EPDC_APP + "actsigninqrcode") +public class AppActSignInQrCodeController { + + @Autowired + private ActSignInQrCodeService actSignInQrCodeService; + + /** + * 获取活动签到码 + * + * @param actId + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/24 14:31 + */ + @GetMapping("getqrcode/{actId}") + public Result getActSignInQrCode(@PathVariable("actId") String actId) { + ActSignInQrCodeResultDTO data = actSignInQrCodeService.getActSignInQrCode(actId); + + return new Result().ok(data); + } + + /** + * 获取活动签到记录 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2021/2/24 15:26 + */ + @GetMapping("getsigninlist") + public Result getSignInList(ActSignInRecordFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + ActSignInRecordsResultDTO data = actSignInQrCodeService.listOfSignInRecords(formDto); + + return new Result().ok(data); + } +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActInfoDao.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActInfoDao.java index 26e35f50..bb153987 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActInfoDao.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActInfoDao.java @@ -19,10 +19,8 @@ package com.elink.esua.epdc.modules.activity.dao; import com.elink.esua.epdc.activity.ActInfoDTO; import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; -import com.elink.esua.epdc.activity.result.ActInfoAppResultDTO; -import com.elink.esua.epdc.activity.result.ActInfoDetailAppResultDTO; -import com.elink.esua.epdc.activity.result.ActInfoDetailResultDTO; -import com.elink.esua.epdc.activity.result.ActInfoResultDTO; +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; +import com.elink.esua.epdc.activity.result.*; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.modules.activity.entity.ActInfoEntity; import org.apache.ibatis.annotations.Mapper; @@ -133,4 +131,14 @@ public interface ActInfoDao extends BaseDao { * @since 2020/10/26 13:40 */ int selectCountUserUnreadSignUpAct(@Param("userId") String userId); + + /** + * 活动列表(打卡中的活动) + * + * @param formDto + * @return java.util.List + * @author Liuchuang + * @since 2021/2/24 14:07 + */ + List selectListSignInActs(ActSignInListFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActSignInQrCodeDao.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActSignInQrCodeDao.java new file mode 100644 index 00000000..b200a5d0 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActSignInQrCodeDao.java @@ -0,0 +1,33 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.modules.activity.dao; + +import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; +import com.elink.esua.epdc.modules.activity.entity.ActSignInQrCodeEntity; +import org.apache.ibatis.annotations.Mapper; + +/** + * 活动签到二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-02-24 + */ +@Mapper +public interface ActSignInQrCodeDao extends BaseDao { + +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserPointsLogDao.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserPointsLogDao.java index 623b6131..61e8702b 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserPointsLogDao.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserPointsLogDao.java @@ -17,17 +17,42 @@ package com.elink.esua.epdc.modules.activity.dao; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.modules.activity.entity.ActUserPointsLogEntity; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** - * + * * * @author qu qu@elink-cn.com * @since v1.0.0 2019-12-21 */ @Mapper public interface ActUserPointsLogDao extends BaseDao { - -} \ No newline at end of file + + /** + * 获取活动签到记录 + * + * @param formDto + * @return java.util.List + * @author Liuchuang + * @since 2021/2/24 15:34 + */ + List selectListOfSignInRecords(ActSignInRecordFormDTO formDto); + + /** + * 活动已签到人数 + * + * @param actId + * @return java.lang.Integer + * @author Liuchuang + * @since 2021/2/24 15:49 + */ + Integer selectCountOfSignInRecords(@Param("actId") String actId); + +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/entity/ActSignInQrCodeEntity.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/entity/ActSignInQrCodeEntity.java new file mode 100644 index 00000000..8665c05b --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/entity/ActSignInQrCodeEntity.java @@ -0,0 +1,51 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.modules.activity.entity; + +import com.baomidou.mybatisplus.annotation.TableName; + +import com.elink.esua.epdc.commons.mybatis.entity.BaseEpdcEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 活动签到二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-02-24 + */ +@Data +@EqualsAndHashCode(callSuper=false) +@TableName("epdc_act_sign_in_qr_code") +public class ActSignInQrCodeEntity extends BaseEpdcEntity { + + private static final long serialVersionUID = 1L; + + /** + * 活动ID + */ + private String actId; + + /** + * 二维码地址 + */ + private String codeUrl; + +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActInfoService.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActInfoService.java index 19ed52b6..7d7ddfbf 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActInfoService.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActInfoService.java @@ -20,9 +20,11 @@ package com.elink.esua.epdc.modules.activity.service; import com.elink.esua.epdc.activity.ActInfoDTO; import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; import com.elink.esua.epdc.activity.form.ActInfoFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; import com.elink.esua.epdc.activity.result.ActInfoAppResultDTO; import com.elink.esua.epdc.activity.result.ActInfoDetailAppResultDTO; import com.elink.esua.epdc.activity.result.ActInfoResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInListResultDTO; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -224,4 +226,14 @@ public interface ActInfoService extends BaseService { * @since 2020/10/26 13:42 */ int countUserUnreadSignUpAct(String userId); + + /** + * 活动列表(打卡中的活动) + * + * @param formDto + * @return java.util.List + * @author Liuchuang + * @since 2021/2/24 14:04 + */ + List listOfSignInActs(ActSignInListFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActSignInQrCodeService.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActSignInQrCodeService.java new file mode 100644 index 00000000..db2db414 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActSignInQrCodeService.java @@ -0,0 +1,119 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.modules.activity.service; + +import com.elink.esua.epdc.activity.ActSignInQrCodeDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.commons.mybatis.service.BaseService; +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.modules.activity.entity.ActSignInQrCodeEntity; + +import java.util.List; +import java.util.Map; + +/** + * 活动签到二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-02-24 + */ +public interface ActSignInQrCodeService extends BaseService { + + /** + * 默认分页 + * + * @param params + * @return PageData + * @author generator + * @date 2021-02-24 + */ + PageData page(Map params); + + /** + * 默认查询 + * + * @param params + * @return java.util.List + * @author generator + * @date 2021-02-24 + */ + List list(Map params); + + /** + * 单条查询 + * + * @param id + * @return ActSignInQrCodeDTO + * @author generator + * @date 2021-02-24 + */ + ActSignInQrCodeDTO get(String id); + + /** + * 默认保存 + * + * @param dto + * @return void + * @author generator + * @date 2021-02-24 + */ + void save(ActSignInQrCodeDTO dto); + + /** + * 默认更新 + * + * @param dto + * @return void + * @author generator + * @date 2021-02-24 + */ + void update(ActSignInQrCodeDTO dto); + + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2021-02-24 + */ + void delete(String[] ids); + + /** + * 获取活动签到码 + * + * @param actId + * @return com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO + * @author Liuchuang + * @since 2021/2/24 14:52 + */ + ActSignInQrCodeResultDTO getActSignInQrCode(String actId); + + /** + * 获取活动签到记录 + * + * @param formDto + * @return java.util.List + * @author Liuchuang + * @since 2021/2/24 15:27 + */ + ActSignInRecordsResultDTO listOfSignInRecords(ActSignInRecordFormDTO formDto); +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActUserPointsLogService.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActUserPointsLogService.java index 573c2f88..d7eaf562 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActUserPointsLogService.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActUserPointsLogService.java @@ -18,6 +18,9 @@ package com.elink.esua.epdc.modules.activity.service; import com.elink.esua.epdc.activity.ActUserPointsLogDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.modules.activity.entity.ActUserPointsLogEntity; @@ -101,4 +104,14 @@ public interface ActUserPointsLogService extends BaseService + * @author Liuchuang + * @since 2021/2/24 15:27 + */ + ActSignInRecordsResultDTO listOfSignInRecords(ActSignInRecordFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java index 84882c19..c3b18521 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java @@ -25,10 +25,8 @@ import com.elink.esua.epdc.activity.ActUserReadDTO; import com.elink.esua.epdc.activity.ActUserRelationDTO; import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; import com.elink.esua.epdc.activity.form.ActInfoFormDTO; -import com.elink.esua.epdc.activity.result.ActInfoAppResultDTO; -import com.elink.esua.epdc.activity.result.ActInfoDetailAppResultDTO; -import com.elink.esua.epdc.activity.result.ActInfoDetailResultDTO; -import com.elink.esua.epdc.activity.result.ActInfoResultDTO; +import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; +import com.elink.esua.epdc.activity.result.*; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant; @@ -736,4 +734,12 @@ public class ActInfoServiceImpl extends BaseServiceImpl listOfSignInActs(ActSignInListFormDTO formDto) { + int pageIndex = (formDto.getPageIndex() - NumConstant.ONE) * formDto.getPageSize(); + formDto.setPageIndex(pageIndex); + + return baseDao.selectListSignInActs(formDto); + } } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActSignInQrCodeServiceImpl.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActSignInQrCodeServiceImpl.java new file mode 100644 index 00000000..a45b9294 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActSignInQrCodeServiceImpl.java @@ -0,0 +1,177 @@ +/** + * Copyright 2018 人人开源 https://www.renren.io + *

+ * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + *

+ * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + *

+ * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.elink.esua.epdc.modules.activity.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.elink.esua.epdc.activity.ActInfoDTO; +import com.elink.esua.epdc.activity.ActSignInQrCodeDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; +import com.elink.esua.epdc.commons.tools.constant.StrConstant; +import com.elink.esua.epdc.commons.tools.exception.RenException; +import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; +import com.elink.esua.epdc.commons.tools.constant.FieldConstant; +import com.elink.esua.epdc.commons.tools.utils.QrCodeUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.UploadToOssDTO; +import com.elink.esua.epdc.modules.activity.dao.ActSignInQrCodeDao; +import com.elink.esua.epdc.modules.activity.entity.ActSignInQrCodeEntity; +import com.elink.esua.epdc.modules.activity.service.ActInfoService; +import com.elink.esua.epdc.modules.activity.service.ActSignInQrCodeService; +import com.elink.esua.epdc.modules.activity.service.ActUserPointsLogService; +import com.elink.esua.epdc.modules.feign.OssFeignClient; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * 活动签到二维码表 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2021-02-24 + */ +@Service +public class ActSignInQrCodeServiceImpl extends BaseServiceImpl implements ActSignInQrCodeService { + + @Autowired + private OssFeignClient ossFeignClient; + + @Autowired + private ActInfoService actInfoService; + + @Autowired + private ActUserPointsLogService actUserPointsLogService; + + @Override + public PageData page(Map params) { + IPage page = baseDao.selectPage( + getPage(params, FieldConstant.CREATED_TIME, false), + getWrapper(params) + ); + return getPageData(page, ActSignInQrCodeDTO.class); + } + + @Override + public List list(Map params) { + List entityList = baseDao.selectList(getWrapper(params)); + + return ConvertUtils.sourceToTarget(entityList, ActSignInQrCodeDTO.class); + } + + private QueryWrapper getWrapper(Map params){ + String id = (String)params.get(FieldConstant.ID_HUMP); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); + + return wrapper; + } + + @Override + public ActSignInQrCodeDTO get(String id) { + ActSignInQrCodeEntity entity = baseDao.selectById(id); + return ConvertUtils.sourceToTarget(entity, ActSignInQrCodeDTO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(ActSignInQrCodeDTO dto) { + ActSignInQrCodeEntity entity = ConvertUtils.sourceToTarget(dto, ActSignInQrCodeEntity.class); + insert(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(ActSignInQrCodeDTO dto) { + ActSignInQrCodeEntity entity = ConvertUtils.sourceToTarget(dto, ActSignInQrCodeEntity.class); + updateById(entity); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String[] ids) { + // 逻辑删除(@TableLogic 注解) + baseDao.deleteBatchIds(Arrays.asList(ids)); + } + + @Override + public ActSignInQrCodeResultDTO getActSignInQrCode(String actId) { + if (StringUtils.isEmpty(actId)) { + throw new RenException("活动ID不能为空"); + } + + // 判断活动状态是否在打卡范围内 + ActInfoDTO actInfoDto = actInfoService.get(actId); + if (!(System.currentTimeMillis() >= actInfoDto.getSigninStartTime().getTime() + && System.currentTimeMillis() <= actInfoDto.getSigninEndTime().getTime())) { + throw new RenException("当前活动不在打卡时间范围内,不能生成签到码"); + } + + // 保存签到码信息 + ActSignInQrCodeEntity entity = new ActSignInQrCodeEntity(); + entity.setActId(actId); + insert(entity); + + // 生成二维码 + String codeUrl = generateQRCode(entity.getId()); + entity.setCodeUrl(codeUrl); + + // 更新二维码地址 + updateById(entity); + ActSignInQrCodeResultDTO dto = new ActSignInQrCodeResultDTO(); + dto.setCodeUrl(codeUrl); + + return dto; + } + + @Override + public ActSignInRecordsResultDTO listOfSignInRecords(ActSignInRecordFormDTO formDto) { + return actUserPointsLogService.listOfSignInRecords(formDto); + } + + /** + * 生成二维码并上传 OSS + * + * @param param 二维码参数 + * @return java.lang.String + * @author Liuchuang + * @since 2021/1/19 13:30 + */ + private String generateQRCode(String param) { + UploadToOssDTO dto = new UploadToOssDTO(); + dto.setFileByte(QrCodeUtils.encodeByByte(param, "", false)); + dto.setFileName(param.concat(StrConstant.DOT).concat(StrConstant.SUFFIX_IMG_PNG)); + + Result ossResult = ossFeignClient.uploadFile(dto); + if (null == ossResult || !ossResult.success() || null == ossResult.getData()) { + throw new RenException("签到码上传失败,请稍后重试"); + } + return ossResult.getData(); + } + +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserPointsLogServiceImpl.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserPointsLogServiceImpl.java index 4ef60308..94d70187 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserPointsLogServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserPointsLogServiceImpl.java @@ -20,8 +20,12 @@ package com.elink.esua.epdc.modules.activity.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.activity.ActUserPointsLogDTO; +import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; +import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; +import com.elink.esua.epdc.commons.tools.constant.NumConstant; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; import com.elink.esua.epdc.modules.activity.dao.ActUserPointsLogDao; @@ -115,4 +119,22 @@ public class ActUserPointsLogServiceImpl extends BaseServiceImpl list = baseDao.selectListOfSignInRecords(formDto); + + ActSignInRecordsResultDTO data = new ActSignInRecordsResultDTO(); + data.setSignInTotal(signInTotal); + data.setSignInList(list); + + return data; + } + } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java new file mode 100644 index 00000000..7a1e2a28 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/OssFeignClient.java @@ -0,0 +1,41 @@ +package com.elink.esua.epdc.modules.feign; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.UploadFormDTO; +import com.elink.esua.epdc.dto.UploadToOssDTO; +import com.elink.esua.epdc.feign.fallback.OssFeignClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; + +/** + * 文件对象模块 + * @Author LC + * @Date 2019/9/8 18:24 + */ +@FeignClient(name = ServiceConstant.EPDC_OSS_SERVER, fallback = OssFeignClientFallback.class) +public interface OssFeignClient { + + /** + * 图片上传 + * @Params: [base64] + * @Return: com.elink.esua.epdc.commons.tools.utils.Result + * @Author: liuchuang + * @Date: 2019/9/11 17:17 + */ + @PostMapping(value = "oss/file/uploadBase64") + Result upload(UploadFormDTO formDTO); + + /** + * + * 图片上传 + * + * @params [file] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/11/25 16:13 + */ + @PostMapping(value = "oss/file/uploadFile", consumes = MediaType.APPLICATION_JSON_VALUE) + Result uploadFile(UploadToOssDTO uploadToOssDto); +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java new file mode 100644 index 00000000..da493db2 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/OssFeignClientFallback.java @@ -0,0 +1,28 @@ +package com.elink.esua.epdc.modules.feign.fallback; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.UploadFormDTO; +import com.elink.esua.epdc.dto.UploadToOssDTO; +import com.elink.esua.epdc.modules.feign.OssFeignClient; +import org.springframework.stereotype.Component; + +/** + * 文件对象模块 + * @Author LC + * @Date 2019/9/8 18:25 + */ +@Component +public class OssFeignClientFallback implements OssFeignClient { + + @Override + public Result upload(UploadFormDTO formDTO) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "upload", formDTO); + } + + @Override + public Result uploadFile(UploadToOssDTO uploadToOssDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_OSS_SERVER, "uploadFile", uploadToOssDto); + } +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActInfoDao.xml b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActInfoDao.xml index d626b97c..11374974 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActInfoDao.xml +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActInfoDao.xml @@ -530,4 +530,22 @@ AND ai.SIGNUP_END_TIME > NOW() AND ai.ID NOT IN ( SELECT t.ACT_ID FROM ( SELECT ACT_ID FROM epdc_act_user_read WHERE DEL_FLAG = '0' AND USER_ID = #{userId} ) t ); + + diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActSignInQrCodeDao.xml b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActSignInQrCodeDao.xml new file mode 100644 index 00000000..40e94e7f --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActSignInQrCodeDao.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml index 7410a266..ab7585fb 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml @@ -1,7 +1,7 @@ - + @@ -18,5 +18,38 @@ + - \ No newline at end of file + + + From fe768bb0ca4c38e5ac9f92bbeded6bfff409db2c Mon Sep 17 00:00:00 2001 From: liuchuang <123456> Date: Thu, 25 Feb 2021 15:52:05 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E7=AD=BE=E5=88=B0=E6=8E=A5=E5=8F=A3=20init=201=E3=80=81?= =?UTF-8?q?=E5=B1=85=E6=B0=91=E6=89=AB=E7=A0=81=E6=8E=A5=E5=8F=A3=202?= =?UTF-8?q?=E3=80=81=E5=B1=85=E6=B0=91=E6=89=AB=E7=A0=81=E7=AD=BE=E5=88=B0?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../commons/tools/constant/NumConstant.java | 1 + .../controller/ApiActSignInController.java | 57 +++++++ .../esua/epdc/feign/ActInfoFeignClient.java | 28 +++- .../fallback/ActInfoFeignClientFallback.java | 15 +- .../esua/epdc/service/ActSignInService.java | 27 ++- .../service/impl/ActSignInServiceImpl.java | 17 +- .../activity/form/ActPointCheckFormDTO.java | 5 + .../epdc/activity/form/ActSignInFormDTO.java | 26 +++ .../form/ActSignInScanQrCodeFormDTO.java | 26 +++ .../result/ActSignInScanQrCodeResultDTO.java | 49 ++++++ .../AppActSignInQrCodeController.java | 44 ++++- .../activity/dao/ActUserPointsLogDao.java | 11 ++ .../service/ActSignInQrCodeService.java | 24 +++ .../service/ActUserPointsLogService.java | 12 ++ .../service/impl/ActInfoServiceImpl.java | 25 ++- .../impl/ActSignInQrCodeServiceImpl.java | 154 +++++++++++++++++- .../impl/ActUserClockLogServiceImpl.java | 8 +- .../impl/ActUserPointsLogServiceImpl.java | 6 + .../constant/ActSignInQrCodeConstant.java | 26 +++ .../mapper/activity/ActUserPointsLogDao.xml | 14 ++ .../mapper/activity/ActUserRelationDao.xml | 3 +- 21 files changed, 540 insertions(+), 38 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiActSignInController.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInFormDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInScanQrCodeFormDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInScanQrCodeResultDTO.java create mode 100644 esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/constant/ActSignInQrCodeConstant.java diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java index 01de0bba..97fad29b 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/NumConstant.java @@ -43,6 +43,7 @@ public interface NumConstant { String FIVE_STR = "5"; String SIX_STR = "6"; String SEVEN_STR = "7"; + String NINE_STR = "9"; int TWO_HUNDRED = 200; diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiActSignInController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiActSignInController.java new file mode 100644 index 00000000..ac0ebbbf --- /dev/null +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiActSignInController.java @@ -0,0 +1,57 @@ +package com.elink.esua.epdc.controller; + +import com.elink.esua.epdc.activity.form.ActSignInFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInScanQrCodeFormDTO; +import com.elink.esua.epdc.activity.result.ActSignInScanQrCodeResultDTO; +import com.elink.esua.epdc.common.token.dto.TokenDto; +import com.elink.esua.epdc.commons.tools.annotation.LoginUser; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.service.ActSignInService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 居民端-活动扫码签到 + * + * @author Liuchuang + * @since 2021/2/24 17:33 + */ +@RestController +@RequestMapping("act/actsignin") +public class ApiActSignInController { + + @Autowired + private ActSignInService actSignInService; + + /** + * 居民扫签到码获取活动信息接口 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/24 18:00 + */ + @GetMapping("actInfo") + public Result getActInfo(@LoginUser TokenDto userDetail, ActSignInScanQrCodeFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + formDto.setUserId(userDetail.getUserId()); + return actSignInService.getSignInActInfo(formDto); + } + + /** + * 居民扫码签到 + * + * @param userDetail + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/25 13:55 + */ + @PostMapping("signin") + public Result scanSignIn(@LoginUser TokenDto userDetail, @RequestBody ActSignInFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + formDto.setUserId(userDetail.getUserId()); + return actSignInService.scanSignIn(formDto); + } +} diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ActInfoFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ActInfoFeignClient.java index 4c11e66d..618dba24 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ActInfoFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/ActInfoFeignClient.java @@ -1,10 +1,7 @@ package com.elink.esua.epdc.feign; import com.elink.esua.epdc.activity.ActBannerDTO; -import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; -import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; -import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; -import com.elink.esua.epdc.activity.form.EpdcAppBannerFormDTO; +import com.elink.esua.epdc.activity.form.*; import com.elink.esua.epdc.activity.result.*; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.Result; @@ -14,6 +11,7 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import java.util.List; @@ -120,4 +118,26 @@ public interface ActInfoFeignClient { @GetMapping(value ="heart/epdc-app/actsigninqrcode/getsigninlist", consumes = MediaType.APPLICATION_JSON_VALUE) Result getSignInList(ActSignInRecordFormDTO formDto); + /** + * 居民扫签到码获取活动信息接口 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/25 9:38 + */ + @GetMapping(value ="heart/epdc-app/actsigninqrcode/actInfo", consumes = MediaType.APPLICATION_JSON_VALUE) + Result getActInfo(ActSignInScanQrCodeFormDTO formDto); + + /** + * 居民扫码签到 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/25 14:00 + */ + @PostMapping(value ="heart/epdc-app/actsigninqrcode/signin", consumes = MediaType.APPLICATION_JSON_VALUE) + Result scanSignIn(ActSignInFormDTO formDto); + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ActInfoFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ActInfoFeignClientFallback.java index e031824f..c2a6283a 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ActInfoFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/ActInfoFeignClientFallback.java @@ -1,10 +1,7 @@ package com.elink.esua.epdc.feign.fallback; import com.elink.esua.epdc.activity.ActBannerDTO; -import com.elink.esua.epdc.activity.form.ActInfoAppFormDTO; -import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; -import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; -import com.elink.esua.epdc.activity.form.EpdcAppBannerFormDTO; +import com.elink.esua.epdc.activity.form.*; import com.elink.esua.epdc.activity.result.*; import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; import com.elink.esua.epdc.commons.tools.utils.ModuleUtils; @@ -73,4 +70,14 @@ public class ActInfoFeignClientFallback implements ActInfoFeignClient { return ModuleUtils.feignConError(ServiceConstant.EPDC_HEART_SERVER, "getSignInList", formDto); } + @Override + public Result getActInfo(ActSignInScanQrCodeFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_HEART_SERVER, "getActInfo", formDto); + } + + @Override + public Result scanSignIn(ActSignInFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_HEART_SERVER, "scanSignIn", formDto); + } + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ActSignInService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ActSignInService.java index b1ca5036..9196bd63 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ActSignInService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/ActSignInService.java @@ -1,11 +1,10 @@ package com.elink.esua.epdc.service; +import com.elink.esua.epdc.activity.form.ActSignInFormDTO; import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; -import com.elink.esua.epdc.activity.result.ActSignInListResultDTO; -import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; -import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; -import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.activity.form.ActSignInScanQrCodeFormDTO; +import com.elink.esua.epdc.activity.result.*; import com.elink.esua.epdc.commons.tools.utils.Result; import java.util.List; @@ -47,4 +46,24 @@ public interface ActSignInService { * @since 2021/2/24 15:22 */ Result listOfSignInRecords(ActSignInRecordFormDTO formDto); + + /** + * 居民扫签到码获取活动信息接口 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/25 9:34 + */ + Result getSignInActInfo(ActSignInScanQrCodeFormDTO formDto); + + /** + * 居民扫码签到 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/25 13:58 + */ + Result scanSignIn(ActSignInFormDTO formDto); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ActSignInServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ActSignInServiceImpl.java index 6af49b58..35773f1d 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ActSignInServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/ActSignInServiceImpl.java @@ -1,11 +1,10 @@ package com.elink.esua.epdc.service.impl; +import com.elink.esua.epdc.activity.form.ActSignInFormDTO; import com.elink.esua.epdc.activity.form.ActSignInListFormDTO; import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; -import com.elink.esua.epdc.activity.result.ActSignInListResultDTO; -import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; -import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; -import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.activity.form.ActSignInScanQrCodeFormDTO; +import com.elink.esua.epdc.activity.result.*; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.feign.ActInfoFeignClient; import com.elink.esua.epdc.service.ActSignInService; @@ -34,4 +33,14 @@ public class ActSignInServiceImpl implements ActSignInService { public Result listOfSignInRecords(ActSignInRecordFormDTO formDto) { return actInfoFeignClient.getSignInList(formDto); } + + @Override + public Result getSignInActInfo(ActSignInScanQrCodeFormDTO formDto) { + return actInfoFeignClient.getActInfo(formDto); + } + + @Override + public Result scanSignIn(ActSignInFormDTO formDto) { + return actInfoFeignClient.scanSignIn(formDto); + } } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActPointCheckFormDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActPointCheckFormDTO.java index b47ed5f8..eb6f99e3 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActPointCheckFormDTO.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActPointCheckFormDTO.java @@ -54,5 +54,10 @@ public class ActPointCheckFormDTO implements Serializable { @NotBlank(message = "原因不能为空") private String failureReason; + /** + * 操作类型 0-系统确认积分,2-管理员确认积分,4-取消报名扣减积分,6-管理员扣减积分,8-拒绝积分,9-扫码签到确认积分 + */ + private String operationType; + } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInFormDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInFormDTO.java new file mode 100644 index 00000000..4f913440 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInFormDTO.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.activity.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 活动扫码签到-form + * @author Liuchuang + */ +@Data +public class ActSignInFormDTO implements Serializable { + private static final long serialVersionUID = -570057119464433688L; + + /** + * 活动ID + */ + @NotBlank(message = "活动ID不能为空") + private String actId; + + /** + * 用户ID + */ + private String userId; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInScanQrCodeFormDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInScanQrCodeFormDTO.java new file mode 100644 index 00000000..870a73ff --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/form/ActSignInScanQrCodeFormDTO.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.activity.form; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * 活动扫签到码-form + * @author Liuchuang + */ +@Data +public class ActSignInScanQrCodeFormDTO implements Serializable { + private static final long serialVersionUID = -6611292881727646051L; + + /** + * 二维码中的qrCodeId + */ + @NotBlank(message = "二维码信息为空,请重新扫码") + private String qrCodeId; + + /** + * 用户ID + */ + private String userId; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInScanQrCodeResultDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInScanQrCodeResultDTO.java new file mode 100644 index 00000000..bb63cdcf --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInScanQrCodeResultDTO.java @@ -0,0 +1,49 @@ +package com.elink.esua.epdc.activity.result; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 活动扫签到码-result + * @author Liuchuang + */ +@Data +public class ActSignInScanQrCodeResultDTO implements Serializable { + private static final long serialVersionUID = 2090072774727220817L; + + /** + * 活动ID + */ + private String id; + + /** + * 标题 + */ + private String title; + + /** + * 活动头图 + */ + private String headPic; + + /** + * 打卡开始时间 + */ + private String signinStartTime; + + /** + * 打卡截止时间 + */ + private String signinEndTime; + + /** + * 签到奖励积分 + */ + private String reward; + + /** + * 签到状态:0-未签到,1-已签到 + */ + private String signInStatus; +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActSignInQrCodeController.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActSignInQrCodeController.java index 4f4f8dfe..eec29d25 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActSignInQrCodeController.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/controller/AppActSignInQrCodeController.java @@ -1,20 +1,17 @@ package com.elink.esua.epdc.modules.activity.controller; +import com.elink.esua.epdc.activity.form.ActSignInFormDTO; import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInScanQrCodeFormDTO; import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; -import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInScanQrCodeResultDTO; import com.elink.esua.epdc.commons.tools.constant.Constant; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.modules.activity.service.ActSignInQrCodeService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; +import org.springframework.web.bind.annotation.*; /** * 签到码移动端接口 @@ -53,10 +50,41 @@ public class AppActSignInQrCodeController { * @since 2021/2/24 15:26 */ @GetMapping("getsigninlist") - public Result getSignInList(ActSignInRecordFormDTO formDto) { + public Result getSignInList(@RequestBody ActSignInRecordFormDTO formDto) { ValidatorUtils.validateEntity(formDto); ActSignInRecordsResultDTO data = actSignInQrCodeService.listOfSignInRecords(formDto); return new Result().ok(data); } + + /** + * 居民扫签到码获取活动信息接口 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/25 9:41 + */ + @GetMapping("actInfo") + public Result getActInfo(@RequestBody ActSignInScanQrCodeFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + ActSignInScanQrCodeResultDTO data = actSignInQrCodeService.getSignInActInfo(formDto); + + return new Result().ok(data); + } + + /** + * 居民扫码签到 + * + * @param formDto + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2021/2/25 13:55 + */ + @PostMapping("signin") + public Result scanSignIn(@RequestBody ActSignInFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + + return actSignInQrCodeService.scanSignIn(formDto); + } } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserPointsLogDao.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserPointsLogDao.java index 61e8702b..d6d823fd 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserPointsLogDao.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/dao/ActUserPointsLogDao.java @@ -55,4 +55,15 @@ public interface ActUserPointsLogDao extends BaseDao { */ Integer selectCountOfSignInRecords(@Param("actId") String actId); + /** + * 获取用户已扫码签到记录数量 + * + * @param userId + * @param actId + * @return java.lang.Integer + * @author Liuchuang + * @since 2021/2/25 10:30 + */ + Integer selectCountOfUserSignInRecords(String userId, String actId); + } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActSignInQrCodeService.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActSignInQrCodeService.java index db2db414..a5b972e7 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActSignInQrCodeService.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/ActSignInQrCodeService.java @@ -18,12 +18,16 @@ package com.elink.esua.epdc.modules.activity.service; import com.elink.esua.epdc.activity.ActSignInQrCodeDTO; +import com.elink.esua.epdc.activity.form.ActSignInFormDTO; import com.elink.esua.epdc.activity.form.ActSignInRecordFormDTO; +import com.elink.esua.epdc.activity.form.ActSignInScanQrCodeFormDTO; import com.elink.esua.epdc.activity.result.ActSignInQrCodeResultDTO; import com.elink.esua.epdc.activity.result.ActSignInRecordsDTO; import com.elink.esua.epdc.activity.result.ActSignInRecordsResultDTO; +import com.elink.esua.epdc.activity.result.ActSignInScanQrCodeResultDTO; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.modules.activity.entity.ActSignInQrCodeEntity; import java.util.List; @@ -116,4 +120,24 @@ public interface ActSignInQrCodeService extends BaseService page(Map params) { IPage page = baseDao.selectPage( @@ -120,16 +132,17 @@ public class ActSignInQrCodeServiceImpl extends BaseServiceImpl= actInfoDto.getSigninStartTime().getTime() && System.currentTimeMillis() <= actInfoDto.getSigninEndTime().getTime())) { - throw new RenException("当前活动不在打卡时间范围内,不能生成签到码"); + throw new RenException(ActSignInQrCodeConstant.ACT_CREATE_SIGN_IN_CODE_MSG_NOT_SIGN_IN_TIME); } // 保存签到码信息 @@ -154,6 +167,37 @@ public class ActSignInQrCodeServiceImpl extends BaseServiceImpl NumConstant.SIXTY) { + throw new RenException(ActSignInQrCodeConstant.ACT_SCAN_SIGN_IN_MSG_QR_CODE_INVALID); + } + + return entity; + } + + /** + * 校验活动 + * + * @param actId + * @return com.elink.esua.epdc.activity.ActInfoDTO + * @author Liuchuang + * @since 2021/2/25 10:57 + */ + private ActInfoDTO checkSignInActInfo(String actId) { + ActInfoDTO actInfoDto = actInfoService.get(actId); + if (null == actInfoDto) { + throw new RenException(ActSignInQrCodeConstant.ACT_SCAN_SIGN_IN_MSG_ACT_NOT_FOUND); + } + + if (System.currentTimeMillis() < actInfoDto.getSigninStartTime().getTime() + || System.currentTimeMillis() > actInfoDto.getSigninEndTime().getTime()) { + throw new RenException(ActSignInQrCodeConstant.ACT_SCAN_SIGN_IN_MSG_NOT_SIGN_IN_TIME); + } + + return actInfoDto; + } + + /** + * 校验用户是否已扫码签到 + * + * @param userId + * @param actId + * @return java.lang.String + * @author Liuchuang + * @since 2021/2/25 11:00 + */ + private String checkUserSignInStatus(String userId, String actId) { + if (StringUtils.isEmpty(userId)) { + throw new RenException(ActSignInQrCodeConstant.ACT_SCAN_SIGN_IN_MSG_USER_NOT_FOUND); + } + boolean signInStatus = actUserPointsLogService.checkUserScanSignInStatus(userId, actId); + + return signInStatus ? NumConstant.ONE_STR : NumConstant.ZERO_STR; + } + + /** + * 扫码签到校验用户 + * + * @param userId + * @param actId + * @return com.elink.esua.epdc.activity.ActUserRelationDTO + * @author Liuchuang + * @since 2021/2/25 15:21 + */ + private ActUserRelationDTO checkSignInUser(String userId, String actId) { + // 校验用户 + ActUserRelationDTO actUserRelationDto = actUserRelationService.getActUserRelationId(userId, actId, null); + if (null == actUserRelationDto) { + throw new RenException(ActSignInQrCodeConstant.ACT_SIGN_IN_MSG_NOT_SIGN_UP); + } + switch (actUserRelationDto.getStatus()) { + case ActUserRelationStatusConstant.SIGN_UP: + throw new RenException(ActSignInQrCodeConstant.ACT_SIGN_IN_MSG_PENDING_SIGN_UP); + case ActUserRelationStatusConstant.CANCEL_SIGN_UP: + throw new RenException(ActSignInQrCodeConstant.ACT_SIGN_IN_MSG_CANCEL_SIGN_UP); + case ActUserRelationStatusConstant.NOT_APPROVED: + throw new RenException(ActSignInQrCodeConstant.ACT_SIGN_IN_MSG_NOT_APPROVED_SIGN_UP); + case ActUserRelationStatusConstant.REFUSE_ADD_POINTS: + throw new RenException(ActSignInQrCodeConstant.ACT_SIGN_IN_MSG_REFUSE_ADD_POINTS); + default: + break; + } + + // 校验用户是否已扫码签到 + String signInStatus = checkUserSignInStatus(userId, actId); + if (NumConstant.ONE_STR.equals(signInStatus)) { + throw new RenException(ActSignInQrCodeConstant.ACT_SIGN_IN_MSG_ALREADY_SIGN_IN); + } + + return actUserRelationDto; + } + } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserClockLogServiceImpl.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserClockLogServiceImpl.java index 3b8a6dbe..4e3206d2 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserClockLogServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActUserClockLogServiceImpl.java @@ -174,9 +174,13 @@ public class ActUserClockLogServiceImpl extends BaseServiceImpl NumConstant.ZERO; + } + } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/constant/ActSignInQrCodeConstant.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/constant/ActSignInQrCodeConstant.java new file mode 100644 index 00000000..cd7ec5ba --- /dev/null +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/constant/ActSignInQrCodeConstant.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.modules.constant; + +/** + * 活动扫码签到,提示语常量 + * + * @author Liuchuang + * @since 2021/2/25 10:43 + */ +public interface ActSignInQrCodeConstant { + + String ACT_SCAN_SIGN_IN_MSG_QR_CODE_INVALID = "签到码已失效,请重新扫码"; + String ACT_SCAN_SIGN_IN_MSG_ACT_NOT_FOUND = "活动不存在,请重新扫码"; + String ACT_SCAN_SIGN_IN_MSG_NOT_SIGN_IN_TIME = "当前活动不在打卡时间范围内,不能进行扫码签到"; + String ACT_SCAN_SIGN_IN_MSG_USER_NOT_FOUND = "获取用户信息失败,请稍后重试"; + + String ACT_CREATE_SIGN_IN_CODE_MSG_ACT_ID_NOT_EMPTY = "活动ID不能为空"; + String ACT_CREATE_SIGN_IN_CODE_MSG_NOT_SIGN_IN_TIME = "当前活动不在打卡时间范围内,不能生成签到码"; + + String ACT_SIGN_IN_MSG_ALREADY_SIGN_IN = "当前活动您已签到成功,请勿重复操作"; + String ACT_SIGN_IN_MSG_NOT_SIGN_UP = "当前活动您未报名,不能签到"; + String ACT_SIGN_IN_MSG_PENDING_SIGN_UP = "当前活动您的报名申请审核中,不能签到"; + String ACT_SIGN_IN_MSG_CANCEL_SIGN_UP = "当前活动您已取消报名,不能签到"; + String ACT_SIGN_IN_MSG_NOT_APPROVED_SIGN_UP = "当前活动您的报名申请未通过,不能签到"; + String ACT_SIGN_IN_MSG_REFUSE_ADD_POINTS = "当前活动您已被拒绝加积分,不能签到"; + +} diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml index ab7585fb..1e25c863 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml @@ -52,4 +52,18 @@ AND r.ACT_ID = #{formDto.actId} + + diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserRelationDao.xml b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserRelationDao.xml index b444ddd9..4ca5b441 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserRelationDao.xml +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserRelationDao.xml @@ -53,10 +53,11 @@ From 4e9cda5d1c5edc7b025db38e7f6b189f695f4d8d Mon Sep 17 00:00:00 2001 From: liuchuang <123456> Date: Fri, 26 Feb 2021 13:52:07 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E6=89=AB=E7=A0=81?= =?UTF-8?q?=E7=AD=BE=E5=88=B0=E6=8E=A5=E5=8F=A3=20bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../esua/epdc/activity/result/ActSignInListResultDTO.java | 5 +++-- .../esua/epdc/activity/result/ActSignInRecordsDTO.java | 3 ++- .../epdc/activity/result/ActSignInScanQrCodeResultDTO.java | 7 ++++--- .../main/resources/mapper/activity/ActUserPointsLogDao.xml | 6 +++--- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInListResultDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInListResultDTO.java index 30dda362..a9db26c8 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInListResultDTO.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInListResultDTO.java @@ -3,6 +3,7 @@ package com.elink.esua.epdc.activity.result; import lombok.Data; import java.io.Serializable; +import java.util.Date; /** * 活动信息 @@ -30,10 +31,10 @@ public class ActSignInListResultDTO implements Serializable { /** * 打卡开始时间 */ - private String signinStartTime; + private Date signinStartTime; /** * 打卡截止时间 */ - private String signinEndTime; + private Date signinEndTime; } diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsDTO.java index e12afe6c..7331675a 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsDTO.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInRecordsDTO.java @@ -3,6 +3,7 @@ package com.elink.esua.epdc.activity.result; import lombok.Data; import java.io.Serializable; +import java.util.Date; /** * 签到记录-result @@ -25,7 +26,7 @@ public class ActSignInRecordsDTO implements Serializable { /** * 签到时间 */ - private String createdTime; + private Date createdTime; /** * 操作积分类型 0-减积分,1-加积分 diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInScanQrCodeResultDTO.java b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInScanQrCodeResultDTO.java index bb63cdcf..d87228d1 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInScanQrCodeResultDTO.java +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-client/src/main/java/com/elink/esua/epdc/activity/result/ActSignInScanQrCodeResultDTO.java @@ -3,6 +3,7 @@ package com.elink.esua.epdc.activity.result; import lombok.Data; import java.io.Serializable; +import java.util.Date; /** * 活动扫签到码-result @@ -30,17 +31,17 @@ public class ActSignInScanQrCodeResultDTO implements Serializable { /** * 打卡开始时间 */ - private String signinStartTime; + private Date signinStartTime; /** * 打卡截止时间 */ - private String signinEndTime; + private Date signinEndTime; /** * 签到奖励积分 */ - private String reward; + private Integer reward; /** * 签到状态:0-未签到,1-已签到 diff --git a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml index 1e25c863..b755d2e8 100644 --- a/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml +++ b/esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/resources/mapper/activity/ActUserPointsLogDao.xml @@ -33,10 +33,10 @@ WHERE t.DEL_FLAG = '0' AND t.OPERATION_TYPE = '9' - AND r.ACT_ID = #{formDto.actId} + AND r.ACT_ID = #{actId} ORDER BY t.CREATED_TIME DESC - LIMIT #{formDto.pageIndex}, #{formDto.pageSize} + LIMIT #{pageIndex}, #{pageSize} + SELECT + ri.ID, + ri.CONTENT, + ri.ANONYMOUS_FLAG, + ri.ADVICE_USER, + ri.ADVICE_USER_MOBILE, + ri.CREATED_TIME, + ci.IMG_URL + FROM + epdc_advice ri + LEFT JOIN epdc_custom_img ci ON ci.REFERENCE_ID = ri.ID + AND ci.DEL_FLAG = '0' + WHERE + ri.ID IN ( + SELECT + t.ID + FROM + ( SELECT ID FROM epdc_advice WHERE DEL_FLAG = '0' AND SHIELD_FLAG = '0' AND USER_ID = #{userId} ORDER BY CREATED_TIME DESC LIMIT #{pageIndex},#{pageSize} ) t + ) + ORDER BY + ri.CREATED_TIME DESC, + ci.IMG_URL + + + + + + UPDATE epdc_advice SET DEPT_NAME = #{newDeptName}, UPDATED_TIME = NOW() WHERE DEPT_ID = #{deptId} + + + \ No newline at end of file From 416dbd17c26711a760f4a5ff0681211f3a61d2d4 Mon Sep 17 00:00:00 2001 From: songyunpeng Date: Thu, 4 Mar 2021 13:25:28 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E5=BB=BA=E8=AE=AE=E7=9B=B4=E9=80=9A?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ApiCustomInfoController.java | 47 +++++++++++++ .../esua/epdc/feign/CustomFeignClient.java | 35 ++++++++++ .../fallback/CustomFeignClientFallback.java | 15 ++++ .../esua/epdc/service/CustomService.java | 24 +++++++ .../epdc/service/impl/CustomServiceImpl.java | 39 +++++++++++ .../controller/AppAdviceController.java | 70 +++++++++++++++++++ 6 files changed, 230 insertions(+) create mode 100644 esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/advice/controller/AppAdviceController.java diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiCustomInfoController.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiCustomInfoController.java index 061dd0ef..1f2ba19f 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiCustomInfoController.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/controller/ApiCustomInfoController.java @@ -361,4 +361,51 @@ public class ApiCustomInfoController { public Result callSdsMobile(@PathVariable String id) { return customService.callSdsMobile(id); } + + + + + /** + * 用户建议问题提交 + * + * @param formDto 提交信息 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author songyunpeng + * @since 2020/10/22 17:58 + */ + @PostMapping("advice/submit") + public Result adviceSubmit(@RequestBody AdviceSubmitFormDTO formDto, @LoginUser TokenDto tokenDto) { + ValidatorUtils.validateEntity(formDto); + + return customService.adviceSubmit(formDto, tokenDto); + } + + /** + * 用户建议问题列表 + * + * @param formDto 参数 + * @param tokenDto 用户信息 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author songyunpeng + * @since 2020/10/23 11:03 + */ + @GetMapping("advice/list") + public Result> reportIssueList(AdviceListFormDTO formDto, @LoginUser TokenDto tokenDto) { + ValidatorUtils.validateEntity(formDto); + + return customService.listAdvice(formDto, tokenDto); + } + + /** + * 建议问题详情 + * + * @param id 记录ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author songyunpeng + * @since 2020/10/23 10:39 + */ + @GetMapping("advice/detail/{id}") + public Result adviceDetail(@PathVariable("id") String id) { + return customService.getAdviceById(id); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/CustomFeignClient.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/CustomFeignClient.java index 3dfe379b..b48aead9 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/CustomFeignClient.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/CustomFeignClient.java @@ -332,4 +332,39 @@ public interface CustomFeignClient { **/ @GetMapping(value = "custom/epdc-app/sds/callMobile/{id}", consumes = MediaType.APPLICATION_JSON_VALUE) Result callSdsMobile(@PathVariable String id); + + + /** + * 用户建议提交 + * + * @param formDto 提交信息 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2020/10/22 18:04 + */ + @PostMapping(value = "custom/epdc-app/advice/submit", consumes = MediaType.APPLICATION_JSON_VALUE) + Result adviceSubmit(AdviceSubmitFormDTO formDto); + + /** + * 用户建议列表 + * + * @param formDto 参数 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author Liuchuang + * @since 2020/10/23 10:06 + */ + @GetMapping(value = "custom/epdc-app/advice/list", consumes = MediaType.APPLICATION_JSON_VALUE) + Result> adviceList(AdviceListFormDTO formDto); + + /** + * 建议详情 + * + * @param id 记录ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author Liuchuang + * @since 2020/10/23 10:39 + */ + @GetMapping(value = "custom/epdc-app/advice/detail/{id}", consumes = MediaType.APPLICATION_JSON_VALUE) + Result adviceDetail(@PathVariable("id") String id); + } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/CustomFeignClientFallback.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/CustomFeignClientFallback.java index 5c882ff6..f2cea8e2 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/CustomFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/feign/fallback/CustomFeignClientFallback.java @@ -184,4 +184,19 @@ public class CustomFeignClientFallback implements CustomFeignClient { public Result callSdsMobile(String id) { return ModuleUtils.feignConError(ServiceConstant.EPDC_CUSTOM_SERVER, "callMobile", id); } + + @Override + public Result adviceSubmit(AdviceSubmitFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_CUSTOM_SERVER, "adviceSubmit", formDto); + } + + @Override + public Result> adviceList(AdviceListFormDTO formDto) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_CUSTOM_SERVER, "adviceList", formDto); + } + + @Override + public Result adviceDetail(String id) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_CUSTOM_SERVER, "AdviceDetail", id); + } } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/CustomService.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/CustomService.java index f8686bab..46e4c556 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/CustomService.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/CustomService.java @@ -331,4 +331,28 @@ public interface CustomService { * @Param [formDTO] **/ Result> getEvaluationList(EpdcSelectEvaluationListFormDTO formDTO); + /** + * @Description 提交建议 + * @Author songyunpeng + * @Date 2021/3/4 + * @Param [formDto, tokenDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result adviceSubmit(AdviceSubmitFormDTO formDto, TokenDto tokenDto); + /** + * @Description 建议列表 + * @Author songyunpeng + * @Date 2021/3/4 + * @Param [formDto, tokenDto] + * @return com.elink.esua.epdc.commons.tools.utils.Result> + **/ + Result> listAdvice(AdviceListFormDTO formDto, TokenDto tokenDto); + /** + * @Description 建议详情 + * @Author songyunpeng + * @Date 2021/3/4 + * @Param [id] + * @return com.elink.esua.epdc.commons.tools.utils.Result + **/ + Result getAdviceById(String id); } diff --git a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CustomServiceImpl.java b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CustomServiceImpl.java index 14457763..98a09d8b 100644 --- a/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CustomServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-api/epdc-api-server/src/main/java/com/elink/esua/epdc/service/impl/CustomServiceImpl.java @@ -352,4 +352,43 @@ public class CustomServiceImpl implements CustomService { public Result> getEvaluationList(EpdcSelectEvaluationListFormDTO formDTO) { return customFeignClient.getEvaluationList(formDTO); } + + @Override + public Result adviceSubmit(AdviceSubmitFormDTO formDto, TokenDto tokenDto) { + if (null == tokenDto) { + return new Result().error("无效的token"); + } + + // 用户信息 + formDto.setUserId(tokenDto.getUserId()); + formDto.setRealName(tokenDto.getRealName()); + formDto.setUserFace(tokenDto.getFaceImg()); + formDto.setNickname(tokenDto.getNickname()); + formDto.setMobile(tokenDto.getMobile()); + + // 机构信息 + Result dtoResult = adminFeignClient.getParentAndAllDept(tokenDto.getGridId()); + ParentAndAllDeptDTO deptDTO = dtoResult.getData(); + // 父所有部门 + formDto.setParentDeptIds(deptDTO.getParentDeptIds()); + formDto.setParentDeptNames(deptDTO.getParentDeptNames()); + // 所有部门 + formDto.setAllDeptIds(deptDTO.getAllDeptIds()); + formDto.setAllDeptNames(deptDTO.getAllDeptNames()); + // 网格 + formDto.setDeptName(deptDTO.getGrid()); + formDto.setDeptId(deptDTO.getGridId()); + return customFeignClient.adviceSubmit(formDto); + } + + @Override + public Result> listAdvice(AdviceListFormDTO formDto, TokenDto tokenDto) { + formDto.setUserId(tokenDto.getUserId()); + return customFeignClient.adviceList(formDto); } + + @Override + public Result getAdviceById(String id) { + return customFeignClient.adviceDetail(id); + } + } diff --git a/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/advice/controller/AppAdviceController.java b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/advice/controller/AppAdviceController.java new file mode 100644 index 00000000..256ba3a0 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-custom/epdc-custom-server/src/main/java/com/elink/esua/epdc/modules/advice/controller/AppAdviceController.java @@ -0,0 +1,70 @@ +package com.elink.esua.epdc.modules.advice.controller; + +import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; +import com.elink.esua.epdc.dto.form.AdviceListFormDTO; +import com.elink.esua.epdc.dto.form.AdviceSubmitFormDTO; +import com.elink.esua.epdc.dto.result.AdviceResultDTO; +import com.elink.esua.epdc.modules.advice.service.AdviceService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 用户建议-移动端接口 + * + * @author qu qu@elink-cn.com + * @since v1.0.0 2020-10-22 + */ +@RestController +@RequestMapping(Constant.EPDC_APP + "advice") +public class AppAdviceController { + + @Autowired + private AdviceService adviceService; + + /** + * 用户建议提交 + * + * @param formDto 提交信息 + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author songyunpeng + * @since 2020/10/22 17:28 + */ + @PostMapping("submit") + public Result adviceSubmit(@RequestBody AdviceSubmitFormDTO formDto) { + ValidatorUtils.validateEntity(formDto); + + return adviceService.saveAdvice(formDto); + } + + /** + * 用户建议列表 + * + * @param formDto 参数 + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author songyunpeng + * @since 2020/10/23 10:06 + */ + @GetMapping("list") + public Result> adviceList(@RequestBody AdviceListFormDTO formDto) { + List data = adviceService.listAdvice(formDto); + return new Result>().ok(data); + } + + /** + * 建议详情 + * + * @param id 记录ID + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author songyunpeng + * @since 2020/10/23 10:39 + */ + @GetMapping("detail/{id}") + public Result adviceDetail(@PathVariable("id") String id) { + AdviceResultDTO data = adviceService.getAdviceById(id); + return new Result().ok(data); + } +}