diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/PluginVo.java b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/PluginVo.java new file mode 100644 index 00000000..cbca1190 --- /dev/null +++ b/cloudutil/src/main/java/com/ccsens/cloudutil/bean/tall/vo/PluginVo.java @@ -0,0 +1,28 @@ +package com.ccsens.cloudutil.bean.tall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PluginVo { + + @ApiModel + @Data + public static class PluginSignField{ + @ApiModelProperty("变量名") + private String name; + @ApiModelProperty("展示名") + private String description; + @ApiModelProperty("类型 0文本 1文本框 2单选 3多选") + private int type; + @ApiModelProperty("类型值(文本,单选,多选,展示的内容 例:{\"1\":\"男\",\"2\":\"女\"},)") + private String fieldValue; + @ApiModelProperty("正则表达式") + private String format; + @ApiModelProperty("是否必填") + private int isRequired; + @ApiModelProperty("是否支持模糊查询") + private int isFuzzy; + } +} diff --git a/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java b/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java index 4e1acc77..539a4d15 100644 --- a/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java +++ b/cloudutil/src/main/java/com/ccsens/cloudutil/feign/TallFeignClient.java @@ -5,6 +5,7 @@ import com.ccsens.cloudutil.bean.tall.dto.LogDto; import com.ccsens.cloudutil.bean.tall.dto.MemberRoleDto; import com.ccsens.cloudutil.bean.tall.dto.UserDto; import com.ccsens.cloudutil.bean.tall.vo.MemberVo; +import com.ccsens.cloudutil.bean.tall.vo.PluginVo; import com.ccsens.cloudutil.bean.tall.vo.TaskVo; import com.ccsens.cloudutil.bean.tall.vo.UserVo; import com.ccsens.util.JsonResponse; @@ -109,6 +110,12 @@ public interface TallFeignClient { @GetMapping("/users/claims") String getUserId(@RequestParam( name = "token")String token); + /** + * 通过插件id获取签到字段和详细信息 + */ + @GetMapping("/plugins/sign") + List getSignFieldByTaskPluginId(Long taskPluginId); + } @Slf4j @@ -171,6 +178,11 @@ class TallFeignClientFallBack implements FallbackFactory { public String getUserId(String token) { return null; } + + @Override + public List getSignFieldByTaskPluginId(Long taskPluginId){ + return null; + } }; } diff --git a/mt/src/main/java/com/ccsens/mt/api/SigninController.java b/mt/src/main/java/com/ccsens/mt/api/SigninController.java index 202f5800..39490ac3 100644 --- a/mt/src/main/java/com/ccsens/mt/api/SigninController.java +++ b/mt/src/main/java/com/ccsens/mt/api/SigninController.java @@ -26,20 +26,47 @@ public class SigninController { @Autowired private ISigninService signinService; - @ApiOperation(value = "签到", notes = "") + @ApiOperation(value = "查看签到需要的信息", notes = "") @ApiImplicitParams({ }) - @RequestMapping(value = "", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) - public JsonResponse signin(HttpServletRequest request, - @ApiParam @Validated @RequestBody SigninDto.SigninInfo signinInfo) throws Exception { - log.info("{}:签到"); + @RequestMapping(value = "info", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) + public JsonResponse getSignField(HttpServletRequest request, + @ApiParam @Validated @RequestBody Long taskPluginId) throws Exception { + log.info("{}:查看签到需要填的信息"); //获取userId Long userId = userService.getUserIdByToken(request); - SigninVo.SigninVoInfo signinVoInfo = signinService.signin(signinInfo,userId); + SigninVo.SignInfoVo signInfoVo = signinService.getSignField(taskPluginId,userId); - return JsonResponse.newInstance().ok(signinVoInfo); + return JsonResponse.newInstance().ok(signInfoVo); } +// @ApiOperation(value = "模糊查询签到信息", notes = "") +// @ApiImplicitParams({ +// }) +// @RequestMapping(value = "fuzzy", method = RequestMethod.GET, produces = {"application/json;charset=UTF-8"}) +// public JsonResponse getSignByFuzzy(HttpServletRequest request, +// @ApiParam @Validated @RequestBody Long projectId,String signinName,String key) throws Exception { +// log.info("{}:查看签到需要填的信息"); +// //获取userId +// Long userId = userService.getUserIdByToken(request); +// +// return JsonResponse.newInstance().ok(signInfoVo); +// } + +// @ApiOperation(value = "签到", notes = "") +// @ApiImplicitParams({ +// }) +// @RequestMapping(value = "", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) +// public JsonResponse signin(HttpServletRequest request, +// @ApiParam @Validated @RequestBody SigninDto.SigninInfo signinInfo) throws Exception { +// log.info("{}:签到"); +// //获取userId +// Long userId = userService.getUserIdByToken(request); +// SigninVo.SigninVoInfo signinVoInfo = signinService.signin(signinInfo,userId); +// +// return JsonResponse.newInstance().ok(signinVoInfo); +// } + @ApiOperation(value = "查看自己的签到信息", notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "taskId", value = "签到任务的id", required = true, paramType = ""), diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOther.java b/mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOther.java index 66a1a183..2471cd09 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOther.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOther.java @@ -6,7 +6,7 @@ import java.util.Date; public class MtSigninOther implements Serializable { private Long id; - private Long userId; + private Long signinBasicId; private String key; @@ -28,12 +28,12 @@ public class MtSigninOther implements Serializable { this.id = id; } - public Long getUserId() { - return userId; + public Long getSigninBasicId() { + return signinBasicId; } - public void setUserId(Long userId) { - this.userId = userId; + public void setSigninBasicId(Long signinBasicId) { + this.signinBasicId = signinBasicId; } public String getKey() { @@ -83,7 +83,7 @@ public class MtSigninOther implements Serializable { sb.append(" ["); sb.append("Hash = ").append(hashCode()); sb.append(", id=").append(id); - sb.append(", userId=").append(userId); + sb.append(", signinBasicId=").append(signinBasicId); sb.append(", key=").append(key); sb.append(", value=").append(value); sb.append(", createdAt=").append(createdAt); diff --git a/mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOtherExample.java b/mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOtherExample.java index 784aa8e0..e3d34779 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOtherExample.java +++ b/mt/src/main/java/com/ccsens/mt/bean/po/MtSigninOtherExample.java @@ -165,63 +165,63 @@ public class MtSigninOtherExample { return (Criteria) this; } - public Criteria andUserIdIsNull() { - addCriterion("user_id is null"); + public Criteria andSigninBasicIdIsNull() { + addCriterion("signin_basic_id is null"); return (Criteria) this; } - public Criteria andUserIdIsNotNull() { - addCriterion("user_id is not null"); + public Criteria andSigninBasicIdIsNotNull() { + addCriterion("signin_basic_id is not null"); return (Criteria) this; } - public Criteria andUserIdEqualTo(Long value) { - addCriterion("user_id =", value, "userId"); + public Criteria andSigninBasicIdEqualTo(Long value) { + addCriterion("signin_basic_id =", value, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdNotEqualTo(Long value) { - addCriterion("user_id <>", value, "userId"); + public Criteria andSigninBasicIdNotEqualTo(Long value) { + addCriterion("signin_basic_id <>", value, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdGreaterThan(Long value) { - addCriterion("user_id >", value, "userId"); + public Criteria andSigninBasicIdGreaterThan(Long value) { + addCriterion("signin_basic_id >", value, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdGreaterThanOrEqualTo(Long value) { - addCriterion("user_id >=", value, "userId"); + public Criteria andSigninBasicIdGreaterThanOrEqualTo(Long value) { + addCriterion("signin_basic_id >=", value, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdLessThan(Long value) { - addCriterion("user_id <", value, "userId"); + public Criteria andSigninBasicIdLessThan(Long value) { + addCriterion("signin_basic_id <", value, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdLessThanOrEqualTo(Long value) { - addCriterion("user_id <=", value, "userId"); + public Criteria andSigninBasicIdLessThanOrEqualTo(Long value) { + addCriterion("signin_basic_id <=", value, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdIn(List values) { - addCriterion("user_id in", values, "userId"); + public Criteria andSigninBasicIdIn(List values) { + addCriterion("signin_basic_id in", values, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdNotIn(List values) { - addCriterion("user_id not in", values, "userId"); + public Criteria andSigninBasicIdNotIn(List values) { + addCriterion("signin_basic_id not in", values, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdBetween(Long value1, Long value2) { - addCriterion("user_id between", value1, value2, "userId"); + public Criteria andSigninBasicIdBetween(Long value1, Long value2) { + addCriterion("signin_basic_id between", value1, value2, "signinBasicId"); return (Criteria) this; } - public Criteria andUserIdNotBetween(Long value1, Long value2) { - addCriterion("user_id not between", value1, value2, "userId"); + public Criteria andSigninBasicIdNotBetween(Long value1, Long value2) { + addCriterion("signin_basic_id not between", value1, value2, "signinBasicId"); return (Criteria) this; } diff --git a/mt/src/main/java/com/ccsens/mt/bean/vo/SigninVo.java b/mt/src/main/java/com/ccsens/mt/bean/vo/SigninVo.java index 3d511f07..f4202bcc 100644 --- a/mt/src/main/java/com/ccsens/mt/bean/vo/SigninVo.java +++ b/mt/src/main/java/com/ccsens/mt/bean/vo/SigninVo.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + @Data public class SigninVo { @Data @@ -18,4 +20,34 @@ public class SigninVo { @ApiModelProperty("签到时间") private Long signTime; } + + @Data + @ApiModel + public static class SignInfoVo{ + @ApiModelProperty("是否已签到 0未签到 1已签到") + private Integer isSign; + @ApiModelProperty("签到时间") + private Long signTime; + @ApiModelProperty("序号") + private int sequence; + @ApiModelProperty("签到字段") + private List signField; + } + @Data + @ApiModel + public static class SignField{ + @ApiModelProperty("字段名") + private String name; + @ApiModelProperty("内容") + private String value; + @ApiModelProperty("类型 0文本,1文本框,2单选,3多选") + private int type; + @ApiModelProperty("类型值(文本,单选,多选,展示的内容 例:{\"1\":\"男\",\"2\":\"女\"})") + private String field; + @ApiModelProperty("是否必填") + private int isRequired; + @ApiModelProperty("是否支持模糊查询") + private int isFuzzy; + + } } diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninBasicDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninBasicDao.java new file mode 100644 index 00000000..9c70475c --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninBasicDao.java @@ -0,0 +1,8 @@ +package com.ccsens.mt.persist.dao; + +import com.ccsens.mt.persist.mapper.MtSigninBasicMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface MtSigninBasicDao extends MtSigninBasicMapper { +} diff --git a/mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninOtherDao.java b/mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninOtherDao.java new file mode 100644 index 00000000..715b6430 --- /dev/null +++ b/mt/src/main/java/com/ccsens/mt/persist/dao/MtSigninOtherDao.java @@ -0,0 +1,8 @@ +package com.ccsens.mt.persist.dao; + +import com.ccsens.mt.persist.mapper.MtSigninOtherMapper; +import org.springframework.stereotype.Repository; + +@Repository +public interface MtSigninOtherDao extends MtSigninOtherMapper { +} diff --git a/mt/src/main/java/com/ccsens/mt/service/ISigninService.java b/mt/src/main/java/com/ccsens/mt/service/ISigninService.java index 5dc39f74..e9a2762e 100644 --- a/mt/src/main/java/com/ccsens/mt/service/ISigninService.java +++ b/mt/src/main/java/com/ccsens/mt/service/ISigninService.java @@ -11,4 +11,6 @@ public interface ISigninService { SigninVo.SigninVoInfo getSignByTaskId(Long taskId, Long userId); List getSignAllByTaskId(Long taskId, Long userId); + + SigninVo.SignInfoVo getSignField(Long taskPluginId, Long userId); } diff --git a/mt/src/main/java/com/ccsens/mt/service/SigninService.java b/mt/src/main/java/com/ccsens/mt/service/SigninService.java index 7b1cd8c0..3133de81 100644 --- a/mt/src/main/java/com/ccsens/mt/service/SigninService.java +++ b/mt/src/main/java/com/ccsens/mt/service/SigninService.java @@ -2,11 +2,15 @@ package com.ccsens.mt.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.ObjectUtil; +import com.ccsens.cloudutil.bean.tall.vo.PluginVo; +import com.ccsens.cloudutil.feign.TallFeignClient; import com.ccsens.mt.bean.dto.SigninDto; -import com.ccsens.mt.bean.po.MtSignin; -import com.ccsens.mt.bean.po.MtSigninExample; +import com.ccsens.mt.bean.po.*; import com.ccsens.mt.bean.vo.SigninVo; +import com.ccsens.mt.persist.dao.MtSigninBasicDao; import com.ccsens.mt.persist.dao.MtSigninDao; +import com.ccsens.mt.persist.dao.MtSigninOtherDao; import com.ccsens.util.CodeEnum; import com.ccsens.util.exception.BaseException; import org.springframework.beans.factory.annotation.Autowired; @@ -21,6 +25,73 @@ public class SigninService implements ISigninService{ private MtSigninDao mtSigninDao; @Autowired private Snowflake snowflake; + @Autowired + private MtSigninBasicDao signinBasicDao; + @Autowired + private MtSigninOtherDao signinOtherDao; + @Autowired + private TallFeignClient tallFeignClient; + + + /** + * 查看签到所需信息 + * @param taskPluginId + * @param userId + * @return + */ + @Override + public SigninVo.SignInfoVo getSignField(Long taskPluginId, Long userId) { + SigninVo.SignInfoVo signInfoVo = new SigninVo.SignInfoVo(); + //1.判断用户是否已签到 + MtSigninBasicExample signinBasicExample = new MtSigninBasicExample(); + signinBasicExample.createCriteria().andUserIdEqualTo(userId).andTaskPluginIdEqualTo(taskPluginId); + List signinBasicList = signinBasicDao.selectByExample(signinBasicExample); + if(CollectionUtil.isNotEmpty(signinBasicList)){ + MtSigninBasic mtSigninBasic = signinBasicList.get(0); + //已签到,返回签到的信息 + List signFieldList = new ArrayList<>(); + MtSigninOtherExample signinOtherExample = new MtSigninOtherExample(); + signinOtherExample.createCriteria().andSigninBasicIdEqualTo(mtSigninBasic.getId()); + List signinOtherList = signinOtherDao.selectByExample(signinOtherExample); + if(CollectionUtil.isNotEmpty(signinOtherList)){ + for (MtSigninOther signinOther : signinOtherList){ + SigninVo.SignField signField = new SigninVo.SignField(); + signField.setName(signinOther.getKey()); + signField.setValue(signinOther.getValue()); + signFieldList.add(signField); + } + } + + signInfoVo.setIsSign(1); + signInfoVo.setSequence(mtSigninBasic.getSequence()); + signInfoVo.setSignTime(mtSigninBasic.getSigninTime()); + signInfoVo.setSignField(signFieldList); + }else{ + //获取字段详细的信息 + List signFieldList = new ArrayList<>(); + List pluginSignFieldList = tallFeignClient.getSignFieldByTaskPluginId(taskPluginId); + if(CollectionUtil.isNotEmpty(pluginSignFieldList)){ + for(PluginVo.PluginSignField pluginSignField : pluginSignFieldList) { + SigninVo.SignField signField = new SigninVo.SignField(); + signField.setName(pluginSignField.getDescription()); + signField.setField(pluginSignField.getFieldValue()); + signField.setIsFuzzy(pluginSignField.getIsFuzzy()); + signField.setIsRequired(pluginSignField.getIsRequired()); + signField.setType(pluginSignField.getType()); + signFieldList.add(signField); + } + } + signInfoVo.setIsSign(0); + signInfoVo.setSignField(signFieldList); + } + + return signInfoVo; + } + + + + + /*=====================================================================================================*/ /** * 签到 diff --git a/mt/src/main/resources/mapper_raw/MtSigninOtherMapper.xml b/mt/src/main/resources/mapper_raw/MtSigninOtherMapper.xml index a54e2116..5684115b 100644 --- a/mt/src/main/resources/mapper_raw/MtSigninOtherMapper.xml +++ b/mt/src/main/resources/mapper_raw/MtSigninOtherMapper.xml @@ -3,7 +3,7 @@ - + @@ -69,7 +69,7 @@ - id, user_id, key, value, created_at, updated_at, rec_status + id, signin_basic_id, key, value, created_at, updated_at, rec_status