From 73520984c4bce858548805a8b50940831ad3e7f5 Mon Sep 17 00:00:00 2001 From: xiaoning <1097449274@qq.com> Date: Thu, 30 Oct 2025 14:51:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=9F=E6=88=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IndexStatisticsManagerController.java | 51 ++++ .../controller/system/SysLoginController.java | 21 +- .../system/SysTenantController.java | 92 ++++++++ .../common/core/domain/entity/SysDept.java | 12 +- .../common/core/domain/entity/SysUser.java | 27 ++- .../ruoyi/common/json/LongJsonSerializer.java | 20 ++ .../ruoyi/common/page/ReqDeptCondition.java | 17 ++ .../com/ruoyi/common/page/ReqPageBase.java | 18 ++ .../java/com/ruoyi/common/page/RespPage.java | 50 ++++ .../web/service/SysLoginService.java | 39 +--- .../java/com/ruoyi/mall/domain/Aftersale.java | 84 +++++++ .../java/com/ruoyi/mall/domain/Order.java | 143 ++++++++++++ .../domain/query/GoodsStatisticsQuery.java | 24 ++ .../domain/query/OrderStatisticsQuery.java | 11 + .../vo/OrderAndAftersaleStatisticsVO.java | 21 ++ .../mall/domain/vo/OrderStatisticsVO.java | 16 ++ .../ruoyi/mall/domain/vo/ProductTopVO.java | 12 + .../ruoyi/mall/mapper/AftersaleMapper.java | 11 + .../mall/mapper/IndexStatisticsMapper.java | 18 ++ .../com/ruoyi/mall/mapper/OrderMapper.java | 16 ++ .../mall/service/IndexStatisticsService.java | 59 +++++ .../com/ruoyi/system/domain/SysTenant.java | 141 +++++++++++ .../domain/vo/ReqBusinessAddTenant.java | 36 +++ .../system/domain/vo/ReqSearchSysTenant.java | 18 ++ .../ruoyi/system/mapper/SysTenantMapper.java | 34 +++ .../system/service/SysTenantService.java | 35 +++ .../service/impl/SysTenantServiceImpl.java | 221 ++++++++++++++++++ .../service/impl/SysUserServiceImpl.java | 75 +++--- .../resources/mapper/mall/AftersaleMapper.xml | 19 ++ .../mapper/mall/IndexStatisticsMapper.xml | 104 +++++++++ .../resources/mapper/mall/OrderMapper.xml | 21 ++ .../resources/mapper/system/SysDeptMapper.xml | 46 ++-- .../mapper/system/SysTenantMapper.xml | 36 +++ .../resources/mapper/system/SysUserMapper.xml | 47 ++-- 34 files changed, 1444 insertions(+), 151 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/mall/IndexStatisticsManagerController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysTenantController.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/json/LongJsonSerializer.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/page/ReqDeptCondition.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/page/ReqPageBase.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/page/RespPage.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/domain/Aftersale.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/domain/Order.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/domain/query/GoodsStatisticsQuery.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/domain/query/OrderStatisticsQuery.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/OrderAndAftersaleStatisticsVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/OrderStatisticsVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/ProductTopVO.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/mapper/AftersaleMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/mapper/IndexStatisticsMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/mapper/OrderMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/mall/service/IndexStatisticsService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTenant.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReqBusinessAddTenant.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReqSearchSysTenant.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTenantMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/SysTenantService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java create mode 100644 ruoyi-system/src/main/resources/mapper/mall/AftersaleMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/mall/IndexStatisticsMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/mall/OrderMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mall/IndexStatisticsManagerController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mall/IndexStatisticsManagerController.java new file mode 100644 index 0000000..f10ba0c --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/mall/IndexStatisticsManagerController.java @@ -0,0 +1,51 @@ +package com.ruoyi.web.controller.mall; + + +import com.ruoyi.mall.domain.query.GoodsStatisticsQuery; +import com.ruoyi.mall.domain.query.OrderStatisticsQuery; +import com.ruoyi.mall.domain.vo.OrderAndAftersaleStatisticsVO; +import com.ruoyi.mall.domain.vo.OrderStatisticsVO; +import com.ruoyi.mall.domain.vo.ProductTopVO; +import com.ruoyi.mall.service.IndexStatisticsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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.*; + +import java.util.List; + +@Slf4j +@Api(tags = "管理端,首页统计数据接口") +@RestController +@RequestMapping("/dev/statistics/index") +public class IndexStatisticsManagerController { + + /** + * 首页统计 + */ + @Autowired + private IndexStatisticsService indexStatisticsService; + + @ApiOperation(value = "获取首页查询热卖商品TOP10") + @GetMapping("/goodsStatistics") + public ResponseEntity> goodsStatistics(@Validated GoodsStatisticsQuery goodsStatisticsQuery) { + + return ResponseEntity.ok(indexStatisticsService.goodsStatistics(goodsStatisticsQuery)); + } + + @ApiOperation(value = "订单与售后单统计") + @GetMapping("/order/aftersale/statistics") + public ResponseEntity orderAndAftersaleStatistics(){ + return ResponseEntity.ok(indexStatisticsService.orderAndAftersaleStatistics()); + } + + @ApiOperation(value = "订单信息") + @PostMapping("/orderStatistics") + public ResponseEntity> orderStatistics(@RequestBody OrderStatisticsQuery param) { + return ResponseEntity.ok(indexStatisticsService.orderStatistics(param)); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 78c8dee..6416124 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -5,7 +5,6 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysMenu; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginBody; -import com.ruoyi.common.core.domain.model.PhoneLoginBody; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysPermissionService; @@ -21,7 +20,7 @@ import java.util.Set; /** * 登录验证 - * + * * @author ruoyi */ @RestController @@ -49,19 +48,6 @@ public class SysLoginController { return ajax; } - /** - * 使用手机号登陆 - * - * @param loginBody 登录信息 - * @return 结果 - */ - @PostMapping("/login/phone") - public AjaxResult login(@RequestBody PhoneLoginBody loginBody) { - AjaxResult ajax = AjaxResult.success(); - SysUser user = loginService.phoneLogin(loginBody.getPhone(), loginBody.getCode(), loginBody.getUuid()); - ajax.put(Constants.TOKEN, loginService.createToken(user)); - return ajax; - } /** * 获取用户信息 @@ -70,11 +56,14 @@ public class SysLoginController { */ @GetMapping("getInfo") public AjaxResult getInfo() { + SysUser user = SecurityUtils.getLoginUser().getUser(); // 角色集合 Set roles = permissionService.getRolePermission(user); // 权限集合 Set permissions = permissionService.getMenuPermission(user); + //所属租户 + AjaxResult ajax = AjaxResult.success(); ajax.put("user", user); ajax.put("roles", roles); @@ -84,7 +73,7 @@ public class SysLoginController { /** * 获取路由信息 - * + * * @return 路由信息 */ @GetMapping("getRouters") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysTenantController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysTenantController.java new file mode 100644 index 0000000..7232975 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysTenantController.java @@ -0,0 +1,92 @@ +package com.ruoyi.web.controller.system; + + +import com.ruoyi.common.core.domain.RestResponse; +import com.ruoyi.system.domain.SysTenant; +import com.ruoyi.system.domain.vo.ReqBusinessAddTenant; +import com.ruoyi.system.domain.vo.ReqSearchSysTenant; +import com.ruoyi.system.service.SysTenantService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 租户信息 前端控制器 + *

+ * + * @author zhangby + * @since 2019-11-06 + */ +@RestController +@RequestMapping("/system/tenant") +public class SysTenantController { + + @Autowired + private SysTenantService sysTenantService; + + /** + * 列表 + * + * @param reqSearchSysTenant + * @return + */ + @GetMapping("/list/searchList") + public RestResponse searchList(ReqSearchSysTenant reqSearchSysTenant) { + return sysTenantService.searchList(reqSearchSysTenant); + } + + /** + * 前端select + * + * @return + */ + @GetMapping("/list/treeSelect") + public RestResponse treeSelect() { + return sysTenantService.treeSelect(); + } + + /** + * 详情 + * + * @param tenantId + * @return + */ + @GetMapping("/info/detailById/{tenantId}") + public RestResponse detailById(@PathVariable("tenantId") Long tenantId) { + return sysTenantService.detailById(tenantId); + } + + /** + * 添加 + * + * @param reqBusinessAddTenant + * @return + */ + @PostMapping("/add/addTenant") + public RestResponse addSysTenant(@RequestBody ReqBusinessAddTenant reqBusinessAddTenant) { + return sysTenantService.addTenant(reqBusinessAddTenant); + } + + /** + * 修改 + * + * @param sysTenant + * @return + */ + @PutMapping("/update/updateTenant") + public RestResponse updateTenant(@RequestBody SysTenant sysTenant) { + return sysTenantService.updateTenant(sysTenant); + } + + /** + * 删除 + * + * @param tenantIds + * @return + */ + @DeleteMapping("/delete/deleteById/{tenantIds}") + public RestResponse deleteById(@PathVariable("tenantIds") String[] tenantIds) { + return sysTenantService.deleteById(tenantIds); + } + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java index abb9cf4..476ed69 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java @@ -48,7 +48,7 @@ public class SysDept extends BaseEntity private String status; /** 删除标志(0代表存在 2代表删除) */ - private String delFlag; + private String deleteFlag; /** 父部门名称 */ private String parentName; @@ -152,14 +152,14 @@ public class SysDept extends BaseEntity this.status = status; } - public String getDelFlag() + public String getDeleteFlag() { - return delFlag; + return deleteFlag; } - public void setDelFlag(String delFlag) + public void setDeleteFlag(String deleteFlag) { - this.delFlag = delFlag; + this.deleteFlag = deleteFlag; } public String getParentName() @@ -194,7 +194,7 @@ public class SysDept extends BaseEntity .append("phone", getPhone()) .append("email", getEmail()) .append("status", getStatus()) - .append("delFlag", getDelFlag()) + .append("delFlag", getDeleteFlag()) .append("createBy", getCreateBy()) .append("createTime", getCreateTime()) .append("updateBy", getUpdateBy()) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index f6968c0..fecd8a9 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -1,12 +1,5 @@ package com.ruoyi.common.core.domain.entity; -import java.util.Date; -import java.util.List; -import javax.validation.constraints.Email; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.ruoyi.common.annotation.Excel; @@ -14,10 +7,18 @@ import com.ruoyi.common.annotation.Excel.ColumnType; import com.ruoyi.common.annotation.Excel.Type; import com.ruoyi.common.annotation.Excels; import com.ruoyi.common.core.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.util.Date; +import java.util.List; /** * 用户对象 sys_user - * + * * @author ruoyi */ public class SysUser extends BaseEntity @@ -95,6 +96,8 @@ public class SysUser extends BaseEntity /** 角色ID */ private Long roleId; + public String tenantId; + public SysUser() { @@ -105,6 +108,14 @@ public class SysUser extends BaseEntity this.userId = userId; } + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + public Long getUserId() { return userId; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/json/LongJsonSerializer.java b/ruoyi-common/src/main/java/com/ruoyi/common/json/LongJsonSerializer.java new file mode 100644 index 0000000..c97a1d3 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/json/LongJsonSerializer.java @@ -0,0 +1,20 @@ +package com.ruoyi.common.json; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializerProvider; + +import java.io.IOException; + +/** + * @author :zhangbaoyu + * @date :Created in 2020/8/18 19:45 + */ +public class LongJsonSerializer extends JsonSerializer { + @Override + public void serialize(Long aLong, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { + if (aLong != null) { + jsonGenerator.writeNumber(aLong); + } + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/page/ReqDeptCondition.java b/ruoyi-common/src/main/java/com/ruoyi/common/page/ReqDeptCondition.java new file mode 100644 index 0000000..0f4c410 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/page/ReqDeptCondition.java @@ -0,0 +1,17 @@ +package com.ruoyi.common.page; + +import lombok.Data; + +/** + * 校区查询条件 + * @author :zhangbaoyu + * @date :Created in 2020/10/24 09:25 + */ +@Data +public class ReqDeptCondition { + + private Long deptId; + + private String userId; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/page/ReqPageBase.java b/ruoyi-common/src/main/java/com/ruoyi/common/page/ReqPageBase.java new file mode 100644 index 0000000..a3fc808 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/page/ReqPageBase.java @@ -0,0 +1,18 @@ +package com.ruoyi.common.page; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 分页请求 + * @author :zhangbaoyu + * @date :Created in 2020-01-15 21:41 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class ReqPageBase extends ReqDeptCondition{ + + private long pageNum = 1; + + private long pageSize = 10; +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/page/RespPage.java b/ruoyi-common/src/main/java/com/ruoyi/common/page/RespPage.java new file mode 100644 index 0000000..50da8ca --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/page/RespPage.java @@ -0,0 +1,50 @@ +package com.ruoyi.common.page; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.ruoyi.common.json.LongJsonSerializer; + +import java.util.Collections; +import java.util.List; + +/** + * @author :zhangbaoyu + * @date :Created in 2020-01-15 21:52 + */ +public class RespPage extends Page { + + private List rows = Collections.emptyList(); + + @JsonSerialize(using = LongJsonSerializer.class) + private long total; + + + public RespPage(long current, long size) { + super(current, size); + } + + @Override + public Page setRecords(List records) { + this.rows=records; + return this; + } + + @Override + public Page setTotal(long total) { + this.total=total; + return this; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + @Override + public long getTotal() { + return total; + } +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 2198fba..e22ef8a 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -10,7 +10,6 @@ import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaExpireException; -import com.ruoyi.common.exception.user.UserException; import com.ruoyi.common.exception.user.UserPasswordNotMatchException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.MessageUtils; @@ -31,10 +30,8 @@ import org.springframework.security.core.Authentication; import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.Arrays; import java.util.Collections; import java.util.Date; -import java.util.List; /** * 登录校验方法 @@ -132,7 +129,7 @@ public class SysLoginService { /** * 校验验证码 - * + * * @param username 用户名 * @param code 验证码 * @param uuid 唯一标识 @@ -164,39 +161,7 @@ public class SysLoginService { userService.updateUserProfile(user); } - public SysUser phoneLogin(String phone, String code, String uuid) { - // 校验数据 - // if (!phoneCodeService.validCode(uuid, phone, code)) { - // throw new GlobalException("校验失败"); - // } - SysUser user = userService.selectUserByUserName(phone); - // TODO 内测版,只要电话号码对的上就行 - if (user == null) { - throw new UserException("user.password.not.match", null); - } - SysRole vipRole = sysRoleService.selectRoleByKey("vip"); - // 如果用户不存在,则创建用户,赋予权限 - if (user == null) { - user = new SysUser(); - user.setUserName(phone); - user.setNickName("love_" + RandomUtil.randomNumbers(6)); - user.setPhonenumber(phone); - user.setPassword(SecurityUtils.encryptPassword(RandomUtil.randomString(32))); - boolean regFlag = userService.registerUser(user); - // 增加用户的权限,绑定角色 - sysRoleService.insertAuthUsers(vipRole.getRoleId(), new Long[]{user.getUserId()}); - } else { - // 查询用户是否具有会员角色,如果没有绑定 - List roles = sysRoleService.selectRoleListByUserId(user.getUserId()); - Integer roleId = vipRole.getRoleId().intValue(); - if (!roles.contains(roleId)) { - sysRoleService.insertAuthUsers(vipRole.getRoleId(), new Long[]{user.getUserId()}); - } - } - AsyncManager.me().execute(AsyncFactory.recordLogininfor(phone, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); - recordLoginInfo(user); - return user; - } + public SysUser initVipUser(ExtraUserBody body) { Date now = new Date(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/Aftersale.java b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/Aftersale.java new file mode 100644 index 0000000..c0659ed --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/Aftersale.java @@ -0,0 +1,84 @@ +package com.ruoyi.mall.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseAudit; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 订单售后对象 oms_aftersale + * + * @author zcc + */ + +@Data +@TableName("oms_aftersale") +public class Aftersale extends BaseAudit { + private static final long serialVersionUID = 1L; + + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + + @Excel(name = "MEMBER_ID") + private Long memberId; + + + @Excel(name = "订单id") + private Long orderId; + + + @Excel(name = "退款金额") + private BigDecimal returnAmount; + + + @Excel(name = "售后类型:1:退款,2:退货退款") + private Integer type; + + + @Excel(name = "申请状态:0->待处理;1->退货中;2->已完成;3->已拒绝") + private Integer status; + + + @Excel(name = "处理时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime handleTime; + + + @Excel(name = "退货数量") + private Integer quantity; + + + @Excel(name = "原因") + private String reason; + + + @Excel(name = "描述") + private String description; + + + @Excel(name = "凭证图片,以逗号隔开") + private String proofPics; + + + @Excel(name = "处理备注") + private String handleNote; + + + @Excel(name = "处理人员") + private String handleMan; + + + @Excel(name = "退款快递公司") + private String refundWpCode; + + + @Excel(name = "退货快递号") + private String refundWaybillCode; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/Order.java b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/Order.java new file mode 100644 index 0000000..5634607 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/Order.java @@ -0,0 +1,143 @@ +package com.ruoyi.mall.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseAudit; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 订单表对象 oms_order + * + */ +@Data +@TableName("oms_order") +public class Order extends BaseAudit { + private static final long serialVersionUID = 1L; + + + @TableId(type = IdType.ASSIGN_ID) + private Long id; + + + private Long payId; + + + @Excel(name = "订单编号") + private String orderSn; + + + @Excel(name = "MEMBER_ID") + private Long memberId; + + + @Excel(name = "用户帐号") + private String memberUsername; + + + @Excel(name = "订单总金额") + private BigDecimal totalAmount; + + + @Excel(name = "采购价") + private BigDecimal purchasePrice; + + + @Excel(name = "应付金额", readConverterExp = "实际支付金额") + private BigDecimal payAmount; + + + @Excel(name = "运费金额") + private BigDecimal freightAmount; + + + @Excel(name = "支付方式:0->未支付;1->支付宝;2->微信") + private Integer payType; + + + @Excel(name = "订单状态:0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单") + private Integer status; + + + @Excel(name = "退款状态,枚举值:1:无售后或售后关闭,2:售后处理中,3:退款中,4: 退款成功") + private Integer aftersaleStatus; + + + @Excel(name = "物流公司(配送方式)") + private String deliveryCompany; + + + @Excel(name = "物流单号") + private String deliverySn; + + + @Excel(name = "自动确认时间", readConverterExp = "天=") + private Integer autoConfirmDay; + + + @Excel(name = "收货人姓名") + private String receiverName; + + + @Excel(name = "收货人电话") + private String receiverPhone; + + @Excel(name = "加密的手机号") + private String receiverPhoneEncrypted; + + @Excel(name = "收货人邮编") + private String receiverPostCode; + + @Excel(name = "省份/直辖市") + private String receiverProvince; + + @Excel(name = "城市") + private String receiverCity; + @Excel(name = "区") + private String receiverDistrict; + + @Excel(name = "省份/直辖市id") + private Long receiverProvinceId; + + @Excel(name = "城市id") + private Long receiverCityId; + + @Excel(name = "区id") + private Long receiverDistrictId; + + @Excel(name = "详细地址") + private String receiverDetailAddress; + + @Excel(name = "订单备注") + private String note; + + @Excel(name = "商家备注") + private String merchantNote; + + @Excel(name = "确认收货状态:0->未确认;1->已确认") + private Integer confirmStatus; + + @Excel(name = "删除状态:0->未删除;1->已删除") + private Integer deleteStatus; + + @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime paymentTime; + + + @Excel(name = "发货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime deliveryTime; + + + @Excel(name = "确认收货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime receiveTime; + + private Long memberCouponId; + + + private BigDecimal couponAmount; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/query/GoodsStatisticsQuery.java b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/query/GoodsStatisticsQuery.java new file mode 100644 index 0000000..551a310 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/query/GoodsStatisticsQuery.java @@ -0,0 +1,24 @@ +package com.ruoyi.mall.domain.query; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 商品统计 + * + * @author zhangcheng + * @since 2023/05/15 13:53 + */ +@Data +public class GoodsStatisticsQuery { + @NotNull(message = "统计类型 1:商品规格排行 2:商品排行") + private Integer statType; + @NotNull(message = "参数size不能为空") + private Integer size; + @NotBlank(message = "参数startDate不能为空") + private String startDate; + @NotBlank(message = "参数endDate不能为空") + private String endDate; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/query/OrderStatisticsQuery.java b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/query/OrderStatisticsQuery.java new file mode 100644 index 0000000..ff3a9a8 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/query/OrderStatisticsQuery.java @@ -0,0 +1,11 @@ +package com.ruoyi.mall.domain.query; +import lombok.Data; + +//订单统计查询条件对象 +@Data +public class OrderStatisticsQuery { + + //查询范围类型 1:近一周 2:近一个月 + private Integer type; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/OrderAndAftersaleStatisticsVO.java b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/OrderAndAftersaleStatisticsVO.java new file mode 100644 index 0000000..2fc91fb --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/OrderAndAftersaleStatisticsVO.java @@ -0,0 +1,21 @@ +package com.ruoyi.mall.domain.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class OrderAndAftersaleStatisticsVO { + /** 待处理售后 */ + private Integer pendingAftersaleCount; + /** 处理中售后 */ + private Integer processingAftersaleCount; + /** 待发货 */ + private Integer waitDeliveredCount; + /** 已发货 */ + private Integer todayHasDeliveredCount; + /** 订单数 */ + private Integer todayOrderCount; + /** 成交额 */ + private BigDecimal todayTransactionAmount; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/OrderStatisticsVO.java b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/OrderStatisticsVO.java new file mode 100644 index 0000000..5630e68 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/OrderStatisticsVO.java @@ -0,0 +1,16 @@ +package com.ruoyi.mall.domain.vo; + +import lombok.Data; + +@Data +public class OrderStatisticsVO { + + private String date; + //订单笔数 + private Double orderCount; + //订单金额 + private Double orderAmount; + private Double numPaidOrders; + private Double numPendingOrders; + private Double numRefundOrders; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/ProductTopVO.java b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/ProductTopVO.java new file mode 100644 index 0000000..eba8aa8 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/domain/vo/ProductTopVO.java @@ -0,0 +1,12 @@ +package com.ruoyi.mall.domain.vo; + +import lombok.Data; + +@Data +public class ProductTopVO { + + private String productName; + private int totalSales; + private String pic; + private String spData; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/AftersaleMapper.java b/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/AftersaleMapper.java new file mode 100644 index 0000000..c10a6ce --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/AftersaleMapper.java @@ -0,0 +1,11 @@ +package com.ruoyi.mall.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.mall.domain.Aftersale; +import com.ruoyi.mall.domain.vo.OrderAndAftersaleStatisticsVO; + +public interface AftersaleMapper extends BaseMapper { + + + OrderAndAftersaleStatisticsVO statPendingAndProcessing(); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/IndexStatisticsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/IndexStatisticsMapper.java new file mode 100644 index 0000000..b10c858 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/IndexStatisticsMapper.java @@ -0,0 +1,18 @@ +package com.ruoyi.mall.mapper; + + +import com.ruoyi.mall.domain.query.GoodsStatisticsQuery; +import com.ruoyi.mall.domain.query.OrderStatisticsQuery; +import com.ruoyi.mall.domain.vo.OrderStatisticsVO; +import com.ruoyi.mall.domain.vo.ProductTopVO; + +import java.util.List; + +public interface IndexStatisticsMapper { + + List goodsSkuStatistics(GoodsStatisticsQuery goodsStatisticsQuery); + + List goodsStatistics(GoodsStatisticsQuery goodsStatisticsQuery); + List orderStatistics(OrderStatisticsQuery param); + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/OrderMapper.java b/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/OrderMapper.java new file mode 100644 index 0000000..bc3f210 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/mapper/OrderMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.mall.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.mall.domain.Order; +import com.ruoyi.mall.domain.vo.OrderAndAftersaleStatisticsVO; +import org.apache.ibatis.annotations.Param; + +import java.time.LocalDateTime; + +public interface OrderMapper extends BaseMapper { + + + Integer statWaitDelivered(); + OrderAndAftersaleStatisticsVO statTodayData(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime); + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/mall/service/IndexStatisticsService.java b/ruoyi-system/src/main/java/com/ruoyi/mall/service/IndexStatisticsService.java new file mode 100644 index 0000000..891de57 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/mall/service/IndexStatisticsService.java @@ -0,0 +1,59 @@ +package com.ruoyi.mall.service; + +import com.ruoyi.mall.domain.query.GoodsStatisticsQuery; +import com.ruoyi.mall.domain.query.OrderStatisticsQuery; +import com.ruoyi.mall.domain.vo.OrderAndAftersaleStatisticsVO; +import com.ruoyi.mall.domain.vo.OrderStatisticsVO; +import com.ruoyi.mall.domain.vo.ProductTopVO; +import com.ruoyi.mall.mapper.AftersaleMapper; +import com.ruoyi.mall.mapper.IndexStatisticsMapper; +import com.ruoyi.mall.mapper.OrderMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.util.List; + +/** + * 管理端,首页统计数据Service业务层处理 + + */ +@Service +public class IndexStatisticsService { + @Autowired + private AftersaleMapper aftersaleMapper; + @Autowired + private OrderMapper orderMapper; + @Autowired + private IndexStatisticsMapper indexStatisticsMapper; + + public List goodsStatistics(GoodsStatisticsQuery goodsStatisticsQuery) { + if (goodsStatisticsQuery.getStatType() == 1){ + return indexStatisticsMapper.goodsSkuStatistics(goodsStatisticsQuery); + }else { + return indexStatisticsMapper.goodsStatistics(goodsStatisticsQuery); + } + } + + public OrderAndAftersaleStatisticsVO orderAndAftersaleStatistics() { + //统计售后 + OrderAndAftersaleStatisticsVO vo = aftersaleMapper.statPendingAndProcessing(); + //统计未发货数 + vo.setWaitDeliveredCount(orderMapper.statWaitDelivered()); + //统计今日订单数,成交金额,发货数 + LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); + LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX); + OrderAndAftersaleStatisticsVO todayData = orderMapper.statTodayData(startTime, endTime); + vo.setTodayOrderCount(todayData.getTodayOrderCount()); + vo.setTodayHasDeliveredCount(todayData.getTodayHasDeliveredCount()); + vo.setTodayTransactionAmount(todayData.getTodayTransactionAmount()); + return vo; + } + + public List orderStatistics(OrderStatisticsQuery param) { + return indexStatisticsMapper.orderStatistics(param); + } + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTenant.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTenant.java new file mode 100644 index 0000000..595a9b0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysTenant.java @@ -0,0 +1,141 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 租户表 + *

+ * + * @author xn + * @since 2022-09-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sys_tenant") +public class SysTenant implements Serializable { + + private static final long serialVersionUID=1L; + + @TableId(value = "tenant_id",type = IdType.ASSIGN_ID) + private String tenantId; + + /** + * 租户名称 + */ + @TableField("tenant_name") + private String tenantName; + + /** + * 超级管理租户 + */ + @TableField("super_tenant") + private Boolean superTenant; + + /** + * 联系人 + */ + @TableField("contact_name") + private String contactName; + + /** + * 联系人电话 + */ + @TableField("contact_phone") + private String contactPhone; + + /** + * 联系地址 + */ + @TableField("contact_address") + private String contactAddress; + + /** + * 生效开始时间 + */ + @TableField("begin_time") + private Date beginTime; + + /** + * 失效时间 + */ + @TableField("end_time") + private Date endTime; + + /** + * 备注 + */ + @TableField("memo") + private String memo; + + /** + * 状态(1停用 0正常 ) + */ + @TableField("in_use") + private String inUse; + + /** + * 删除标志(1删除 0在用) + */ + @TableField("delete_flag") + @TableLogic + private String deleteFlag; + + /** + * 创建者 + */ + @TableField("create_user") + private Long createUser; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 更新者 + */ + @TableField("last_update_user") + private Long lastUpdateUser; + + /** + * 更新时间 + */ + @TableField("last_update_time") + private Date lastUpdateTime; + + + @TableField(exist = false) + private String[] useDateRange; + //当前租户 + @TableField(exist = false) + private boolean nowTenant = false; + + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + public Date getBeginTime() { + return beginTime; + } + + @JsonFormat(pattern="yyyy-MM-dd") + public void setBeginTime(Date beginTime) { + this.beginTime = beginTime; + } + + @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") + public Date getEndTime() { + return endTime; + } + + @JsonFormat(pattern="yyyy-MM-dd") + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReqBusinessAddTenant.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReqBusinessAddTenant.java new file mode 100644 index 0000000..c3ab993 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReqBusinessAddTenant.java @@ -0,0 +1,36 @@ +package com.ruoyi.system.domain.vo; + +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.system.domain.SysTenant; +import lombok.Data; + +/** + * @author :zhangbaoyu + * @date :Created in 2020/10/25 12:27 + */ +@Data +public class ReqBusinessAddTenant extends SysTenant { + + private String emailAddress; + + private String sex; + + private String username; + + private String password; + + private String checkPass; + + public SysUser transferToSysUser() { + SysUser sysUser = new SysUser(); + sysUser.setUserName(this.getUsername()); + sysUser.setPassword(this.getPassword()); + sysUser.setNickName(this.getContactName()); + sysUser.setPhonenumber(this.getContactPhone()); + sysUser.setEmail(this.getEmailAddress()); + return sysUser; + } + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReqSearchSysTenant.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReqSearchSysTenant.java new file mode 100644 index 0000000..191c35b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ReqSearchSysTenant.java @@ -0,0 +1,18 @@ +package com.ruoyi.system.domain.vo; + +import com.ruoyi.common.page.ReqPageBase; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class ReqSearchSysTenant extends ReqPageBase implements Serializable { + + private String tenantName; + private String contactName; + private String inUse; + //过期开始时间 + private String beginTime; + //过期结束 + private String endTime; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTenantMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTenantMapper.java new file mode 100644 index 0000000..24e05f0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTenantMapper.java @@ -0,0 +1,34 @@ +package com.ruoyi.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.domain.SysTenant; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + *

+ * 租户信息 Mapper 接口 + *

+ */ +public interface SysTenantMapper extends BaseMapper { + + /** + * 用户租户列表 + * + * @param userId + * @return + */ + List selectUserTenantList(@Param("userId")String userId, @Param("limitTenantUserId")String limitTenantUserId); + + /** + * 在用用户所属的租户 + * + * @param userId + * @param tenantId + * @return + */ + SysTenant selectInUseUserTenant(@Param("userId")String userId, @Param("tenantId")String tenantId); + + int tenantHaveContent(String tenantId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/SysTenantService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysTenantService.java new file mode 100644 index 0000000..822b55f --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/SysTenantService.java @@ -0,0 +1,35 @@ +package com.ruoyi.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.RestResponse; +import com.ruoyi.system.domain.SysTenant; +import com.ruoyi.system.domain.vo.ReqBusinessAddTenant; +import com.ruoyi.system.domain.vo.ReqSearchSysTenant; + +import java.util.List; + +public interface SysTenantService extends IService { + + /** + * 用户租户列表 + * @param userId + * @param limitTenantUserId + * @return + */ + List selectUserTenantList(String userId, String limitTenantUserId); + + /** + * 校验用户所属租户是否在用生效 + * @param userId + * @param tenantId + * @return + */ + boolean checkUserTenantInUse(String userId,String tenantId); + + RestResponse searchList(ReqSearchSysTenant reqSearchSysTenant); + RestResponse treeSelect(); + RestResponse detailById(Long tenantId); + RestResponse addTenant(ReqBusinessAddTenant reqBusinessAddTenant); + RestResponse updateTenant(SysTenant sysTenant); + RestResponse deleteById(String[] tenantIds); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java new file mode 100644 index 0000000..67ee761 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTenantServiceImpl.java @@ -0,0 +1,221 @@ +package com.ruoyi.system.service.impl; + + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.constant.UserConstants; +import com.ruoyi.common.core.domain.RestResponse; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.domain.model.LoginUser; +import com.ruoyi.common.page.RespPage; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.system.domain.SysTenant; +import com.ruoyi.system.domain.vo.ReqBusinessAddTenant; +import com.ruoyi.system.domain.vo.ReqSearchSysTenant; +import com.ruoyi.system.mapper.SysTenantMapper; +import com.ruoyi.system.mapper.SysUserRoleMapper; +import com.ruoyi.system.service.ISysUserService; +import com.ruoyi.system.service.SysTenantService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +@Service +@Transactional +public class SysTenantServiceImpl extends ServiceImpl implements SysTenantService { + + @Autowired + private ISysUserService userService; + @Autowired + private SysUserRoleMapper userRoleMapper; + @Override + public List selectUserTenantList(String userId, String limitTenantUserId) { + return baseMapper.selectUserTenantList(userId, limitTenantUserId); + } + + @Override + public boolean checkUserTenantInUse(String userId, String tenantId) { + if (StringUtils.isAnyEmpty(userId, tenantId)) { + return false; + } + SysTenant sysTenant = baseMapper.selectInUseUserTenant(userId, tenantId); + return sysTenant != null; + } + + /** + * 查询树 + * + * @param reqSearchSysTenant + * @return + */ + @Override + public RestResponse searchList(ReqSearchSysTenant reqSearchSysTenant) { + QueryWrapper qw = new QueryWrapper(); + if (StringUtils.isNotEmpty(reqSearchSysTenant.getTenantName())) { + qw.like("tenant_name", reqSearchSysTenant.getTenantName()); + } + if (StringUtils.isNotEmpty(reqSearchSysTenant.getContactName())) { + qw.like("contact_name", reqSearchSysTenant.getContactName()); + } + if (StringUtils.isNotEmpty(reqSearchSysTenant.getInUse())) { + qw.eq("in_use", reqSearchSysTenant.getInUse()); + } + if (StringUtils.isNoneEmpty(reqSearchSysTenant.getBeginTime(), reqSearchSysTenant.getEndTime())) { + qw.between("end_time", reqSearchSysTenant.getBeginTime() + " 00:00:00", reqSearchSysTenant.getEndTime() + " 23:59:59"); + } + // 不展示超级管理租户 + qw.ne("super_tenant", "1"); + + qw.orderByDesc("in_use", "create_time"); + RespPage page = new RespPage(reqSearchSysTenant.getPageNum(), reqSearchSysTenant.getPageSize()); + RespPage listPage = page(page, qw); + return new RestResponse().setData(listPage); + } + + /** + * 前端select + * + * @return + */ + public RestResponse treeSelect() { + QueryWrapper qw = new QueryWrapper(); + qw.select("tenant_id", "tenant_name"); + qw.ne("super_tenant", 1); + qw.orderByDesc("create_time"); + List list = list(qw); + return new RestResponse().setData(list); + } + + + /** + * 详情 + * + * @param tenantId + * @return + */ + public RestResponse detailById(Long tenantId) { + if (null == tenantId) { + return new RestResponse(); + } + SysTenant detailInfo = getById(tenantId); + List useDateList = Arrays.asList(DateUtil.format(detailInfo.getBeginTime(), "yyyy-MM-dd"), DateUtil.format(detailInfo.getEndTime(), "yyyy-MM-dd")); + String[] useDateRange = useDateList.toArray(new String[useDateList.size()]); + detailInfo.setUseDateRange(useDateRange); + return new RestResponse().setData(detailInfo); + } + + /** + * 添加 + * + * @param reqBusinessAddTenant + * @return + */ + @Transactional + public RestResponse addTenant(ReqBusinessAddTenant reqBusinessAddTenant) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + + SysTenant sysTenant = new SysTenant(); + BeanUtils.copyProperties(reqBusinessAddTenant, sysTenant); + + sysTenant.setCreateUser(loginUser.getUserId()); + sysTenant.setBeginTime(DateUtil.parse(sysTenant.getBeginTime().toString()));//,"yyyy-MM-dd 00:00:00" + sysTenant.setEndTime(DateUtil.parse(DateUtil.format(sysTenant.getEndTime(),"yyyy-MM-dd 23:59:59")));//,"yyyy-MM-dd 23:59:59" + this.save(sysTenant); + + try { +// TenantContextHolder.setTenant(sysTenant.getTenantId()); + // 保存用户 + if (StringUtils.isAnyEmpty(reqBusinessAddTenant.getUsername(), reqBusinessAddTenant.getPassword())) { + return RestResponse.failure("请求参数错误,请完善后重试"); + } else if (!reqBusinessAddTenant.getPassword().equals(reqBusinessAddTenant.getCheckPass())) { + return RestResponse.failure(("新旧密码输入不一致,请稍后重试")); + } + // 校验账号是否已被注册 + boolean usernameUnique = UserConstants.UNIQUE.equals(userService.checkUserNameUnique(reqBusinessAddTenant.getUsername())); + if (!usernameUnique) { + return RestResponse.failure(("用户名已被注册,请修改后重新提交")); + } + SysUser sysUser = reqBusinessAddTenant.transferToSysUser(); + sysUser.setTenantId(sysTenant.getTenantId()); + sysUser.setCreateBy(loginUser.getUserId()); + sysUser.setPassword(SecurityUtils.encryptPassword(sysUser.getPassword())); + userService.insertUser(sysUser); + + + // 用户角色 + userRoleMapper.countRoleAndUserId(100l,loginUser.getUserId()); + } catch (Exception e) { + e.printStackTrace(); + } + return RestResponse.success(); + } + + /** + * 更新 + * + * @param sysTenant + * @return + */ + public RestResponse updateTenant(SysTenant sysTenant) { + if (StringUtils.isEmpty(sysTenant.getTenantId())) { + return RestResponse.failure("操作失败,请稍后重试"); + } + SysTenant dbTenant = this.getById(sysTenant.getTenantId()); + if(null != dbTenant && dbTenant.getSuperTenant()) { + return RestResponse.failure("此租户信息不允许变更"); + } + LoginUser loginUser = SecurityUtils.getLoginUser(); + sysTenant.setBeginTime(DateUtil.parse(sysTenant.getBeginTime().toString())); + sysTenant.setEndTime(DateUtil.parse(DateUtil.format(sysTenant.getEndTime(),"yyyy-MM-dd 23:59:59"))); + sysTenant.setLastUpdateUser(loginUser.getUserId()); + sysTenant.setLastUpdateTime(new Date()); + boolean updateTenant = this.updateById(sysTenant); + if (updateTenant) { + return RestResponse.success(); + } else { + return RestResponse.failure("操作失败,请稍后重试"); + } + } + + /** + * 删除 + * + * @param tenantIds + * @return + */ + public RestResponse deleteById(String[] tenantIds) { + if (null == tenantIds || tenantIds.length == 0) { + return RestResponse.failure("操作失败,请稍后重试"); + } + + for (String tenantId : tenantIds) { + + SysTenant dbTenant = this.getById(tenantId); + if(null != dbTenant && dbTenant.getSuperTenant()) { + return RestResponse.failure(dbTenant.getTenantName() + ",此租户信息不允许删除"); + } + + // 是否有学生/课程/班级 + int contentCount = baseMapper.tenantHaveContent(tenantId); + if (contentCount > 0) { + return RestResponse.failure("租户下有学员,无法删除"); + } + } + + boolean deleteTenant = this.removeByIds(Arrays.asList(tenantIds)); + if (deleteTenant) { + return RestResponse.success(); + } else { + return RestResponse.failure("操作失败,请稍后重试"); + } + } + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index a3a0055..2100115 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -1,12 +1,5 @@ package com.ruoyi.system.service.impl; -import java.util.ArrayList; -import java.util.List; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.domain.entity.SysRole; @@ -18,17 +11,21 @@ import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserRole; -import com.ruoyi.system.mapper.SysPostMapper; -import com.ruoyi.system.mapper.SysRoleMapper; -import com.ruoyi.system.mapper.SysUserMapper; -import com.ruoyi.system.mapper.SysUserPostMapper; -import com.ruoyi.system.mapper.SysUserRoleMapper; +import com.ruoyi.system.mapper.*; import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; /** * 用户 业务层处理 - * + * * @author ruoyi */ @Service @@ -56,7 +53,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询用户列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -69,7 +66,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询已分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -82,7 +79,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -95,7 +92,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -107,7 +104,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -119,7 +116,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属角色组 - * + * * @param userName 用户名 * @return 结果 */ @@ -141,7 +138,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属岗位组 - * + * * @param userName 用户名 * @return 结果 */ @@ -163,7 +160,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户名称是否唯一 - * + * * @param userName 用户名称 * @return 结果 */ @@ -216,7 +213,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户是否允许操作 - * + * * @param user 用户信息 */ @Override @@ -230,7 +227,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户是否有数据权限 - * + * * @param userId 用户id */ @Override @@ -250,7 +247,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -269,7 +266,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 注册用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -281,7 +278,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -303,7 +300,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 用户授权角色 - * + * * @param userId 用户ID * @param roleIds 角色组 */ @@ -317,7 +314,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户状态 - * + * * @param user 用户信息 * @return 结果 */ @@ -329,7 +326,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户基本信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -341,7 +338,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -354,7 +351,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 重置用户密码 - * + * * @param user 用户信息 * @return 结果 */ @@ -366,7 +363,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -379,7 +376,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户角色信息 - * + * * @param user 用户对象 */ public void insertUserRole(SysUser user) @@ -405,7 +402,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户岗位信息 - * + * * @param user 用户对象 */ public void insertUserPost(SysUser user) @@ -431,7 +428,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户角色信息 - * + * * @param userId 用户ID * @param roleIds 角色组 */ @@ -457,7 +454,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -474,7 +471,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -495,7 +492,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 导入用户数据 - * + * * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @param userId 操作用户 @@ -564,4 +561,6 @@ public class SysUserServiceImpl implements ISysUserService public SysUser selectUserByPhoneOrUserName(String phone) { return userMapper.selectUserByPhone(phone); } + + } diff --git a/ruoyi-system/src/main/resources/mapper/mall/AftersaleMapper.xml b/ruoyi-system/src/main/resources/mapper/mall/AftersaleMapper.xml new file mode 100644 index 0000000..7d4c559 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/mall/AftersaleMapper.xml @@ -0,0 +1,19 @@ + + + + + + + select id, member_id, order_id, return_amount, type, status, handle_time, quantity, reason, description, proof_pics, handle_note, handle_man, create_by, create_time, update_by, update_time from oms_aftersale + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/mall/IndexStatisticsMapper.xml b/ruoyi-system/src/main/resources/mapper/mall/IndexStatisticsMapper.xml new file mode 100644 index 0000000..b99c8e9 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/mall/IndexStatisticsMapper.xml @@ -0,0 +1,104 @@ + + + + + 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 UNION ALL + SELECT date_sub( curdate( ), INTERVAL 7 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 8 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 9 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 10 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 11 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 12 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 13 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 14 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 15 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 16 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 17 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 18 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 19 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 20 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 21 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 22 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 23 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 24 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 25 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 26 DAY ) AS date UNION ALL + SELECT date_sub( curdate( ), INTERVAL 27 DAY ) AS date UNION ALL + 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 + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/mall/OrderMapper.xml b/ruoyi-system/src/main/resources/mapper/mall/OrderMapper.xml new file mode 100644 index 0000000..4b10a07 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/mall/OrderMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml index a6a9e81..c2304b2 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -14,22 +14,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - + - select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.del_flag, d.create_by, d.create_time + select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.delete_flag, d.create_by, d.create_time from sys_dept d - + - + - + - + - + - + - + - + - + insert into sys_dept( dept_id, @@ -112,7 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sysdate() ) - + update sys_dept @@ -129,7 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where dept_id = #{deptId} - + update sys_dept set ancestors = - + - update sys_dept set status = '0' where dept_id in + update sys_dept set status = '0' where dept_id in #{deptId} - + - update sys_dept set del_flag = '2' where dept_id = #{deptId} + update sys_dept set delete_flag = '2' where dept_id = #{deptId} - + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml new file mode 100644 index 0000000..1f32caf --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysTenantMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index aa12490..f1df6a4 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -23,10 +23,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - + @@ -35,7 +36,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + @@ -44,17 +45,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + - select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status, - r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status + r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status,u.tenant_id from sys_user u left join sys_dept d on u.dept_id = d.dept_id left join sys_user_role ur on u.user_id = ur.user_id left join sys_role r on r.role_id = ur.role_id - + - + - + - + - + - + - + - + - + insert into sys_user( user_id, @@ -172,7 +173,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sysdate() ) - + update sys_user @@ -193,28 +194,28 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where user_id = #{userId} - + update sys_user set status = #{status} where user_id = #{userId} - + update sys_user set avatar = #{avatar} where user_name = #{userName} - + update sys_user set password = #{password} where user_name = #{userName} - + update sys_user set del_flag = '2' where user_id = #{userId} - + update sys_user set del_flag = '2' where user_id in #{userId} - + - - + +