租户管理

master
xiaoning 6 days ago
parent 7de4b04ccf
commit 73520984c4

@ -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<List<ProductTopVO>> goodsStatistics(@Validated GoodsStatisticsQuery goodsStatisticsQuery) {
return ResponseEntity.ok(indexStatisticsService.goodsStatistics(goodsStatisticsQuery));
}
@ApiOperation(value = "订单与售后单统计")
@GetMapping("/order/aftersale/statistics")
public ResponseEntity<OrderAndAftersaleStatisticsVO> orderAndAftersaleStatistics(){
return ResponseEntity.ok(indexStatisticsService.orderAndAftersaleStatistics());
}
@ApiOperation(value = "订单信息")
@PostMapping("/orderStatistics")
public ResponseEntity<List<OrderStatisticsVO>> orderStatistics(@RequestBody OrderStatisticsQuery param) {
return ResponseEntity.ok(indexStatisticsService.orderStatistics(param));
}
}

@ -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.SysMenu;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginBody; 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.common.utils.SecurityUtils;
import com.ruoyi.framework.web.service.SysLoginService; import com.ruoyi.framework.web.service.SysLoginService;
import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.framework.web.service.SysPermissionService;
@ -49,19 +48,6 @@ public class SysLoginController {
return ajax; 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") @GetMapping("getInfo")
public AjaxResult getInfo() { public AjaxResult getInfo() {
SysUser user = SecurityUtils.getLoginUser().getUser(); SysUser user = SecurityUtils.getLoginUser().getUser();
// 角色集合 // 角色集合
Set<String> roles = permissionService.getRolePermission(user); Set<String> roles = permissionService.getRolePermission(user);
// 权限集合 // 权限集合
Set<String> permissions = permissionService.getMenuPermission(user); Set<String> permissions = permissionService.getMenuPermission(user);
//所属租户
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put("user", user); ajax.put("user", user);
ajax.put("roles", roles); ajax.put("roles", roles);

@ -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.*;
/**
* <p>
*
* </p>
*
* @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);
}
}

@ -48,7 +48,7 @@ public class SysDept extends BaseEntity
private String status; private String status;
/** 删除标志0代表存在 2代表删除 */ /** 删除标志0代表存在 2代表删除 */
private String delFlag; private String deleteFlag;
/** 父部门名称 */ /** 父部门名称 */
private String parentName; private String parentName;
@ -152,14 +152,14 @@ public class SysDept extends BaseEntity
this.status = status; 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() public String getParentName()
@ -194,7 +194,7 @@ public class SysDept extends BaseEntity
.append("phone", getPhone()) .append("phone", getPhone())
.append("email", getEmail()) .append("email", getEmail())
.append("status", getStatus()) .append("status", getStatus())
.append("delFlag", getDelFlag()) .append("delFlag", getDeleteFlag())
.append("createBy", getCreateBy()) .append("createBy", getCreateBy())
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()) .append("updateBy", getUpdateBy())

@ -1,12 +1,5 @@
package com.ruoyi.common.core.domain.entity; 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.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
@ -14,6 +7,14 @@ import com.ruoyi.common.annotation.Excel.ColumnType;
import com.ruoyi.common.annotation.Excel.Type; import com.ruoyi.common.annotation.Excel.Type;
import com.ruoyi.common.annotation.Excels; import com.ruoyi.common.annotation.Excels;
import com.ruoyi.common.core.domain.BaseEntity; 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 * sys_user
@ -95,6 +96,8 @@ public class SysUser extends BaseEntity
/** 角色ID */ /** 角色ID */
private Long roleId; private Long roleId;
public String tenantId;
public SysUser() public SysUser()
{ {
@ -105,6 +108,14 @@ public class SysUser extends BaseEntity
this.userId = userId; this.userId = userId;
} }
public String getTenantId() {
return tenantId;
}
public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public Long getUserId() public Long getUserId()
{ {
return userId; return userId;

@ -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<Long> {
@Override
public void serialize(Long aLong, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
if (aLong != null) {
jsonGenerator.writeNumber(aLong);
}
}
}

@ -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;
}

@ -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;
}

@ -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<T> extends Page<T> {
private List<T> rows = Collections.emptyList();
@JsonSerialize(using = LongJsonSerializer.class)
private long total;
public RespPage(long current, long size) {
super(current, size);
}
@Override
public Page<T> setRecords(List<T> records) {
this.rows=records;
return this;
}
@Override
public Page<T> setTotal(long total) {
this.total=total;
return this;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
@Override
public long getTotal() {
return total;
}
}

@ -10,7 +10,6 @@ import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.CaptchaException;
import com.ruoyi.common.exception.user.CaptchaExpireException; 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.exception.user.UserPasswordNotMatchException;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.MessageUtils;
@ -31,10 +30,8 @@ import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* *
@ -164,39 +161,7 @@ public class SysLoginService {
userService.updateUserProfile(user); 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<Integer> 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) { public SysUser initVipUser(ExtraUserBody body) {
Date now = new Date(); Date now = new Date();

@ -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;
}

@ -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;
}

@ -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;
}

@ -0,0 +1,11 @@
package com.ruoyi.mall.domain.query;
import lombok.Data;
//订单统计查询条件对象
@Data
public class OrderStatisticsQuery {
//查询范围类型 1近一周 2近一个月
private Integer type;
}

@ -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;
}

@ -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;
}

