diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberWechatController.java b/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberWechatController.java new file mode 100644 index 0000000..251febd --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/ums/controller/MemberWechatController.java @@ -0,0 +1,93 @@ +package com.cyl.ums.controller; + +import java.util.List; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Page; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.enums.BusinessType; +import com.cyl.ums.convert.MemberWechatConvert; +import com.cyl.ums.domain.MemberWechat; +import com.cyl.ums.pojo.query.MemberWechatQuery; +import com.cyl.ums.service.MemberWechatService; +import com.cyl.ums.pojo.vo.MemberWechatVO; +import com.ruoyi.common.utils.poi.ExcelUtil; +/** + * 用户微信信息Controller + * + * @author zcc + * @date 2022-11-28 + */ +@Api(description ="用户微信信息接口列表") +@RestController +@RequestMapping("/ums/memberWechat") +public class MemberWechatController extends BaseController { + @Autowired + private MemberWechatService service; + @Autowired + private MemberWechatConvert convert; + + @ApiOperation("查询用户微信信息列表") + @PreAuthorize("@ss.hasPermi('ums:memberWechat:list')") + @PostMapping("/list") + public ResponseEntity> list(@RequestBody MemberWechatQuery query, Pageable page) { + List list = service.selectList(query, page); + return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal())); + } + + @ApiOperation("导出用户微信信息列表") + @PreAuthorize("@ss.hasPermi('ums:memberWechat:export')") + @Log(title = "用户微信信息", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public ResponseEntity export(MemberWechatQuery query) { + List list = service.selectList(query, null); + ExcelUtil util = new ExcelUtil<>(MemberWechatVO.class); + return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "用户微信信息数据")); + } + + @ApiOperation("获取用户微信信息详细信息") + @PreAuthorize("@ss.hasPermi('ums:memberWechat:query')") + @GetMapping(value = "/{id}") + public ResponseEntity getInfo(@PathVariable("id") Long id) { + return ResponseEntity.ok(service.selectById(id)); + } + + @ApiOperation("新增用户微信信息") + @PreAuthorize("@ss.hasPermi('ums:memberWechat:add')") + @Log(title = "用户微信信息", businessType = BusinessType.INSERT) + @PostMapping + public ResponseEntity add(@RequestBody MemberWechat memberWechat) { + return ResponseEntity.ok(service.insert(memberWechat)); + } + + @ApiOperation("修改用户微信信息") + @PreAuthorize("@ss.hasPermi('ums:memberWechat:edit')") + @Log(title = "用户微信信息", businessType = BusinessType.UPDATE) + @PutMapping + public ResponseEntity edit(@RequestBody MemberWechat memberWechat) { + return ResponseEntity.ok(service.update(memberWechat)); + } + + @ApiOperation("删除用户微信信息") + @PreAuthorize("@ss.hasPermi('ums:memberWechat:remove')") + @Log(title = "用户微信信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public ResponseEntity remove(@PathVariable Long[] ids) { + return ResponseEntity.ok(service.deleteByIds(ids)); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberWechatConvert.java b/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberWechatConvert.java new file mode 100644 index 0000000..f34840e --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/ums/convert/MemberWechatConvert.java @@ -0,0 +1,16 @@ +package com.cyl.ums.convert; + +import org.mapstruct.Mapper; +import com.cyl.ums.domain.MemberWechat; +import com.cyl.ums.pojo.vo.MemberWechatVO; +import java.util.List; +/** + * 用户微信信息 DO <=> DTO <=> VO / BO / Query + * + * @author zcc + */ +@Mapper(componentModel = "spring") +public interface MemberWechatConvert { + + List dos2vos(List list); +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberWechat.java b/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberWechat.java new file mode 100644 index 0000000..f78f1b9 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/ums/domain/MemberWechat.java @@ -0,0 +1,81 @@ +package com.cyl.ums.domain; + +import java.time.LocalDateTime; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.baomidou.mybatisplus.annotation.TableName; +/** + * 用户微信信息对象 ums_member_wechat + * + * @author zcc + */ +@ApiModel(description="用户微信信息对象") +@Data +@TableName("ums_member_wechat") +public class MemberWechat { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("MEMBER_ID") + @Excel(name = "MEMBER_ID") + private Long memberId; + + @ApiModelProperty("只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段") + @Excel(name = "只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段") + private String unionid; + + @ApiModelProperty("用户的标识,对当前公众号唯一") + @Excel(name = "用户的标识,对当前公众号唯一") + private String openid; + + @ApiModelProperty("小程序唯一身份ID") + @Excel(name = "小程序唯一身份ID") + private String routineOpenid; + + @ApiModelProperty("用户所在的分组ID(兼容旧的用户分组接口)") + @Excel(name = "用户所在的分组ID", readConverterExp = "兼=容旧的用户分组接口") + private Integer groupid; + + @ApiModelProperty("用户被打上的标签ID列表") + @Excel(name = "用户被打上的标签ID列表") + private String tagidList; + + @ApiModelProperty("用户是否订阅该公众号标识") + @Excel(name = "用户是否订阅该公众号标识") + private Integer subscribe; + + @ApiModelProperty("关注公众号时间") + @Excel(name = "关注公众号时间") + private Integer subscribeTime; + + @ApiModelProperty("小程序用户会话密匙") + @Excel(name = "小程序用户会话密匙") + private String sessionKey; + + @ApiModelProperty("token") + @Excel(name = "token") + private String accessToken; + + @ApiModelProperty("过期时间") + @Excel(name = "过期时间") + private Integer expiresIn; + + @ApiModelProperty("刷新token") + @Excel(name = "刷新token") + private String refreshToken; + + @ApiModelProperty("过期时间") + @Excel(name = "过期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime expireTime; + + @ApiModelProperty("创建时间") + private LocalDateTime createTime; + + @ApiModelProperty("修改时间") + private LocalDateTime updateTime; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberWechatMapper.java b/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberWechatMapper.java new file mode 100644 index 0000000..cfdae71 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/ums/mapper/MemberWechatMapper.java @@ -0,0 +1,28 @@ +package com.cyl.ums.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import com.cyl.ums.domain.MemberWechat; + +/** + * 用户微信信息Mapper接口 + * + * @author zcc + */ +public interface MemberWechatMapper extends BaseMapper { + /** + * 查询用户微信信息列表 + * + * @param memberWechat 用户微信信息 + * @return 用户微信信息集合 + */ + List selectByEntity(MemberWechat memberWechat); + + /** + * 批量软删除 + * @param ids + * @return + */ + int updateDelFlagByIds(@Param("ids") Long[] ids); +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberWechatQuery.java b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberWechatQuery.java new file mode 100644 index 0000000..5f2a356 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/query/MemberWechatQuery.java @@ -0,0 +1,55 @@ +package com.cyl.ums.pojo.query; + +import java.time.LocalDateTime; +import lombok.Data; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +/** + * 用户微信信息 查询 对象 + * + * @author zcc + */ +@ApiModel(description="用户微信信息 查询 对象") +@Data +public class MemberWechatQuery { + @ApiModelProperty("MEMBER_ID 精确匹配") + private Long memberId; + + @ApiModelProperty("只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段 精确匹配") + private String unionid; + + @ApiModelProperty("用户的标识,对当前公众号唯一 精确匹配") + private String openid; + + @ApiModelProperty("小程序唯一身份ID 精确匹配") + private String routineOpenid; + + @ApiModelProperty("用户所在的分组ID(兼容旧的用户分组接口) 精确匹配") + private Integer groupid; + + @ApiModelProperty("用户被打上的标签ID列表 精确匹配") + private String tagidList; + + @ApiModelProperty("用户是否订阅该公众号标识 精确匹配") + private Integer subscribe; + + @ApiModelProperty("关注公众号时间 精确匹配") + private Integer subscribeTime; + + @ApiModelProperty("小程序用户会话密匙 精确匹配") + private String sessionKey; + + @ApiModelProperty("token 精确匹配") + private String accessToken; + + @ApiModelProperty("过期时间 精确匹配") + private Integer expiresIn; + + @ApiModelProperty("刷新token 精确匹配") + private String refreshToken; + + @ApiModelProperty("过期时间 精确匹配") + private LocalDateTime expireTime; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberWechatVO.java b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberWechatVO.java new file mode 100644 index 0000000..df8cf8b --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/ums/pojo/vo/MemberWechatVO.java @@ -0,0 +1,60 @@ +package com.cyl.ums.pojo.vo; + +import java.time.LocalDateTime; +import com.ruoyi.common.annotation.Excel; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +/** + * 用户微信信息 数据视图对象 + * + * @author zcc + */ +@Data +public class MemberWechatVO { + /** ID */ + private Long id; + /** MEMBER_ID */ + @Excel(name = "MEMBER_ID") + private Long memberId; + /** 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段 */ + @Excel(name = "只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段") + private String unionid; + /** 用户的标识,对当前公众号唯一 */ + @Excel(name = "用户的标识,对当前公众号唯一") + private String openid; + /** 小程序唯一身份ID */ + @Excel(name = "小程序唯一身份ID") + private String routineOpenid; + /** 用户所在的分组ID(兼容旧的用户分组接口) */ + @Excel(name = "用户所在的分组ID", readConverterExp = "兼=容旧的用户分组接口") + private Integer groupid; + /** 用户被打上的标签ID列表 */ + @Excel(name = "用户被打上的标签ID列表") + private String tagidList; + /** 用户是否订阅该公众号标识 */ + @Excel(name = "用户是否订阅该公众号标识") + private Integer subscribe; + /** 关注公众号时间 */ + @Excel(name = "关注公众号时间") + private Integer subscribeTime; + /** 小程序用户会话密匙 */ + @Excel(name = "小程序用户会话密匙") + private String sessionKey; + /** token */ + @Excel(name = "token") + private String accessToken; + /** 过期时间 */ + @Excel(name = "过期时间") + private Integer expiresIn; + /** 刷新token */ + @Excel(name = "刷新token") + private String refreshToken; + /** 过期时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "过期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime expireTime; + /** 创建时间 */ + private LocalDateTime createTime; + /** 修改时间 */ + private LocalDateTime updateTime; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberWechatService.java b/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberWechatService.java new file mode 100644 index 0000000..7c66ebe --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/ums/service/MemberWechatService.java @@ -0,0 +1,148 @@ +package com.cyl.ums.service; + +import java.time.LocalDateTime; +import java.util.Arrays; +import java.util.List; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.PageHelper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import com.cyl.ums.mapper.MemberWechatMapper; +import com.cyl.ums.domain.MemberWechat; +import com.cyl.ums.pojo.query.MemberWechatQuery; + +/** + * 用户微信信息Service业务层处理 + * + * + * @author zcc + */ +@Service +public class MemberWechatService { + @Autowired + private MemberWechatMapper memberWechatMapper; + + /** + * 查询用户微信信息 + * + * @param id 用户微信信息主键 + * @return 用户微信信息 + */ + public MemberWechat selectById(Long id) { + return memberWechatMapper.selectById(id); + } + + /** + * 查询用户微信信息列表 + * + * @param query 查询条件 + * @param page 分页条件 + * @return 用户微信信息 + */ + public List selectList(MemberWechatQuery query, Pageable page) { + if (page != null) { + PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); + } + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("del_flag",0); + Long memberId = query.getMemberId(); + if (memberId != null) { + qw.eq("member_id", memberId); + } + String unionid = query.getUnionid(); + if (!StringUtils.isEmpty(unionid)) { + qw.eq("unionid", unionid); + } + String openid = query.getOpenid(); + if (!StringUtils.isEmpty(openid)) { + qw.eq("openid", openid); + } + String routineOpenid = query.getRoutineOpenid(); + if (!StringUtils.isEmpty(routineOpenid)) { + qw.eq("routine_openid", routineOpenid); + } + Integer groupid = query.getGroupid(); + if (groupid != null) { + qw.eq("groupid", groupid); + } + String tagidList = query.getTagidList(); + if (!StringUtils.isEmpty(tagidList)) { + qw.eq("tagid_list", tagidList); + } + Integer subscribe = query.getSubscribe(); + if (subscribe != null) { + qw.eq("subscribe", subscribe); + } + Integer subscribeTime = query.getSubscribeTime(); + if (subscribeTime != null) { + qw.eq("subscribe_time", subscribeTime); + } + String sessionKey = query.getSessionKey(); + if (!StringUtils.isEmpty(sessionKey)) { + qw.eq("session_key", sessionKey); + } + String accessToken = query.getAccessToken(); + if (!StringUtils.isEmpty(accessToken)) { + qw.eq("access_token", accessToken); + } + Integer expiresIn = query.getExpiresIn(); + if (expiresIn != null) { + qw.eq("expires_in", expiresIn); + } + String refreshToken = query.getRefreshToken(); + if (!StringUtils.isEmpty(refreshToken)) { + qw.eq("refresh_token", refreshToken); + } + LocalDateTime expireTime = query.getExpireTime(); + if (expireTime != null) { + qw.eq("expire_time", expireTime); + } + return memberWechatMapper.selectList(qw); + } + + /** + * 新增用户微信信息 + * + * @param memberWechat 用户微信信息 + * @return 结果 + */ + public int insert(MemberWechat memberWechat) { + memberWechat.setDelFlag(0); + memberWechat.setCreateTime(LocalDateTime.now()); + return memberWechatMapper.insert(memberWechat); + } + + /** + * 修改用户微信信息 + * + * @param memberWechat 用户微信信息 + * @return 结果 + */ + public int update(MemberWechat memberWechat) { + return memberWechatMapper.updateById(memberWechat); + } + + /** + * 批量删除用户微信信息 + * + * @param ids 需要删除的用户微信信息主键 + * @return 结果 + */ + public int deleteByIds(Long[] ids) { + return memberWechatMapper.updateDelFlagByIds(ids); + } + + /** + * 删除用户微信信息信息 + * + * @param id 用户微信信息主键 + * @return 结果 + */ + public int deleteById(Long id) { + Long[] ids = {id}; + return memberWechatMapper.updateDelFlagByIds(ids); + } +} diff --git a/ruoyi-mall/src/main/resources/mapper/ums/MemberWechatMapper.xml b/ruoyi-mall/src/main/resources/mapper/ums/MemberWechatMapper.xml new file mode 100644 index 0000000..3f84ad7 --- /dev/null +++ b/ruoyi-mall/src/main/resources/mapper/ums/MemberWechatMapper.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select id, member_id, unionid, openid, routine_openid, groupid, tagid_list, subscribe, subscribe_time, session_key, access_token, expires_in, refresh_token, expire_time, create_time, update_time from ums_member_wechat + + + + + + update ums_member_wechat set del_flag=1 + + id in #{it} + + + diff --git a/sql/ums/memberWechat.sql b/sql/ums/memberWechat.sql new file mode 100644 index 0000000..9a48367 --- /dev/null +++ b/sql/ums/memberWechat.sql @@ -0,0 +1,22 @@ +-- 菜单 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('用户微信信息', '3', '1', 'memberWechat', 'ums/memberWechat/index', 1, 0, 'C', '0', '0', 'ums:memberWechat:list', '#', 1, sysdate(), '', null, '用户微信信息菜单'); + +-- 按钮父菜单ID +SELECT @parentId := LAST_INSERT_ID(); + +-- 按钮 SQL +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('用户微信信息查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', 'ums:memberWechat:query', '#', 1, sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('用户微信信息新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', 'ums:memberWechat:add', '#', 1, sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('用户微信信息修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', 'ums:memberWechat:edit', '#', 1, sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('用户微信信息删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', 'ums:memberWechat:remove', '#', 1, sysdate(), '', null, ''); + +insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) +values('用户微信信息导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', 'ums:memberWechat:export', '#', 1, sysdate(), '', null, '');