From 466a4c6abf800e8202a216d54ace722c1f8b8416 Mon Sep 17 00:00:00 2001 From: czc Date: Wed, 26 Jul 2023 14:55:29 +0800 Subject: [PATCH 1/9] =?UTF-8?q?H5=E7=99=BB=E5=BD=95=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 2 +- .../ruoyi/common/utils/ip/AddressUtils.java | 7 +++- .../cyl/h5/controller/H5MemberController.java | 18 ++++++++ .../com/cyl/h5/service/H5MemberService.java | 41 +++++++++++++++++-- 4 files changed, 62 insertions(+), 6 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 9378180..4e22218 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -11,7 +11,7 @@ ruoyi: # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) profile: C:/ruoyi/uploadPath # 获取ip地址开关 - addressEnabled: false + addressEnabled: true # 验证码类型 math 数组计算 char 字符验证 captchaType: math # 前端请求的 跟踪 header name diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java index 01c24fc..8c8728a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java @@ -44,7 +44,8 @@ public class AddressUtils JSONObject obj = JSONObject.parseObject(rspStr); String region = obj.getString("pro"); String city = obj.getString("city"); - return String.format("%s %s", region, city); + String operator = ((String)obj.get("addr")).split(" ")[1]; + return String.format("%s|%s|%s", region, city, operator); } catch (Exception e) { @@ -53,4 +54,8 @@ public class AddressUtils } return address; } + + public static void main(String[] args) { + System.out.println("地址:" + getRealAddressByIP("14.125.8.236")); + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java index ad4020d..e3bbe96 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java @@ -8,17 +8,25 @@ import com.cyl.h5.service.H5MemberService; import com.cyl.manager.ums.pojo.vo.MemberVO; import com.cyl.wechat.WechatAuthService; import com.cyl.wechat.response.WechatUserAuth; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.domain.model.LoginMember; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.framework.web.service.TokenService; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; + @RestController @RequestMapping("/h5") public class H5MemberController { @Autowired private H5MemberService service; + @Autowired + private TokenService tokenService; @ApiOperation("会员注册") @@ -56,4 +64,14 @@ public class H5MemberController { public void setWechatInfo(@RequestBody String data){ service.setWechatInfo(data); } + + @ApiOperation("新增会员登录记录") + @Log(title = "会员登录记录", businessType = BusinessType.INSERT) + @GetMapping("/record/login") + public void add(HttpServletRequest request) { + LoginMember loginMember = tokenService.getLoginMember(request); + if (loginMember != null){ + service.insert(loginMember.getMemberId()); + } + } } diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java index f807b86..d4e1277 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5MemberService.java @@ -13,21 +13,24 @@ import com.cyl.h5.pojo.response.RegisterResponse; import com.cyl.h5.pojo.response.ValidatePhoneResponse; import com.cyl.h5.pojo.response.H5LoginResponse; import com.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.domain.MemberLogininfor; import com.cyl.manager.ums.domain.MemberWechat; +import com.cyl.manager.ums.mapper.MemberLogininforMapper; import com.cyl.manager.ums.mapper.MemberMapper; import com.cyl.manager.ums.mapper.MemberWechatMapper; import com.cyl.manager.ums.pojo.vo.MemberVO; +import com.cyl.manager.ums.service.MemberLogininforService; import com.cyl.wechat.WechatAuthService; import com.cyl.wechat.response.WechatUserAuth; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.model.LoginMember; import com.ruoyi.common.core.redis.RedisCache; -import com.ruoyi.common.utils.AesCryptoUtils; -import com.ruoyi.common.utils.PhoneUtils; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.*; +import com.ruoyi.common.utils.ip.AddressUtils; +import com.ruoyi.common.utils.ip.IpUtils; import com.ruoyi.framework.config.LocalDataUtil; import com.ruoyi.framework.web.service.TokenService; +import eu.bitwalker.useragentutils.UserAgent; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -61,6 +64,13 @@ public class H5MemberService { @Autowired private MemberWechatMapper memberWechatMapper; + @Autowired + private MemberLogininforService memberLogininforService; + + @Autowired + private MemberLogininforMapper memberLogininforMapper; + + /** * 注册 * @param request 注册请求体 @@ -192,6 +202,7 @@ public class H5MemberService { //校验会员状态 validateMemberStatus(member); } + return getLoginResponse(member.getId()); } @@ -232,6 +243,8 @@ public class H5MemberService { LoginMember loginMember = new LoginMember(); loginMember.setMemberId(memberId); String token = tokenService.createMemberToken(loginMember); + //record登录 + this.insert(memberId); H5LoginResponse response = new H5LoginResponse(); response.setToken(token); return response; @@ -272,4 +285,24 @@ public class H5MemberService { wrapper.set("update_by", member.getId()); memberWechatMapper.update(null, wrapper); } + + /** + * 新增会员登录记录 + * + * @param memberId 会员id + * @return 结果 + */ + public void insert(Long memberId) { + Member member = memberMapper.selectById(memberId); + UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); + MemberLogininfor memberLogininfor = new MemberLogininfor(); + memberLogininfor.setMemberId(memberId); + memberLogininfor.setPhone(member.getPhoneHidden()); + memberLogininfor.setOs(userAgent.getOperatingSystem().getName()); + memberLogininfor.setIpaddr(IpUtils.getIpAddr(ServletUtils.getRequest())); + memberLogininfor.setBrowser(userAgent.getBrowser().getName()); + memberLogininfor.setLoginLocation(AddressUtils.getRealAddressByIP(memberLogininfor.getIpaddr())); + memberLogininfor.setLoginTime(LocalDateTime.now()); + memberLogininforMapper.insert(memberLogininfor); + } } From 2f22b5a33c6e7fcd3eb5cfc822effd2a80568f05 Mon Sep 17 00:00:00 2001 From: czc Date: Wed, 26 Jul 2023 15:02:01 +0800 Subject: [PATCH 2/9] =?UTF-8?q?memberLogininfo=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MemberLogininforController.java | 97 +++++++++++++++ .../ums/convert/MemberLogininforConvert.java | 16 +++ .../manager/ums/domain/MemberLogininfor.java | 51 ++++++++ .../ums/mapper/MemberLogininforMapper.java | 21 ++++ .../ums/pojo/query/MemberLogininforQuery.java | 37 ++++++ .../ums/pojo/vo/MemberLogininforVO.java | 38 ++++++ .../ums/service/MemberLogininforService.java | 110 ++++++++++++++++++ .../mapper/ums/MemberLogininforMapper.xml | 34 ++++++ sql/ums/memberLogininfor.sql | 22 ++++ 9 files changed, 426 insertions(+) create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberLogininforController.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberLogininforConvert.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberLogininfor.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberLogininforMapper.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberLogininforQuery.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberLogininforVO.java create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java create mode 100644 ruoyi-mall/src/main/resources/mapper/ums/MemberLogininforMapper.xml create mode 100644 sql/ums/memberLogininfor.sql diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberLogininforController.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberLogininforController.java new file mode 100644 index 0000000..d043355 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/controller/MemberLogininforController.java @@ -0,0 +1,97 @@ +package com.cyl.manager.ums.controller; + +import java.util.List; + +import com.cyl.h5.config.SecurityUtil; +import com.cyl.manager.ums.domain.Member; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.core.domain.model.LoginMember; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.framework.config.LocalDataUtil; +import com.ruoyi.framework.web.service.TokenService; +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.manager.ums.convert.MemberLogininforConvert; +import com.cyl.manager.ums.domain.MemberLogininfor; +import com.cyl.manager.ums.pojo.query.MemberLogininforQuery; +import com.cyl.manager.ums.service.MemberLogininforService; +import com.cyl.manager.ums.pojo.vo.MemberLogininforVO; +import com.ruoyi.common.utils.poi.ExcelUtil; + +import javax.servlet.http.HttpServletRequest; + +/** + * 会员登录记录Controller + * + * @author zcc + * @date 2023-07-26 + */ +@Api(description ="会员登录记录接口列表") +@RestController +@RequestMapping("/ums/memberLogininfor") +public class MemberLogininforController extends BaseController { + @Autowired + private MemberLogininforService service; + @Autowired + private MemberLogininforConvert convert; + @Autowired + private TokenService tokenService; + + @ApiOperation("查询会员登录记录列表") + @PreAuthorize("@ss.hasPermi('ums:memberLogininfor:list')") + @PostMapping("/list") + public ResponseEntity> list(@RequestBody MemberLogininforQuery 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:memberLogininfor:export')") + @Log(title = "会员登录记录", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public ResponseEntity export(MemberLogininforQuery query) { + List list = service.selectList(query, null); + ExcelUtil util = new ExcelUtil<>(MemberLogininforVO.class); + return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "会员登录记录数据")); + } + + @ApiOperation("获取会员登录记录详细信息") + @PreAuthorize("@ss.hasPermi('ums:memberLogininfor:query')") + @GetMapping(value = "/{id}") + public ResponseEntity getInfo(@PathVariable("id") Long id) { + return ResponseEntity.ok(service.selectById(id)); + } + + @ApiOperation("修改会员登录记录") + @PreAuthorize("@ss.hasPermi('ums:memberLogininfor:edit')") + @Log(title = "会员登录记录", businessType = BusinessType.UPDATE) + @PutMapping + public ResponseEntity edit(@RequestBody MemberLogininfor memberLogininfor) { + return ResponseEntity.ok(service.update(memberLogininfor)); + } + + @ApiOperation("删除会员登录记录") + @PreAuthorize("@ss.hasPermi('ums:memberLogininfor:remove')") + @Log(title = "会员登录记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{id}") + public ResponseEntity remove(@PathVariable Long id) { + return ResponseEntity.ok(service.deleteById(id)); + } +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberLogininforConvert.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberLogininforConvert.java new file mode 100644 index 0000000..b395d6f --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/convert/MemberLogininforConvert.java @@ -0,0 +1,16 @@ +package com.cyl.manager.ums.convert; + +import org.mapstruct.Mapper; +import com.cyl.manager.ums.domain.MemberLogininfor; +import com.cyl.manager.ums.pojo.vo.MemberLogininforVO; +import java.util.List; +/** + * 会员登录记录 DO <=> DTO <=> VO / BO / Query + * + * @author zcc + */ +@Mapper(componentModel = "spring") +public interface MemberLogininforConvert { + + List dos2vos(List list); +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberLogininfor.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberLogininfor.java new file mode 100644 index 0000000..883f037 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/domain/MemberLogininfor.java @@ -0,0 +1,51 @@ +package com.cyl.manager.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_logininfor + * + * @author zcc + */ +@ApiModel(description="会员登录记录对象") +@Data +@TableName("ums_member_logininfor") +public class MemberLogininfor { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("ID") + private Long id; + + @ApiModelProperty("会员手机号") + @Excel(name = "会员手机号") + private String phone; + + @ApiModelProperty("会员id") + @Excel(name = "会员id") + private Long memberId; + + @ApiModelProperty("登录IP地址") + @Excel(name = "登录IP地址") + private String ipaddr; + + @ApiModelProperty("登录地点") + @Excel(name = "登录地点") + private String loginLocation; + + @ApiModelProperty("浏览器类型") + @Excel(name = "浏览器类型") + private String browser; + + @ApiModelProperty("操作系统") + @Excel(name = "操作系统") + private String os; + + @ApiModelProperty("登陆时间") + @Excel(name = "登陆时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime loginTime; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberLogininforMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberLogininforMapper.java new file mode 100644 index 0000000..5f7f0b5 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/mapper/MemberLogininforMapper.java @@ -0,0 +1,21 @@ +package com.cyl.manager.ums.mapper; + +import java.util.List; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import com.cyl.manager.ums.domain.MemberLogininfor; + +/** + * 会员登录记录Mapper接口 + * + * @author zcc + */ +public interface MemberLogininforMapper extends BaseMapper { + /** + * 查询会员登录记录列表 + * + * @param memberLogininfor 会员登录记录 + * @return 会员登录记录集合 + */ + List selectByEntity(MemberLogininfor memberLogininfor); +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberLogininforQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberLogininforQuery.java new file mode 100644 index 0000000..41b65e3 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberLogininforQuery.java @@ -0,0 +1,37 @@ +package com.cyl.manager.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 MemberLogininforQuery { + @ApiModelProperty("会员手机号 精确匹配") + private String phone; + + @ApiModelProperty("会员id 精确匹配") + private Long memberId; + + @ApiModelProperty("登录IP地址 精确匹配") + private String ipaddr; + + @ApiModelProperty("登录地点 精确匹配") + private String loginLocation; + + @ApiModelProperty("浏览器类型 精确匹配") + private String browser; + + @ApiModelProperty("操作系统 精确匹配") + private String os; + + @ApiModelProperty("登陆时间 精确匹配") + private LocalDateTime loginTime; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberLogininforVO.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberLogininforVO.java new file mode 100644 index 0000000..f04df78 --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/vo/MemberLogininforVO.java @@ -0,0 +1,38 @@ +package com.cyl.manager.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 MemberLogininforVO { + /** ID */ + private Long id; + /** 会员手机号 */ + @Excel(name = "会员手机号") + private String phone; + /** 会员id */ + @Excel(name = "会员id") + private Long memberId; + /** 登录IP地址 */ + @Excel(name = "登录IP地址") + private String ipaddr; + /** 登录地点 */ + @Excel(name = "登录地点") + private String loginLocation; + /** 浏览器类型 */ + @Excel(name = "浏览器类型") + private String browser; + /** 操作系统 */ + @Excel(name = "操作系统") + private String os; + /** 登陆时间 */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @Excel(name = "登陆时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime loginTime; +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java new file mode 100644 index 0000000..e1c969a --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java @@ -0,0 +1,110 @@ +package com.cyl.manager.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.cyl.manager.ums.domain.Member; +import com.cyl.manager.ums.mapper.MemberMapper; +import com.github.pagehelper.PageHelper; +import com.ruoyi.common.core.domain.model.LoginMember; +import com.ruoyi.common.utils.ServletUtils; +import com.ruoyi.common.utils.ip.AddressUtils; +import com.ruoyi.common.utils.ip.IpUtils; +import eu.bitwalker.useragentutils.UserAgent; +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.manager.ums.mapper.MemberLogininforMapper; +import com.cyl.manager.ums.domain.MemberLogininfor; +import com.cyl.manager.ums.pojo.query.MemberLogininforQuery; + +/** + * 会员登录记录Service业务层处理 + * + * + * @author zcc + */ +@Service +public class MemberLogininforService { + @Autowired + private MemberLogininforMapper memberLogininforMapper; + + @Autowired + private MemberMapper memberMapper; + + /** + * 查询会员登录记录 + * + * @param id 会员登录记录主键 + * @return 会员登录记录 + */ + public MemberLogininfor selectById(Long id) { + return memberLogininforMapper.selectById(id); + } + + /** + * 查询会员登录记录列表 + * + * @param query 查询条件 + * @param page 分页条件 + * @return 会员登录记录 + */ + public List selectList(MemberLogininforQuery query, Pageable page) { + if (page != null) { + PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); + } + QueryWrapper qw = new QueryWrapper<>(); + String phone = query.getPhone(); + if (!StringUtils.isEmpty(phone)) { + qw.eq("phone", phone); + } + Long memberId = query.getMemberId(); + if (memberId != null) { + qw.eq("member_id", memberId); + } + String ipaddr = query.getIpaddr(); + if (!StringUtils.isEmpty(ipaddr)) { + qw.eq("ipaddr", ipaddr); + } + String loginLocation = query.getLoginLocation(); + if (!StringUtils.isEmpty(loginLocation)) { + qw.eq("login_location", loginLocation); + } + String browser = query.getBrowser(); + if (!StringUtils.isEmpty(browser)) { + qw.eq("browser", browser); + } + String os = query.getOs(); + if (!StringUtils.isEmpty(os)) { + qw.eq("os", os); + } + LocalDateTime loginTime = query.getLoginTime(); + if (loginTime != null) { + qw.eq("login_time", loginTime); + } + return memberLogininforMapper.selectList(qw); + } + + /** + * 修改会员登录记录 + * + * @param memberLogininfor 会员登录记录 + * @return 结果 + */ + public int update(MemberLogininfor memberLogininfor) { + return memberLogininforMapper.updateById(memberLogininfor); + } + + /** + * 删除会员登录记录信息 + * + * @param id 会员登录记录主键 + * @return 结果 + */ + public int deleteById(Long id) { + return memberLogininforMapper.deleteById(id); + } +} diff --git a/ruoyi-mall/src/main/resources/mapper/ums/MemberLogininforMapper.xml b/ruoyi-mall/src/main/resources/mapper/ums/MemberLogininforMapper.xml new file mode 100644 index 0000000..405b5e7 --- /dev/null +++ b/ruoyi-mall/src/main/resources/mapper/ums/MemberLogininforMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + select id, phone, member_id, ipaddr, login_location, browser, os, login_time from ums_member_logininfor + + + + diff --git a/sql/ums/memberLogininfor.sql b/sql/ums/memberLogininfor.sql new file mode 100644 index 0000000..e60a01e --- /dev/null +++ b/sql/ums/memberLogininfor.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', 'memberLogininfor', 'ums/memberLogininfor/index', 1, 0, 'C', '0', '0', 'ums:memberLogininfor: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:memberLogininfor: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:memberLogininfor: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:memberLogininfor: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:memberLogininfor: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:memberLogininfor:export', '#', 1, sysdate(), '', null, ''); From c76e94ee9b55bbae7e379e83ab429bbb4f3a1985 Mon Sep 17 00:00:00 2001 From: sjm <1191068887@qq.com> Date: Wed, 26 Jul 2023 15:36:23 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-mall/src/main/java/com/cyl/wechat/WechatController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ruoyi-mall/src/main/java/com/cyl/wechat/WechatController.java b/ruoyi-mall/src/main/java/com/cyl/wechat/WechatController.java index 60844b0..c9cc3e5 100644 --- a/ruoyi-mall/src/main/java/com/cyl/wechat/WechatController.java +++ b/ruoyi-mall/src/main/java/com/cyl/wechat/WechatController.java @@ -31,6 +31,8 @@ public class WechatController { response.setAppId(appId); List jsApiList = new ArrayList<>(); jsApiList.add("chooseWXPay"); + jsApiList.add("updateAppMessageShareData"); + jsApiList.add("updateTimelineShareData"); response.setJsApiList(jsApiList); response.setNonceStr(nonceStr); response.setTimeStamp(String.valueOf(timeStamp)); From b39f272593791e6ae59e871409a629e882027597 Mon Sep 17 00:00:00 2001 From: czc Date: Wed, 26 Jul 2023 15:38:54 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E7=99=BB=E5=BD=95=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cyl/h5/controller/H5MemberController.java | 1 - .../ums/pojo/query/MemberLogininforQuery.java | 4 +++ .../ums/service/MemberLogininforService.java | 30 ++++++++++++------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java index e3bbe96..46f17a6 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/controller/H5MemberController.java @@ -66,7 +66,6 @@ public class H5MemberController { } @ApiOperation("新增会员登录记录") - @Log(title = "会员登录记录", businessType = BusinessType.INSERT) @GetMapping("/record/login") public void add(HttpServletRequest request) { LoginMember loginMember = tokenService.getLoginMember(request); diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberLogininforQuery.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberLogininforQuery.java index 41b65e3..9578cab 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberLogininforQuery.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/pojo/query/MemberLogininforQuery.java @@ -34,4 +34,8 @@ public class MemberLogininforQuery { @ApiModelProperty("登陆时间 精确匹配") private LocalDateTime loginTime; + private String beginTime; + + private String endTime; + } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java index e1c969a..a2dc475 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java @@ -4,16 +4,20 @@ import java.time.LocalDateTime; import java.util.Arrays; import java.util.List; import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.cyl.manager.ums.domain.Member; import com.cyl.manager.ums.mapper.MemberMapper; import com.github.pagehelper.PageHelper; import com.ruoyi.common.core.domain.model.LoginMember; +import com.ruoyi.common.utils.AesCryptoUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.ip.AddressUtils; import com.ruoyi.common.utils.ip.IpUtils; import eu.bitwalker.useragentutils.UserAgent; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Pageable; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -35,6 +39,9 @@ public class MemberLogininforService { @Autowired private MemberMapper memberMapper; + @Value("${aes.key}") + private String aesKey; + /** * 查询会员登录记录 * @@ -53,17 +60,20 @@ public class MemberLogininforService { * @return 会员登录记录 */ public List selectList(MemberLogininforQuery query, Pageable page) { - if (page != null) { - PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); - } QueryWrapper qw = new QueryWrapper<>(); String phone = query.getPhone(); if (!StringUtils.isEmpty(phone)) { - qw.eq("phone", phone); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(Member::getPhoneEncrypted, AesCryptoUtils.encrypt(aesKey, phone)); + Member member = memberMapper.selectOne(wrapper); + if (member != null){ + qw.eq("phone", member.getPhoneEncrypted()); + }else { + qw.eq("phone", "-1"); + } } - Long memberId = query.getMemberId(); - if (memberId != null) { - qw.eq("member_id", memberId); + if (page != null) { + PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize()); } String ipaddr = query.getIpaddr(); if (!StringUtils.isEmpty(ipaddr)) { @@ -81,9 +91,9 @@ public class MemberLogininforService { if (!StringUtils.isEmpty(os)) { qw.eq("os", os); } - LocalDateTime loginTime = query.getLoginTime(); - if (loginTime != null) { - qw.eq("login_time", loginTime); + if (query.getBeginTime() != null && query.getEndTime() != null) { + qw.ge("login_time", query.getBeginTime()); + qw.lt("login_time", query.getEndTime()); } return memberLogininforMapper.selectList(qw); } From 3ca7bf7de2fa889b6a9c766f885910ae293fa5a7 Mon Sep 17 00:00:00 2001 From: czc Date: Wed, 26 Jul 2023 16:00:14 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=80=92=E5=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cyl/manager/ums/service/MemberLogininforService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java index a2dc475..aa6174e 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/ums/service/MemberLogininforService.java @@ -95,6 +95,7 @@ public class MemberLogininforService { qw.ge("login_time", query.getBeginTime()); qw.lt("login_time", query.getEndTime()); } + qw.orderByDesc("login_time"); return memberLogininforMapper.selectList(qw); } From aef30677a9fe65a6168cd2eaa65ae76f326fc2fb Mon Sep 17 00:00:00 2001 From: zhangcheng <1679167928@qq.com> Date: Thu, 27 Jul 2023 14:07:14 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E7=99=BB=E5=BD=95=E6=97=A5=E5=BF=97?= =?UTF-8?q?=EF=BC=9A=E7=99=BB=E5=BD=95=E6=97=B6=E9=97=B4=E5=BF=AB=E4=BA=86?= =?UTF-8?q?8=E4=B8=AA=E5=B0=8F=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ruoyi/system/domain/SysLogininfor.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java index 7fdea30..e615575 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysLogininfor.java @@ -1,14 +1,15 @@ package com.ruoyi.system.domain; -import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel.ColumnType; import com.ruoyi.common.core.domain.BaseEntity; +import java.time.LocalDateTime; + /** * 系统访问记录表 sys_logininfor - * + * * @author ruoyi */ public class SysLogininfor extends BaseEntity @@ -50,7 +51,7 @@ public class SysLogininfor extends BaseEntity /** 访问时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") - private Date loginTime; + private LocalDateTime loginTime; public Long getInfoId() { @@ -132,12 +133,12 @@ public class SysLogininfor extends BaseEntity this.msg = msg; } - public Date getLoginTime() + public LocalDateTime getLoginTime() { return loginTime; } - public void setLoginTime(Date loginTime) + public void setLoginTime(LocalDateTime loginTime) { this.loginTime = loginTime; } From d58dd455364b70abe445e7fbd48e53f778e337df Mon Sep 17 00:00:00 2001 From: czc Date: Fri, 28 Jul 2023 13:36:38 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndexStatisticsManagerController.java | 12 +++++------- .../mapper/IndexStatisticsMapper.java | 3 ++- .../pojo/OrderStatisticsQueryParam.java | 14 ++++++++++++++ .../service/IndexStatisticsService.java | 5 +++-- .../statistics/IndexStatisticsMapper.xml | 19 ++++++++++++++++++- 5 files changed, 42 insertions(+), 11 deletions(-) create mode 100644 ruoyi-mall/src/main/java/com/cyl/manager/statistics/pojo/OrderStatisticsQueryParam.java diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/statistics/controller/IndexStatisticsManagerController.java b/ruoyi-mall/src/main/java/com/cyl/manager/statistics/controller/IndexStatisticsManagerController.java index 2b5a7b0..16ebd31 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/statistics/controller/IndexStatisticsManagerController.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/statistics/controller/IndexStatisticsManagerController.java @@ -2,6 +2,7 @@ package com.cyl.manager.statistics.controller; import com.cyl.manager.statistics.pojo.GoodsStatisticsQueryParam; +import com.cyl.manager.statistics.pojo.OrderStatisticsQueryParam; import com.cyl.manager.statistics.pojo.vo.MemberAndCartStatisticsVO; import com.cyl.manager.statistics.pojo.vo.OrderAndAftersaleStatisticsVO; import com.cyl.manager.statistics.pojo.vo.OrderStatisticsVO; @@ -14,9 +15,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -46,10 +45,9 @@ public class IndexStatisticsManagerController { } @ApiOperation(value = "订单信息") - @GetMapping("/orderStatistics") - public ResponseEntity> orderStatistics() { - - return ResponseEntity.ok(indexStatisticsService.orderStatistics()); + @PostMapping("/orderStatistics") + public ResponseEntity> orderStatistics(@RequestBody OrderStatisticsQueryParam param) { + return ResponseEntity.ok(indexStatisticsService.orderStatistics(param)); } @ApiOperation(value = "会员数,加购数") diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/statistics/mapper/IndexStatisticsMapper.java b/ruoyi-mall/src/main/java/com/cyl/manager/statistics/mapper/IndexStatisticsMapper.java index 5fac288..e995b49 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/statistics/mapper/IndexStatisticsMapper.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/statistics/mapper/IndexStatisticsMapper.java @@ -2,6 +2,7 @@ package com.cyl.manager.statistics.mapper; import com.cyl.manager.statistics.pojo.GoodsStatisticsQueryParam; +import com.cyl.manager.statistics.pojo.OrderStatisticsQueryParam; import com.cyl.manager.statistics.pojo.vo.OrderStatisticsVO; import com.cyl.manager.statistics.pojo.vo.ProductTopVO; @@ -11,6 +12,6 @@ public interface IndexStatisticsMapper { List goodsSkuStatistics(GoodsStatisticsQueryParam goodsStatisticsQueryParam); List goodsStatistics(GoodsStatisticsQueryParam goodsStatisticsQueryParam); - List orderStatistics(); + List orderStatistics(OrderStatisticsQueryParam param); } diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/statistics/pojo/OrderStatisticsQueryParam.java b/ruoyi-mall/src/main/java/com/cyl/manager/statistics/pojo/OrderStatisticsQueryParam.java new file mode 100644 index 0000000..97044ce --- /dev/null +++ b/ruoyi-mall/src/main/java/com/cyl/manager/statistics/pojo/OrderStatisticsQueryParam.java @@ -0,0 +1,14 @@ +package com.cyl.manager.statistics.pojo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@ApiModel("订单统计查询条件对象") +@Data +public class OrderStatisticsQueryParam { + + @ApiModelProperty("查询范围类型 1:近一周 2:近一个月") + private Integer type; + +} diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/statistics/service/IndexStatisticsService.java b/ruoyi-mall/src/main/java/com/cyl/manager/statistics/service/IndexStatisticsService.java index 971a4d1..93017d6 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/statistics/service/IndexStatisticsService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/statistics/service/IndexStatisticsService.java @@ -7,6 +7,7 @@ import com.cyl.manager.oms.service.OrderDeliveryHistoryService; import com.cyl.manager.oms.service.OrderService; import com.cyl.manager.statistics.mapper.IndexStatisticsMapper; import com.cyl.manager.statistics.pojo.GoodsStatisticsQueryParam; +import com.cyl.manager.statistics.pojo.OrderStatisticsQueryParam; import com.cyl.manager.statistics.pojo.vo.MemberAndCartStatisticsVO; import com.cyl.manager.statistics.pojo.vo.OrderAndAftersaleStatisticsVO; import com.cyl.manager.statistics.pojo.vo.OrderStatisticsVO; @@ -51,8 +52,8 @@ public class IndexStatisticsService { } } - public List orderStatistics() { - return indexStatisticsMapper.orderStatistics(); + public List orderStatistics(OrderStatisticsQueryParam param) { + return indexStatisticsMapper.orderStatistics(param); } public MemberAndCartStatisticsVO statMemberAndCart() { diff --git a/ruoyi-mall/src/main/resources/mapper/statistics/IndexStatisticsMapper.xml b/ruoyi-mall/src/main/resources/mapper/statistics/IndexStatisticsMapper.xml index 3ed35a4..0acf28b 100644 --- a/ruoyi-mall/src/main/resources/mapper/statistics/IndexStatisticsMapper.xml +++ b/ruoyi-mall/src/main/resources/mapper/statistics/IndexStatisticsMapper.xml @@ -36,6 +36,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT date_sub( curdate( ), INTERVAL 28 DAY ) AS date UNION ALL SELECT date_sub( curdate( ), INTERVAL 29 DAY ) AS date + + SELECT + curdate( ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 1 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 2 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 3 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 4 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 5 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 6 DAY ) AS date + @@ -59,7 +69,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" IFNULL(b.order_amount,0) orderAmount from ( - + + + + + + + + ) a left join ( SELECT DATE_FORMAT(create_time, '%Y-%m-%d') as date, From 90017deb5e101a8057eb3f3e33a68fc039721e2b Mon Sep 17 00:00:00 2001 From: czc Date: Fri, 28 Jul 2023 13:58:00 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8C=89=E6=97=B6=E9=97=B4=E9=99=8D=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java | 2 +- .../src/main/java/com/cyl/manager/oms/service/OrderService.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java index 618c799..5ac4fb4 100644 --- a/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java +++ b/ruoyi-mall/src/main/java/com/cyl/h5/service/H5OrderService.java @@ -566,7 +566,7 @@ public class H5OrderService { OrderOperateHistory optHistory = new OrderOperateHistory(); optHistory.setOrderId(order.getId()); optHistory.setOrderSn(order.getOrderSn()); - optHistory.setOperateMan("系统"); + optHistory.setOperateMan("" + order.getMemberId()); optHistory.setOrderStatus(OrderStatus.NOT_DELIVERED.getType()); optHistory.setCreateTime(optDate); optHistory.setCreateBy(order.getMemberId()); diff --git a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java index 84d58d2..09d4fd0 100644 --- a/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java +++ b/ruoyi-mall/src/main/java/com/cyl/manager/oms/service/OrderService.java @@ -176,7 +176,7 @@ public class OrderService { return new PageImpl<>(managerOrderVOList, page, 0); } long total = ((com.github.pagehelper.Page) managerOrderVOList).getTotal(); - Map orderMap = managerOrderVOList.stream().collect(Collectors.toMap(ManagerOrderVO::getId, it -> it)); + Map orderMap = managerOrderVOList.stream().collect(Collectors.toMap(ManagerOrderVO::getId, it -> it, (v1,v2) -> v2, LinkedHashMap::new)); //查orderItem QueryWrapper qw = new QueryWrapper<>(); qw.in("order_id", orderMap.keySet()); From 599d71ac0edbd024ce46053079b1910f16c7a8cc Mon Sep 17 00:00:00 2001 From: sjm <1191068887@qq.com> Date: Fri, 28 Jul 2023 21:00:39 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E6=94=B9=E6=88=90https?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-common/src/main/java/com/ruoyi/common/utils/OssUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/OssUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/OssUtils.java index ee83e64..f25610c 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/OssUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/OssUtils.java @@ -39,7 +39,7 @@ public class OssUtils { // 创建PutObject请求。 ossClient.putObject(bucketName, fileName, file.getInputStream()); - String url = "http://" + bucketName + "." + endPoint + "/" + fileName; + String url = "https://" + bucketName + "." + endPoint + "/" + fileName; return url; } catch (Exception e) { e.printStackTrace();