@ -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;
}

@ -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<Aftersale> {
OrderAndAftersaleStatisticsVO statPendingAndProcessing();
}

@ -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<ProductTopVO> goodsSkuStatistics(GoodsStatisticsQuery goodsStatisticsQuery);
List<ProductTopVO> goodsStatistics(GoodsStatisticsQuery goodsStatisticsQuery);
List<OrderStatisticsVO> orderStatistics(OrderStatisticsQuery param);
}

@ -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<Order> {
Integer statWaitDelivered();
OrderAndAftersaleStatisticsVO statTodayData(@Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
}

@ -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<ProductTopVO> 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<OrderStatisticsVO> orderStatistics(OrderStatisticsQuery param) {
return indexStatisticsMapper.orderStatistics(param);
}
}

@ -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;
/**
* <p>
*
* </p>
*
* @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;
}
}

@ -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;
}
}

@ -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;
}

@ -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;
/**
* <p>
* Mapper
* </p>
*/
public interface SysTenantMapper extends BaseMapper<SysTenant> {
/**
*
*
* @param userId
* @return
*/
List<SysTenant> 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);
}

@ -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<SysTenant> {
/**
*
* @param userId
* @param limitTenantUserId
* @return
*/
List<SysTenant> 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);
}

@ -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<SysTenantMapper, SysTenant> implements SysTenantService {
@Autowired
private ISysUserService userService;
@Autowired
private SysUserRoleMapper userRoleMapper;
@Override
public List<SysTenant> 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<SysTenant> page = new RespPage(reqSearchSysTenant.getPageNum(), reqSearchSysTenant.getPageSize());
RespPage<SysTenant> 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<SysTenant> 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<String> 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("操作失败,请稍后重试");
}
}
}

