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 + + +