diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxMemberClockLog.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxMemberClockLog.java new file mode 100644 index 0000000..ea6bfc8 --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/entity/WxMemberClockLog.java @@ -0,0 +1,116 @@ +package com.flossom.common.core.domain.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.flossom.common.core.annotation.Excel; +import com.flossom.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; +import java.util.List; + +/** + * 用户打卡对象 WxMemberClockLog + * + * @author flossom + * @date 2024-01-29 + */ +public class WxMemberClockLog { + + /** + * 打卡次数 + */ + private Integer clockNum; + + private String headimg; + + private String nickname; + + private Long userId; + + private String mobile; + + private String wecomTagListStr; + + private String miniProgramTagListStr; + + /* 用户注册时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date memberRegisterDate; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date lastClockTime; + + + public Integer getClockNum() { + return clockNum; + } + + public void setClockNum(Integer clockNum) { + this.clockNum = clockNum; + } + + public String getHeadimg() { + return headimg; + } + + public void setHeadimg(String headimg) { + this.headimg = headimg; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getWecomTagListStr() { + return wecomTagListStr; + } + + public void setWecomTagListStr(String wecomTagListStr) { + this.wecomTagListStr = wecomTagListStr; + } + + public String getMiniProgramTagListStr() { + return miniProgramTagListStr; + } + + public void setMiniProgramTagListStr(String miniProgramTagListStr) { + this.miniProgramTagListStr = miniProgramTagListStr; + } + + public Date getMemberRegisterDate() { + return memberRegisterDate; + } + + public void setMemberRegisterDate(Date memberRegisterDate) { + this.memberRegisterDate = memberRegisterDate; + } + + public Date getLastClockTime() { + return lastClockTime; + } + + public void setLastClockTime(Date lastClockTime) { + this.lastClockTime = lastClockTime; + } +} diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/UserClockLogReq.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/UserClockLogReq.java new file mode 100644 index 0000000..2a5ccbc --- /dev/null +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/domain/req/UserClockLogReq.java @@ -0,0 +1,155 @@ +package com.flossom.common.core.domain.req; + +import java.util.Date; +import java.util.List; + +/** + * 用户打卡日志查询对象 + * + * @author flossom + * @date 2024-01-29 + */ +public class UserClockLogReq { + + /** + * 多个用户编号,','隔开 + */ + private String userIdList; + + /** + * 单个会员昵称 + */ + private String nickname; + + /** + * 多个手机号码,','隔开 + */ + private String mobile; + + + /** + * 外部标签ID列表 + */ + private List wecomTagList; + + + /** + * 小程序标签ID列表 + */ + private List miniProgramTagList; + + /** + * 用户注册时间 + */ + private List memberRegisterDateRange; + + /** + * 用户打卡时间 + */ + private List clockDateRange; + + /** + * 用户最新打卡时间 + */ + private List clockLastDateRange; + + /** + * 用户打卡天数 + */ + private Integer clockNumStart; + + private Integer clockNumEnd; + + private List queryUserIdList; + + public UserClockLogReq() { + } + + public String getUserIdList() { + return userIdList; + } + + public void setUserIdList(String userIdList) { + this.userIdList = userIdList; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public List getWecomTagList() { + return wecomTagList; + } + + public void setWecomTagList(List wecomTagList) { + this.wecomTagList = wecomTagList; + } + + public List getMiniProgramTagList() { + return miniProgramTagList; + } + + public void setMiniProgramTagList(List miniProgramTagList) { + this.miniProgramTagList = miniProgramTagList; + } + + public List getMemberRegisterDateRange() { + return memberRegisterDateRange; + } + + public void setMemberRegisterDateRange(List memberRegisterDateRange) { + this.memberRegisterDateRange = memberRegisterDateRange; + } + + public List getClockDateRange() { + return clockDateRange; + } + + public void setClockDateRange(List clockDateRange) { + this.clockDateRange = clockDateRange; + } + + public List getClockLastDateRange() { + return clockLastDateRange; + } + + public void setClockLastDateRange(List clockLastDateRange) { + this.clockLastDateRange = clockLastDateRange; + } + + public List getQueryUserIdList() { + return queryUserIdList; + } + + public void setQueryUserIdList(List queryUserIdList) { + this.queryUserIdList = queryUserIdList; + } + + public Integer getClockNumStart() { + return clockNumStart; + } + + public void setClockNumStart(Integer clockNumStart) { + this.clockNumStart = clockNumStart; + } + + public Integer getClockNumEnd() { + return clockNumEnd; + } + + public void setClockNumEnd(Integer clockNumEnd) { + this.clockNumEnd = clockNumEnd; + } +} diff --git a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxClockLogMapper.java b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxClockLogMapper.java index 8806fab..102bad8 100644 --- a/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxClockLogMapper.java +++ b/flossom-common/flossom-common-core/src/main/java/com/flossom/common/core/mapper/WxClockLogMapper.java @@ -1,6 +1,8 @@ package com.flossom.common.core.mapper; import com.flossom.common.core.domain.entity.WxClockLog; +import com.flossom.common.core.domain.entity.WxMemberClockLog; +import com.flossom.common.core.domain.req.UserClockLogReq; import com.flossom.common.core.domain.ret.WxClockLogRet; import java.util.List; @@ -63,4 +65,6 @@ public interface WxClockLogMapper { Integer selectCountByUserId(WxClockLog queryClockLog); List selectWxClockImgRetList(WxClockLog queryClockLog); + + List selectMemberClockLogList(UserClockLogReq userClockLogReq); } diff --git a/flossom-common/flossom-common-core/src/main/resources/mapper/WxClockLogMapper.xml b/flossom-common/flossom-common-core/src/main/resources/mapper/WxClockLogMapper.xml index 4598318..4deabdb 100644 --- a/flossom-common/flossom-common-core/src/main/resources/mapper/WxClockLogMapper.xml +++ b/flossom-common/flossom-common-core/src/main/resources/mapper/WxClockLogMapper.xml @@ -29,6 +29,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + select id, user_id, instrument_id, instrument_name, clock_content, status, create_by, create_time, update_by, update_time from wx_clock_log @@ -83,6 +89,47 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by create_time desc + + SELECT LAST_INSERT_ID() diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxClockLogController.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxClockLogController.java index 508ca83..ade7dfc 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxClockLogController.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/controller/WxClockLogController.java @@ -1,10 +1,10 @@ package com.flossom.system.controller; import java.util.List; -import javax.servlet.http.HttpServletResponse; import com.flossom.common.core.domain.entity.WxClockLog; -import com.flossom.common.core.utils.poi.ExcelUtil; +import com.flossom.common.core.domain.entity.WxMemberClockLog; +import com.flossom.common.core.domain.req.UserClockLogReq; import com.flossom.common.core.web.controller.BaseController; import com.flossom.common.core.web.domain.AjaxResult; import com.flossom.common.core.web.page.TableDataInfo; @@ -40,23 +40,22 @@ public class WxClockLogController extends BaseController { */ @RequiresPermissions("system:clockLog:list") @GetMapping("/list") - public TableDataInfo list(WxClockLog wxClockLog) { - startPage(); - List list = wxClockLogService.selectWxClockLogList(wxClockLog); + public TableDataInfo list(UserClockLogReq userClockLogReq) { + List list = wxClockLogService.selectWxClockLogList(userClockLogReq); return getDataTable(list); } /** * 导出用户打卡列表 */ - @RequiresPermissions("system:clockLog:export") - @Log(title = "用户打卡", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, WxClockLog wxClockLog) { - List list = wxClockLogService.selectWxClockLogList(wxClockLog); - ExcelUtil util = new ExcelUtil(WxClockLog.class); - util.exportExcel(response, list, "用户打卡数据"); - } +// @RequiresPermissions("system:clockLog:export") +// @Log(title = "用户打卡", businessType = BusinessType.EXPORT) +// @PostMapping("/export") +// public void export(HttpServletResponse response, WxClockLog wxClockLog) { +// List list = wxClockLogService.selectWxClockLogList(wxClockLog); +// ExcelUtil util = new ExcelUtil(WxClockLog.class); +// util.exportExcel(response, list, "用户打卡数据"); +// } /** * 获取用户打卡详细信息 diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxClockLogService.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxClockLogService.java index e733b31..421d90d 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxClockLogService.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/IWxClockLogService.java @@ -1,6 +1,8 @@ package com.flossom.system.service; import com.flossom.common.core.domain.entity.WxClockLog; +import com.flossom.common.core.domain.entity.WxMemberClockLog; +import com.flossom.common.core.domain.req.UserClockLogReq; import java.util.List; @@ -24,10 +26,10 @@ public interface IWxClockLogService { /** * 查询用户打卡列表 * - * @param wxClockLog 用户打卡 + * @param userClockLogReq 用户打卡 * @return 用户打卡集合 */ - public List selectWxClockLogList(WxClockLog wxClockLog); + public List selectWxClockLogList(UserClockLogReq userClockLogReq); /** * 新增用户打卡 diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxClockLogServiceImpl.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxClockLogServiceImpl.java index f62c3c5..684c37c 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxClockLogServiceImpl.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxClockLogServiceImpl.java @@ -1,10 +1,21 @@ package com.flossom.system.service.impl; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; import com.flossom.common.core.domain.entity.WxClockLog; +import com.flossom.common.core.domain.entity.WxMemberClockLog; +import com.flossom.common.core.domain.entity.WxUserMember; +import com.flossom.common.core.domain.entity.WxUserTag; +import com.flossom.common.core.domain.req.UserClockLogReq; +import com.flossom.common.core.domain.req.WxUserMemberVm; +import com.flossom.common.core.enums.TagTypeStatusEnum; import com.flossom.common.core.mapper.WxClockLogMapper; +import com.flossom.common.core.mapper.WxUserMemberMapper; +import com.flossom.common.core.mapper.WxUserTagMapper; import com.flossom.common.core.utils.DateUtils; +import com.flossom.common.core.utils.PageUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.flossom.system.service.IWxClockLogService; @@ -21,6 +32,15 @@ public class WxClockLogServiceImpl implements IWxClockLogService { @Autowired private WxClockLogMapper wxClockLogMapper; + @Autowired + private WxUserMemberMapper wxUserMemberMapper; + + @Autowired + private WxUserTagMapper wxUserTagMapper; + + + + /** * 查询用户打卡 * @@ -35,12 +55,66 @@ public class WxClockLogServiceImpl implements IWxClockLogService { /** * 查询用户打卡列表 * - * @param wxClockLog 用户打卡 + * @param userClockLogReq 用户打卡 * @return 用户打卡 */ @Override - public List selectWxClockLogList(WxClockLog wxClockLog) { - return wxClockLogMapper.selectWxClockLogList(wxClockLog); + public List selectWxClockLogList(UserClockLogReq userClockLogReq) { + // 查询条件 + WxUserMemberVm wxUserMemberVm = new WxUserMemberVm(); + if (!(userClockLogReq.getUserIdList() == null && userClockLogReq.getNickname() == null + && userClockLogReq.getMobile() == null && userClockLogReq.getMemberRegisterDateRange() == null + && userClockLogReq.getWecomTagList() == null && userClockLogReq.getMiniProgramTagList() == null)) { + wxUserMemberVm.setId(userClockLogReq.getUserIdList()); + wxUserMemberVm.setNickname(userClockLogReq.getNickname()); + wxUserMemberVm.setMobile(userClockLogReq.getMobile()); + if (userClockLogReq.getWecomTagList() != null && userClockLogReq.getWecomTagList().size() > 0) { + wxUserMemberVm.setWecomTags(userClockLogReq.getWecomTagList().stream().map(Long::intValue).collect(Collectors.toList())); + wxUserMemberVm.setWecomTagNum(userClockLogReq.getWecomTagList().size()); + } + if (userClockLogReq.getMiniProgramTagList() != null && userClockLogReq.getMiniProgramTagList().size() > 0) { + wxUserMemberVm.setMiniProgramTags(userClockLogReq.getMiniProgramTagList().stream().map(Long::intValue).collect(Collectors.toList())); + wxUserMemberVm.setMiniProgramTagNum(userClockLogReq.getMiniProgramTagList().size()); + } + if (userClockLogReq.getMemberRegisterDateRange() != null && userClockLogReq.getMemberRegisterDateRange().size() > 0) { + wxUserMemberVm.getParams().put("beginTime", userClockLogReq.getMemberRegisterDateRange().get(0)); + wxUserMemberVm.getParams().put("endTime", userClockLogReq.getMemberRegisterDateRange().get(1)); + } + List wxUserMemberList = wxUserMemberMapper.selectWxUserMemberListByVm(wxUserMemberVm); + + if (wxUserMemberList != null && wxUserMemberList.size() > 0) { + userClockLogReq.setQueryUserIdList(wxUserMemberList.stream().map(WxUserMember::getId).collect(Collectors.toList())); + } else { + userClockLogReq.setQueryUserIdList(Arrays.asList(0L)); + } + } + + PageUtils.startPage(); + List wxClockLogList = wxClockLogMapper.selectMemberClockLogList(userClockLogReq); + wxClockLogList.forEach(wxMemberClockLog -> { + WxUserMember wxUserMember = wxUserMemberMapper.selectWxUserMemberById(wxMemberClockLog.getUserId()); + if (wxUserMember != null) { + // 用户信息 + wxMemberClockLog.setHeadimg(wxUserMember.getHeadimg()); + wxMemberClockLog.setMobile(wxUserMember.getMobile()); + wxMemberClockLog.setNickname(wxUserMember.getNickname()); + wxMemberClockLog.setMemberRegisterDate(wxUserMember.getCreateTime()); + // 查询标签 + WxUserTag wxUserTag = new WxUserTag(); + wxUserTag.setUserId(wxUserMember.getId()); + wxUserTag.setType(TagTypeStatusEnum.MINI_PROGRAM.getCode()); + List miniProgramTagList = wxUserTagMapper.selectWxUserTagList(wxUserTag); + if (miniProgramTagList != null && miniProgramTagList.size() > 0) { + wxMemberClockLog.setMiniProgramTagListStr(miniProgramTagList.stream().map(WxUserTag::getTagName).collect(Collectors.joining(","))); + } + wxUserTag.setType(TagTypeStatusEnum.ENTERPRISE_WECHAT.getCode()); + List wecomTagList = wxUserTagMapper.selectWxUserTagList(wxUserTag); + if (wecomTagList != null && wecomTagList.size() > 0) { + wxMemberClockLog.setWecomTagListStr(wecomTagList.stream().map(WxUserTag::getTagName).collect(Collectors.joining(","))); + } + } + }); + return wxClockLogList; } /** diff --git a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxNursingLogServiceImpl.java b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxNursingLogServiceImpl.java index 98548bf..eb6863f 100644 --- a/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxNursingLogServiceImpl.java +++ b/flossom-modules/flossom-system/src/main/java/com/flossom/system/service/impl/WxNursingLogServiceImpl.java @@ -75,9 +75,11 @@ public class WxNursingLogServiceImpl implements IWxNursingLogService { wxUserMemberVm.setAreaId(userNursingLogReq.getAreaId()); if (userNursingLogReq.getWecomTagList() != null && userNursingLogReq.getWecomTagList().size() > 0) { wxUserMemberVm.setWecomTags(userNursingLogReq.getWecomTagList().stream().map(Long::intValue).collect(Collectors.toList())); + wxUserMemberVm.setWecomTagNum(userNursingLogReq.getWecomTagList().size()); } if (userNursingLogReq.getMiniProgramTagList() != null && userNursingLogReq.getMiniProgramTagList().size() > 0) { wxUserMemberVm.setMiniProgramTags(userNursingLogReq.getMiniProgramTagList().stream().map(Long::intValue).collect(Collectors.toList())); + wxUserMemberVm.setMiniProgramTagNum(userNursingLogReq.getMiniProgramTagList().size()); } List wxUserMemberList = wxUserMemberMapper.selectWxUserMemberListByVm(wxUserMemberVm); diff --git a/flossom-ui/src/views/system/clockLog/index.vue b/flossom-ui/src/views/system/clockLog/index.vue index 8bbadc6..d2e6a0d 100644 --- a/flossom-ui/src/views/system/clockLog/index.vue +++ b/flossom-ui/src/views/system/clockLog/index.vue @@ -3,204 +3,175 @@
- -
- - - - - - + + + + + + + + + + + - + + + + + + + + + + + + + + - - - - - + v-for="item in wecomTags" + :key="item.value" + :label="item.label" + :value="item.value" + > -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - + + - - - - - - - - - - 至 - - - - - 搜索 - - 重置 - + + -
+ + + + 至 + + + + + 搜索 + + 重置 + +
@@ -258,19 +229,21 @@ - - - - - - - - - - - - - + + + + + + + + + + + + +