增加定时任务:租户过期 场馆过期 会员卡过期 商城产品展示过期 自动更新状态

master
15004070936 12 hours ago
parent 78adfdc0ec
commit 4e4851533f

@ -41,7 +41,7 @@ public class ProductShowController extends BaseController {
@ApiOperation("新增商品申请(租户)") @ApiOperation("新增商品申请(租户)")
@PreAuthorize("@ss.hasPermi('pms:publish:list')") @PreAuthorize("@ss.hasPermi('pms:publishProduct:list')")
@PostMapping @PostMapping
public ResponseEntity<Boolean> add(@RequestBody ProductShow productShow) { public ResponseEntity<Boolean> add(@RequestBody ProductShow productShow) {
return ResponseEntity.ok(service.insertProductShow(productShow)); return ResponseEntity.ok(service.insertProductShow(productShow));
@ -50,14 +50,14 @@ public class ProductShowController extends BaseController {
@ApiOperation("修改申请(租户)") @ApiOperation("修改申请(租户)")
@PreAuthorize("@ss.hasPermi('pms:publish:list')") @PreAuthorize("@ss.hasPermi('pms:publishProduct:list')")
@PutMapping @PutMapping
public ResponseEntity<Boolean> edit(@RequestBody ProductShow productShowUpdate) { public ResponseEntity<Boolean> edit(@RequestBody ProductShow productShowUpdate) {
return ResponseEntity.ok(service.updateProductShow(productShowUpdate)); return ResponseEntity.ok(service.updateProductShow(productShowUpdate));
} }
@ApiOperation("取消申请/删除(租户)") @ApiOperation("取消申请/删除(租户)")
@PreAuthorize("@ss.hasPermi('pms:publish:list')") @PreAuthorize("@ss.hasPermi('pms:publishProduct:list')")
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
public ResponseEntity<Boolean> remove(@PathVariable Long id) { public ResponseEntity<Boolean> remove(@PathVariable Long id) {
return ResponseEntity.ok(service.deleteProductShow(id)); return ResponseEntity.ok(service.deleteProductShow(id));
@ -66,9 +66,9 @@ public class ProductShowController extends BaseController {
//拒绝商品展示 //拒绝商品展示
@ApiOperation("拒绝商品展示(管理员)") @ApiOperation("拒绝商品展示(管理员)")
@PreAuthorize("@ss.hasPermi('pms:review:list')") @PreAuthorize("@ss.hasPermi('pms:review:list')")
@PutMapping("/refuse/{id}") @PutMapping("/refuse")
public ResponseEntity<Boolean> refuse(@PathVariable Long id) { public ResponseEntity<Boolean> refuse(@RequestBody ProductShow productShowUpdate) {
return ResponseEntity.ok(service.refuseProductShow(id)); return ResponseEntity.ok(service.refuseProductShow(productShowUpdate.getId()));
} }
//审核通过 //审核通过

@ -103,7 +103,8 @@ public class SysUserController extends BaseController
userService.checkUserDataScope(userId); userService.checkUserDataScope(userId);
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
List<SysRole> roles = roleService.selectRoleAll(); List<SysRole> roles = roleService.selectRoleAll();
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); // ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> r.getRoleId()>99l).collect(Collectors.toList()));
if (StringUtils.isNotNull(userId)) if (StringUtils.isNotNull(userId))
{ {
List<Integer> roleIds=roleService.selectRoleListByUserId(userId) ; List<Integer> roleIds=roleService.selectRoleListByUserId(userId) ;
@ -221,7 +222,7 @@ public class SysUserController extends BaseController
SysUser user = userService.selectUserById(userId); SysUser user = userService.selectUserById(userId);
List<SysRole> roles = roleService.selectRolesByUserId(userId); List<SysRole> roles = roleService.selectRolesByUserId(userId);
ajax.put("user", user); ajax.put("user", user);
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> r.getRoleId()>99l).collect(Collectors.toList()));
return ajax; return ajax;
} }

@ -2,12 +2,14 @@ package com.ruoyi.framework.web.service;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.enums.UserStatus; import com.ruoyi.common.enums.UserStatus;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysTenant; import com.ruoyi.system.domain.SysTenant;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.impl.SysTenantServiceImpl; import com.ruoyi.system.service.impl.SysTenantServiceImpl;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -30,10 +32,11 @@ public class UserDetailsServiceImpl implements UserDetailsService
@Autowired @Autowired
private ISysUserService userService; private ISysUserService userService;
@Autowired @Autowired
private SysTenantServiceImpl tenantService; private SysTenantServiceImpl tenantService;
@Autowired @Autowired
private ISysDeptService deptService;
@Autowired
private SysPermissionService permissionService; private SysPermissionService permissionService;
@Override @Override
@ -59,12 +62,20 @@ public class UserDetailsServiceImpl implements UserDetailsService
if (ObjectUtil.isEmpty(tenant) if (ObjectUtil.isEmpty(tenant)
|| !tenant.getInUse().equals("0") || !tenant.getInUse().equals("0")
|| !DateUtil.date().before(tenant.getEndTime()) || !DateUtil.date().before(tenant.getEndTime())
|| tenant.getDeleteFlag().equals("1") || !tenant.getDeleteFlag().equals("0")
){ ){
log.info("用户所属租户:{} 异常.", tenant.getTenantName()); log.info("用户所属租户:{} 异常.", tenant.getTenantName());
throw new ServiceException("用户所属租户:" + tenant.getTenantName() + " 异常,无法登录!"); throw new ServiceException("用户所属租户:" + tenant.getTenantName() + " 异常,无法登录!");
} }
SysDept dept= deptService.getById(user.getDeptId());
if (ObjectUtil.isEmpty(dept)
|| !dept.getStatus().equals("0")
|| !dept.getDeleteFlag().equals("0")
|| !DateUtil.date().before(DateUtil.parse(dept.getExpiryDate()))
){
log.info("用户所属场馆:{} 异常.", dept.getDeptName());
throw new ServiceException("用户所属场馆:" + dept.getDeptName() + " 异常,无法登录!");
}
return createLoginUser(user); return createLoginUser(user);
} }

@ -4,8 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
/** /**
* *
@ -26,6 +26,7 @@ public class ProductShow {
*/ */
private Long productId; private Long productId;
/** /**
* ID * ID
*/ */
@ -49,12 +50,12 @@ public class ProductShow {
/** /**
* *
*/ */
private LocalDate showStartTime; private Date showStartTime;
/** /**
* *
*/ */
private LocalDate showEndTime; private Date showEndTime;
/** /**
* 0- 1- 2- 3- 4- * 0- 1- 2- 3- 4-

@ -9,6 +9,10 @@ public class ProductShowVO extends ProductShow {
private String productCategoryName; private String productCategoryName;
private String tenantName; private String tenantName;
private String storeName; private String storeName;
private String outProductId;
private String productCategoryId;
} }

@ -101,6 +101,10 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
if (categoryId != null) { if (categoryId != null) {
qw.eq("category_id", categoryId); qw.eq("category_id", categoryId);
} }
Long brandId = query.getBrandId();
if (categoryId != null) {
qw.eq("brand_id", brandId);
}
Integer publishStatus = query.getPublishStatus(); Integer publishStatus = query.getPublishStatus();
if (publishStatus != null) { if (publishStatus != null) {
qw.eq("publish_status", publishStatus); qw.eq("publish_status", publishStatus);

@ -18,6 +18,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -40,7 +41,7 @@ public class ProductShowService extends ServiceImpl<ProductShowMapper, ProductSh
} }
LoginUser loginUser= SecurityUtils.getLoginUser(); LoginUser loginUser= SecurityUtils.getLoginUser();
//审核页list //审核页list
if(loginUser.getPermissions().contains("pms:review:list")){ if(loginUser.getPermissions().contains("pms:review:list")||loginUser.getPermissions().contains("*:*:*")){
return baseMapper.selectProductShowList(productShow); return baseMapper.selectProductShowList(productShow);
} }
//申请页list //申请页list
@ -104,10 +105,10 @@ public class ProductShowService extends ServiceImpl<ProductShowMapper, ProductSh
if (ObjectUtil.isEmpty(dbProductShow)){ if (ObjectUtil.isEmpty(dbProductShow)){
throw new RuntimeException("租户已取消申请"); throw new RuntimeException("租户已取消申请");
} }
if (!dbProductShow.getApplyStatus().equals("0")){ if (!"0,1,2".contains(dbProductShow.getApplyStatus())){
throw new RuntimeException("当前状态不允许此项操作"); throw new RuntimeException("当前状态不允许此项操作");
} }
if (dbProductShow.getShowStartTime().isBefore(LocalDateTime.now().toLocalDate())){ if (dbProductShow.getShowStartTime().before(new Date())){
throw new RuntimeException("展示开始日期已过,请联系租户修改展示时间后,重新提交申请"); throw new RuntimeException("展示开始日期已过,请联系租户修改展示时间后,重新提交申请");
} }
if (ObjectUtil.hasNull(productShowUpdate.getSort(),productShowUpdate.getShowCategory())){ if (ObjectUtil.hasNull(productShowUpdate.getSort(),productShowUpdate.getShowCategory())){
@ -123,10 +124,13 @@ public class ProductShowService extends ServiceImpl<ProductShowMapper, ProductSh
productShow.setApplyStatus("1"); productShow.setApplyStatus("1");
productShow.setSort(productShowUpdate.getSort()); productShow.setSort(productShowUpdate.getSort());
productShow.setShowCategory(productShowUpdate.getShowCategory()); productShow.setShowCategory(productShowUpdate.getShowCategory());
if (!dbProductShow.getApplyStatus().equals(productShowUpdate.getApplyStatus())){
productShow.setReviewTime(LocalDateTime.now()); productShow.setReviewTime(LocalDateTime.now());
}
return this.updateById(productShow); return this.updateById(productShow);
} }
//上架商品展示 (定时器触发事件) //上架商品展示 (定时器触发事件)
@Transactional @Transactional
public int onSaleProductShow() { public int onSaleProductShow() {
@ -137,7 +141,7 @@ public class ProductShowService extends ServiceImpl<ProductShowMapper, ProductSh
//商品展示到期 (定时器触发事件) //商品展示到期 (定时器触发事件)
@Transactional @Transactional
public int expireProductShow() { public int expireProductShow() {
int updatedRows=baseMapper.onSaleProductShow(); int updatedRows=baseMapper.expireProductShow();
System.out.println("昨天结束的展示任务已停止,影响记录数:" + updatedRows); System.out.println("昨天结束的展示任务已停止,影响记录数:" + updatedRows);
return updatedRows; return updatedRows;
} }

@ -1,26 +0,0 @@
package com.ruoyi.quartz.task;
import com.ruoyi.mall.service.ProductShowService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("productShowTask")
public class ProductShowTask {
@Autowired
private ProductShowService productShowService;
/**
* 00:01
*/
public void onSaleProductShow() {
productShowService.onSaleProductShow();
}
/**
* 00:02
*/
public void expireProductShow() {
productShowService.expireProductShow();
}
}

@ -0,0 +1,56 @@
package com.ruoyi.quartz.task;
import com.ruoyi.mall.service.ProductShowService;
import com.ruoyi.school.member.service.IScMemberCardService;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.SysTenantService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component("yogaTask")
public class YogaTask {
@Autowired
private ProductShowService productShowService;
@Autowired
private SysTenantService sysTenantService;
@Autowired
private ISysDeptService deptService;
@Autowired
private IScMemberCardService memberCardService;
/**
* 00:01
*/
public void onSaleProductShow() {
productShowService.onSaleProductShow();
}
/**
* 00:02
*/
public void expireProductShow() {
productShowService.expireProductShow();
}
/**
* 00:03
*/
public void expireTenant() {
sysTenantService.expireTenant();
}
/**
* 00:04
*/
public void expireDept() {
deptService.expireDept();
}
/**
*
*/
public void expireMemberCard() {
memberCardService.expiredMemberCard();
}
}

@ -3,7 +3,6 @@ package com.ruoyi.school.member.domain;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.ruoyi.common.utils.SecurityUtils;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
@ -245,9 +244,7 @@ public class ScMemberCard implements Serializable {
return CardStatus.fromString(this.status); return CardStatus.fromString(this.status);
} }
public String getTenantId(){
return SecurityUtils.getLoginUser().getNowTenantId();
}
public Integer getRemainingDays() { public Integer getRemainingDays() {
if (activationDate== null || expiryDate == null ) { if (activationDate== null || expiryDate == null ) {

@ -5,6 +5,7 @@ import com.ruoyi.school.member.domain.ScMemberCard;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import java.util.List; import java.util.List;
@ -52,18 +53,19 @@ public interface ScMemberCardMapper extends BaseMapper<ScMemberCard> {
/** /**
* *
*/ */
@Select("UPDATE sc_member_cards SET status = #{status}, updated_at = NOW() WHERE id = #{id} AND is_deleted = 0") @Update("UPDATE sc_member_cards SET status = #{status}, updated_at = NOW() WHERE id = #{id} AND is_deleted = 0")
int updateStatus(@Param("id") Long id, @Param("status") String status); int updateStatus(@Param("id") Long id, @Param("status") String status);
/** /**
* *
*/ */
@Select("UPDATE sc_member_cards SET remaining_count = remaining_count - #{count}, updated_at = NOW() WHERE id = #{id} AND remaining_count >= #{count} AND is_deleted = 0") @Update("UPDATE sc_member_cards SET remaining_count = remaining_count - #{count}, updated_at = NOW() WHERE id = #{id} AND remaining_count >= #{count} AND is_deleted = 0")
int deductCount(@Param("id") Long id, @Param("count") Integer count); int deductCount(@Param("id") Long id, @Param("count") Integer count);
/** /**
* *
*/ */
@Select("UPDATE sc_member_cards SET remaining_count = remaining_count + #{count}, updated_at = NOW() WHERE id = #{id} AND is_deleted = 0") @Update("UPDATE sc_member_cards SET remaining_count = remaining_count + #{count}, updated_at = NOW() WHERE id = #{id} AND is_deleted = 0")
int addCount(@Param("id") Long id, @Param("count") Integer count); int addCount(@Param("id") Long id, @Param("count") Integer count);
} }

@ -81,7 +81,7 @@ public interface IScMemberCardService extends IService<ScMemberCard> {
/** /**
* *
*/ */
int updateExpiredStatus(); int expiredMemberCard();
/** /**
* *

@ -133,6 +133,7 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
// 创建会员卡 // 创建会员卡
ScMemberCard card = new ScMemberCard(); ScMemberCard card = new ScMemberCard();
BeanUtils.copyProperties(dto, card); BeanUtils.copyProperties(dto, card);
card.setTenantId(SecurityUtils.getLoginUser().getNowTenantId());
// 设置卡号(如果未提供则自动生成) // 设置卡号(如果未提供则自动生成)
if (card.getCardNo() == null || card.getCardNo().isEmpty()) { if (card.getCardNo() == null || card.getCardNo().isEmpty()) {
@ -474,7 +475,7 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public int updateExpiredStatus() { public int expiredMemberCard() {
// 查找已过期的会员卡 // 查找已过期的会员卡
List<ScMemberCard> expiredCards = this.lambdaQuery() List<ScMemberCard> expiredCards = this.lambdaQuery()
.eq(ScMemberCard::getIsDeleted, 0) .eq(ScMemberCard::getIsDeleted, 0)
@ -489,11 +490,12 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
} }
// 批量更新状态 // 批量更新状态
expiredCards.forEach(card -> { expiredCards.forEach(expiredCard -> {
card.setStatus(ScMemberCard.CardStatus.EXPIRED.name()); expiredCard.setStatus(ScMemberCard.CardStatus.EXPIRED.name());
}); });
int updatedRows=this.updateBatchById(expiredCards) ? expiredCards.size() : 0;
return this.updateBatchById(expiredCards) ? expiredCards.size() : 0; System.out.println("今天开始的过期会员卡修改状态任务已启动,影响记录数:" + updatedRows);
return updatedRows;
} }
/** /**
@ -642,27 +644,7 @@ public class ScMemberCardServiceImpl extends ServiceImpl<ScMemberCardMapper, ScM
.count(); .count();
} }
// @Override
// public List<MemberCardVO> getExpiringCards(Integer days) {
// if (days == null) {
// days = 7; // 默认7天内到期
// }
//
// LocalDate startDate = LocalDate.now();
// LocalDate endDate = startDate.plusDays(days);
//
// List<ScMemberCard> cards = this.lambdaQuery()
// .eq(ScMemberCard::getIsDeleted, 0)
// .eq(ScMemberCard::getStatus, ScMemberCard.CardStatus.ACTIVE.name())
// .ge(ScMemberCard::getExpiryDate, startDate)
// .le(ScMemberCard::getExpiryDate, endDate)
// .orderByAsc(ScMemberCard::getExpiryDate)
// .list();
//
// return cards.stream()
// .map(this::convertToVO)
// .collect(Collectors.toList());
// }
} }

@ -119,4 +119,6 @@ public interface SysDeptMapper extends BaseMapper<SysDept>
* @return * @return
*/ */
public int deleteDeptById(Long deptId); public int deleteDeptById(Long deptId);
int expireDept();
} }

@ -31,4 +31,7 @@ public interface SysTenantMapper extends BaseMapper<SysTenant> {
SysTenant selectInUseUserTenant(@Param("userId")String userId, @Param("tenantId")String tenantId); SysTenant selectInUseUserTenant(@Param("userId")String userId, @Param("tenantId")String tenantId);
int tenantHaveContent(String tenantId); int tenantHaveContent(String tenantId);
int expireTenant();
} }

@ -119,4 +119,6 @@ public interface ISysDeptService extends IService<SysDept>
* @return * @return
*/ */
public int deleteDeptById(Long deptId); public int deleteDeptById(Long deptId);
int expireDept();
} }