@ -1,12 +1,5 @@
package com.ruoyi.system.service.impl; 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.annotation.DataScope;
import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.constant.UserConstants;
import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysRole;
@ -18,13 +11,17 @@ import com.ruoyi.common.utils.spring.SpringUtils;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost; import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole; import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysPostMapper; import com.ruoyi.system.mapper.*;
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.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService; 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;
/** /**
* *
@ -564,4 +561,6 @@ public class SysUserServiceImpl implements ISysUserService
public SysUser selectUserByPhoneOrUserName(String phone) { public SysUser selectUserByPhoneOrUserName(String phone) {
return userMapper.selectUserByPhone(phone); return userMapper.selectUserByPhone(phone);
} }
} }

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.mall.mapper.AftersaleMapper">
<sql id="selectAftersaleVo">
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
</sql>
<select id="statPendingAndProcessing" resultType="OrderAndAftersaleStatisticsVO">
select
IFNULL(sum(case when status=0 then 1 else 0 end), 0) pendingAftersaleCount,
IFNULL(sum(case when status=1 then 1 else 0 end), 0) processingAftersaleCount
from oms_aftersale
</select>
</mapper>

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.mall.mapper.IndexStatisticsMapper">
<sql id="dateRange">
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
</sql>
<sql id="dateRange2">
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
</sql>
<resultMap id="topSalesResultMap" type="ProductTopVO">
<result property="productName" column="product_name"/>
<result property="totalSales" column="total_sales"/>
<result property="pic" column="pic"/>
<result property="spData" column="sp_data"/>
</resultMap>
<select id="goodsStatistics" parameterType="GoodsStatisticsQuery" resultMap="topSalesResultMap">
SELECT product_id ,
product_name,
pic,
IFNULL(SUM(quantity), 0) as total_sales
FROM oms_order_item item right join oms_order o on o.id=item.order_id
WHERE DATE(item.create_time) between DATE(#{startDate}) AND DATE(#{endDate}) AND o.status in(1,2,3)
GROUP BY product_id, product_name
ORDER BY total_sales DESC
LIMIT #{size}
</select>
<select id="orderStatistics" resultType="OrderStatisticsVO">
select a.date,
IFNULL(b.order_count,0) orderCount,
IFNULL(b.order_amount,0) orderAmount
from
(
<choose>
<when test="type == 1">
<include refid="dateRange2"></include>
</when>
<when test="type == 2">
<include refid="dateRange"></include>
</when>
</choose>
) a
left join (
SELECT DATE_FORMAT(create_time, '%Y-%m-%d') as date,
COUNT(*) as order_count,
SUM(total_amount) as order_amount
FROM oms_order
WHERE create_time >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND status in(1,2,3)
GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d')
) b
on a.date=b.date
order by a.date asc
</select>
<select id="goodsSkuStatistics" resultMap="topSalesResultMap">
SELECT product_id ,
product_name,
pic,
sp_data,
IFNULL(SUM(quantity), 0) as total_sales
FROM oms_order_item item right join oms_order o on o.id=item.order_id
WHERE DATE(item.create_time) between DATE(#{startDate}) AND DATE(#{endDate}) AND o.status in(1,2,3)
GROUP BY sku_id
ORDER BY total_sales DESC
LIMIT #{size}
</select>
</mapper>

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.mall.mapper.OrderMapper">
<select id="statWaitDelivered" resultType="java.lang.Integer">
select IFNULL(count(id), 0) from oms_order where status=1 and aftersale_status=1
</select>
<select id="statTodayData" resultType="OrderAndAftersaleStatisticsVO">
select
IFNULL(sum(case when status in (2,3) then 1 else 0 end), 0) todayHasDeliveredCount,
IFNULL(count(id), 0) todayOrderCount,
IFNULL(sum(case when status in (1,2,3) then pay_amount else 0 end), 0) todayTransactionAmount
from oms_order
where create_time between #{startTime} and #{endTime}
</select>
</mapper>

@ -14,7 +14,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="phone" column="phone" /> <result property="phone" column="phone" />
<result property="email" column="email" /> <result property="email" column="email" />
<result property="status" column="status" /> <result property="status" column="status" />
<result property="delFlag" column="del_flag" /> <result property="deleteFlag" column="delete_flag" />
<result property="parentName" column="parent_name" /> <result property="parentName" column="parent_name" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
@ -23,13 +23,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectDeptVo"> <sql id="selectDeptVo">
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 from sys_dept d
</sql> </sql>
<select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult"> <select id="selectDeptList" parameterType="SysDept" resultMap="SysDeptResult">
<include refid="selectDeptVo"/> <include refid="selectDeptVo"/>
where d.del_flag = '0' where d.delete_flag = '0'
<if test="deptId != null and deptId != 0"> <if test="deptId != null and deptId != 0">
AND dept_id = #{deptId} AND dept_id = #{deptId}
</if> </if>
@ -64,12 +64,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="checkDeptExistUser" parameterType="Long" resultType="int"> <select id="checkDeptExistUser" parameterType="Long" resultType="int">
select count(1) from sys_user where dept_id = #{deptId} and del_flag = '0' select count(1) from sys_user where dept_id = #{deptId} and delete_flag = '0'
</select> </select>
<select id="hasChildByDeptId" parameterType="Long" resultType="int"> <select id="hasChildByDeptId" parameterType="Long" resultType="int">
select count(1) from sys_dept select count(1) from sys_dept
where del_flag = '0' and parent_id = #{deptId} limit 1 where delete_flag = '0' and parent_id = #{deptId} limit 1
</select> </select>
<select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult"> <select id="selectChildrenDeptById" parameterType="Long" resultMap="SysDeptResult">
@ -77,7 +77,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int"> <select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
select count(*) from sys_dept where status = 0 and del_flag = '0' and find_in_set(#{deptId}, ancestors) select count(*) from sys_dept where status = 0 and delete_flag = '0' and find_in_set(#{deptId}, ancestors)
</select> </select>
<select id="checkDeptNameUnique" resultMap="SysDeptResult"> <select id="checkDeptNameUnique" resultMap="SysDeptResult">
@ -151,7 +151,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<delete id="deleteDeptById" parameterType="Long"> <delete id="deleteDeptById" parameterType="Long">
update sys_dept set del_flag = '2' where dept_id = #{deptId} update sys_dept set delete_flag = '2' where dept_id = #{deptId}
</delete> </delete>
</mapper> </mapper>

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.system.mapper.SysTenantMapper">
<select id="selectUserTenantList" resultType="SysTenant">
select t.tenant_id,t.tenant_name
from sys_tenant t,sys_user_tenant ut
where t.delete_flag='0'
and t.tenant_id=ut.tenant_id and ut.user_id=#{userId}
<if test="limitTenantUserId != null and limitTenantUserId != ''">
and exists(select 1 from sys_user_tenant utl where utl.user_id=#{limitTenantUserId} and utl.tenant_id=t.tenant_id)
</if>
order by t.create_time desc
</select>
<select id="selectInUseUserTenant" resultType="SysTenant">
select * from sys_tenant t,sys_user_tenant ut
where t.tenant_id=ut.tenant_id
and ut.user_id=#{userId} and ut.tenant_id=#{tenantId}
and now() between t.begin_time and t.end_time
and t.in_use='1'
and t.delete_flag='0'
</select>
<select id="tenantHaveContent" resultType="integer">
select
sum(CASE
WHEN s.student_name is not null THEN 1
WHEN c.course_name is not null THEN 1
WHEN a.cla_name is not null THEN 1
ELSE 0 END)
from sys_tenant t
LEFT JOIN sc_student s on t.tenant_id=s.tenant_id
LEFT JOIN sc_course c on t.tenant_id=c.tenant_id
LEFT JOIN sc_course_cla a on t.tenant_id=a.tenant_id
WHERE t.tenant_id=#{tenantId}
</select>
</mapper>

@ -23,6 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" /> <result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
<result property="remark" column="remark" /> <result property="remark" column="remark" />
<result property="tenantId" column="tenant_id" />
<association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult" /> <association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult" />
<collection property="roles" javaType="java.util.List" resultMap="RoleResult" /> <collection property="roles" javaType="java.util.List" resultMap="RoleResult" />
</resultMap> </resultMap>
@ -48,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectUserVo"> <sql id="selectUserVo">
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, 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 from sys_user u
left join sys_dept d on u.dept_id = d.dept_id 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_user_role ur on u.user_id = ur.user_id

Loading…
Cancel
Save