@ -32,4 +32,5 @@ public interface SysTenantService extends IService<SysTenant> {
RestResponse addTenant(ReqBusinessAddTenant reqBusinessAddTenant); RestResponse addTenant(ReqBusinessAddTenant reqBusinessAddTenant);
RestResponse updateTenant(SysTenant sysTenant); RestResponse updateTenant(SysTenant sysTenant);
RestResponse deleteById(String[] tenantIds); RestResponse deleteById(String[] tenantIds);
int expireTenant();
} }

@ -421,4 +421,14 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> imp
{ {
return getChildList(list, t).size() > 0 ? true : false; return getChildList(list, t).size() > 0 ? true : false;
} }
//过期场馆修改状态 (定时器触发事件)
@Transactional
@Override
public int expireDept() {
int updatedRows=baseMapper.expireDept();
System.out.println("今天开始的过期场馆修改状态任务已启动,影响记录数:" + updatedRows);
return updatedRows;
}
} }

@ -14,7 +14,6 @@ import com.ruoyi.common.page.RespPage;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.uuid.IdGenerator; import com.ruoyi.common.utils.uuid.IdGenerator;
import com.ruoyi.system.domain.SysTenant; import com.ruoyi.system.domain.SysTenant;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.domain.columns.YjStore; import com.ruoyi.system.domain.columns.YjStore;
import com.ruoyi.system.domain.vo.ReqBusinessAddTenant; import com.ruoyi.system.domain.vo.ReqBusinessAddTenant;
import com.ruoyi.system.domain.vo.ReqSearchSysTenant; import com.ruoyi.system.domain.vo.ReqSearchSysTenant;
@ -31,7 +30,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -160,6 +158,13 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
if (!usernameUnique) { if (!usernameUnique) {
return RestResponse.failure(("用户名已被注册,请修改后重新提交")); return RestResponse.failure(("用户名已被注册,请修改后重新提交"));
} }
SysUser sysUser = reqBusinessAddTenant.transferToSysUser();
// 校验电话号是否已被注册
boolean phoneUnique = UserConstants.UNIQUE.equals(userService.checkPhoneUnique(sysUser));
if (!phoneUnique) {
return RestResponse.failure(("用户手机号码已被注册,请修改后重新提交"));
}
//部门 //部门
SysDept sysDept=new SysDept(); SysDept sysDept=new SysDept();
sysDept.setTenantId(sysTenant.getTenantId()); sysDept.setTenantId(sysTenant.getTenantId());
@ -178,22 +183,19 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
store.setStoreName(sysDept.getDeptName()); store.setStoreName(sysDept.getDeptName());
storeMapper.insertYjStore(store); storeMapper.insertYjStore(store);
SysUser sysUser = reqBusinessAddTenant.transferToSysUser();
sysUser.setTenantId(sysTenant.getTenantId()); sysUser.setTenantId(sysTenant.getTenantId());
sysUser.setCreateBy(loginUser.getUserId()); sysUser.setCreateBy(loginUser.getUserId());
sysUser.setPassword(SecurityUtils.encryptPassword(sysUser.getPassword())); sysUser.setPassword(SecurityUtils.encryptPassword(sysUser.getPassword()));
sysUser.setDeptId(sysDept.getDeptId()); sysUser.setDeptId(sysDept.getDeptId());
sysUser.setStatus("0");
sysUser.setRoleIds(new Long[]{100l});
userService.insertUser(sysUser); userService.insertUser(sysUser);
sysDept.setLeaderId(sysUser.getUserId()); sysDept.setLeaderId(sysUser.getUserId());
deptMapper.updateDept(sysDept); deptMapper.updateDept(sysDept);
// 用户角色
SysUserRole userRole=new SysUserRole();
userRole.setRoleId(100l);
userRole.setUserId(sysUser.getUserId());
List<SysUserRole> list=new ArrayList<>();
list.add(userRole);
userRoleMapper.batchUserRole(list);
//角色menu //角色menu
// roleMenuMapper.insertForNewTenant(sysTenant.getTenantId()); // roleMenuMapper.insertForNewTenant(sysTenant.getTenantId());
@ -234,7 +236,8 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
* @param tenantIds * @param tenantIds
* @return * @return
*/ */
public RestResponse deleteById(String[] tenantIds) { public RestResponse deleteById(String[] tenantIds)
{
if (null == tenantIds || tenantIds.length == 0) { if (null == tenantIds || tenantIds.length == 0) {
return RestResponse.failure("操作失败,请稍后重试"); return RestResponse.failure("操作失败,请稍后重试");
} }
@ -251,6 +254,12 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
if (contentCount > 0) { if (contentCount > 0) {
return RestResponse.failure("租户下有会员,无法删除"); return RestResponse.failure("租户下有会员,无法删除");
} }
int deptCount = deptMapper.selectCount(new QueryWrapper<SysDept>()
.eq("tenant_id", tenantId)
.eq("delete_flag", "0"));
if (deptCount > 0) {
return RestResponse.failure("租户下有场馆,无法删除");
}
} }
String joinedString = String.join(",", tenantIds); String joinedString = String.join(",", tenantIds);
boolean deleteTenant = this.update(new UpdateWrapper<SysTenant>() boolean deleteTenant = this.update(new UpdateWrapper<SysTenant>()
@ -264,5 +273,13 @@ public class SysTenantServiceImpl extends ServiceImpl<SysTenantMapper, SysTenant
} }
} }
//过期租户修改状态 (定时器触发事件)
@Transactional
@Override
public int expireTenant() {
int updatedRows=baseMapper.expireTenant();
System.out.println("今天开始的过期租户修改状态任务已启动,影响记录数:" + updatedRows);
return updatedRows;
}
} }

@ -1,6 +1,7 @@
package com.ruoyi.system.service.impl; package com.ruoyi.system.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.annotation.DataScope;
@ -341,6 +342,15 @@ public class SysUserServiceImpl implements ISysUserService
if (user.getStatus().equals("1")){ if (user.getStatus().equals("1")){
removeAppUserManager(userId); removeAppUserManager(userId);
} }
//如果手机号有变化则更新关联的app账号
if (StrUtil.isNotEmpty(user.getPhonenumber())){
SysUser dbUser=this.selectUserById(userId);
if (!dbUser.getPhonenumber().equals(user.getPhonenumber())){
user.setPassword(dbUser.getPassword());
removeAppUserManager(userId);
insertAppUser(user);
}
}
return userMapper.updateUser(user); return userMapper.updateUser(user);
} }

@ -9,6 +9,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
SELECT SELECT
a.*, a.*,
p.name AS product_name, p.name AS product_name,
p.out_product_id,
s.store_name, s.store_name,
t.tenant_name, t.tenant_name,
c.type_name AS product_category_name c.type_name AS product_category_name
@ -27,16 +28,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="productName != null and productName != ''"> <if test="productName != null and productName != ''">
and p.name like concat('%',#{productName},'%') and p.name like concat('%',#{productName},'%')
</if> </if>
<if test="productName != null and productName != ''"> <if test="outProductId != null and outProductId != ''">
and p.name like concat('%',#{productName},'%') and p.out_product_id =#{outProductId}
</if>
<if test="productCategoryId != null and productCategoryId != ''">
and c.id =#{productCategoryId}
</if>
<if test="productCategoryName != null and productCategoryName != ''">
and c.type_name like concat('%',#{productCategoryName},'%')
</if> </if>
<if test="storeName != null and storeName != ''"> <if test="storeName != null and storeName != ''">
and s.store_name like concat('%',#{storeName},'%') and s.store_name like concat('%',#{storeName},'%')
</if> </if>
<if test="showFlag != null AND showFlag !=''"> <if test="showFlag != null and showFlag !=''">
and a.show_flag =#{showFlag} and a.show_flag =#{showFlag}
</if> </if>
<if test="applyStatus != null AND applyStatus !=''"> <if test="applyStatus != null and applyStatus !=''">
and a.apply_status =#{applyStatus} and a.apply_status =#{applyStatus}
</if> </if>
ORDER BY a.apply_time DESC,a.sort ASC ORDER BY a.apply_time DESC,a.sort ASC
@ -45,11 +52,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="onSaleProductShow" parameterType="int"> <update id="onSaleProductShow" parameterType="int">
UPDATE mall_product_show UPDATE mall_product_show
SET show_flag = '1', apply_status = '3' SET show_flag = '1', apply_status = '3'
WHERE show_start_time = CURDATE(); WHERE show_start_time = CURDATE() and apply_status = '1';
</update> </update>
<update id="expireProductShow" parameterType="int"> <update id="expireProductShow" parameterType="int">
UPDATE mall_product_show UPDATE mall_product_show
SET show_flag = '0', apply_status = '4' SET show_flag = '0', apply_status = '4'
WHERE show_end_time = DATE_SUB(CURDATE(), INTERVAL 1 DAY); WHERE show_end_time = DATE_SUB(CURDATE(), INTERVAL 1 DAY) and apply_status = '3';
</update> </update>
</mapper> </mapper>

@ -0,0 +1,13 @@
<?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.school.member.mapper.ScMemberCardMapper">
<!-- <update id="expiredMemberCard">-->
<!-- UPDATE sc_member_cards -->
<!-- SET status = 'EXPIRED' -->
<!-- WHERE status in ('ACTIVE','INACTIVE') -->
<!-- and expiry_date < CURDATE() -->
<!-- AND is_deleted = 0-->
<!-- </update>-->
</mapper>

@ -180,7 +180,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update> </update>
<delete id="deleteDeptById" parameterType="Long"> <delete id="deleteDeptById" parameterType="Long">
update sys_dept set delete_flag = '2' where dept_id = #{deptId} update sys_dept set delete_flag = '1' where dept_id = #{deptId}
</delete> </delete>
<update id="expireDept" parameterType="int">
UPDATE sys_dept
SET status = '1'
WHERE expiry_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
AND status = '0'
and delete_flag = '0';
</update>
</mapper> </mapper>

@ -20,6 +20,7 @@
and t.in_use='0' and t.in_use='0'
and t.delete_flag='0' and t.delete_flag='0'
</select> </select>
<select id="tenantHaveContent" resultType="integer"> <select id="tenantHaveContent" resultType="integer">
select select
sum(CASE sum(CASE
@ -31,4 +32,13 @@
LEFT JOIN sc_course c on t.tenant_id=c.tenant_id LEFT JOIN sc_course c on t.tenant_id=c.tenant_id
WHERE t.tenant_id=#{tenantId} WHERE t.tenant_id=#{tenantId}
</select> </select>
<update id="expireTenant" parameterType="int">
UPDATE sys_tenant
SET in_use = '1'
WHERE end_time = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
and in_use='0'
and delete_flag='0';
</update>
</mapper> </mapper>

@ -231,8 +231,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update sys_user set delelete_flag = '2' where user_id = #{userId} update sys_user set delelete_flag = '2' where user_id = #{userId}
</delete> </delete>
<!-- <delete id="deleteUserByIds" parameterType="Long">-->
<!-- update sys_user set delete_flag = '2' where user_id in-->
<!-- <foreach collection="array" item="userId" open="(" separator="," close=")">-->
<!-- #{userId}-->
<!-- </foreach>-->
<!-- </delete>-->
<delete id="deleteUserByIds" parameterType="Long"> <delete id="deleteUserByIds" parameterType="Long">
update sys_user set delete_flag = '2' where user_id in DELETE FROM sys_user where user_id in
<foreach collection="array" item="userId" open="(" separator="," close=")"> <foreach collection="array" item="userId" open="(" separator="," close=")">
#{userId} #{userId}
</foreach> </foreach>

Loading…
Cancel
Save