31 changed files with 732 additions and 44 deletions
@ -0,0 +1,30 @@ |
|||
package com.qs.serve.common.framework.redis; |
|||
|
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.data.redis.cache.RedisCache; |
|||
import org.springframework.data.redis.cache.RedisCacheConfiguration; |
|||
import org.springframework.data.redis.cache.RedisCacheManager; |
|||
import org.springframework.data.redis.cache.RedisCacheWriter; |
|||
import org.springframework.util.StringUtils; |
|||
|
|||
import java.time.Duration; |
|||
|
|||
@Slf4j |
|||
public class TtlRedisCacheManager extends RedisCacheManager { |
|||
public TtlRedisCacheManager(RedisCacheWriter cacheWriter, RedisCacheConfiguration defaultCacheConfiguration) { |
|||
super(cacheWriter, defaultCacheConfiguration); |
|||
} |
|||
|
|||
@Override |
|||
protected RedisCache createRedisCache(String name, RedisCacheConfiguration cacheConfig) { |
|||
log.debug("TtlRedisCacheManager keyName:{}",name); |
|||
String[] cells = StringUtils.delimitedListToStringArray(name, "="); |
|||
name = cells[0]; |
|||
if (cells.length > 1) { |
|||
long ttl = Long.parseLong(cells[1]); |
|||
// 根据传参设置缓存失效时间,默认单位是秒
|
|||
cacheConfig = cacheConfig.entryTtl(Duration.ofSeconds(ttl)); |
|||
} |
|||
return super.createRedisCache(name, cacheConfig); |
|||
} |
|||
} |
@ -0,0 +1,177 @@ |
|||
package com.qs.serve.modules.bms.controller; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.qs.serve.common.model.annotation.SysLog; |
|||
import com.qs.serve.common.model.dto.PageVo; |
|||
import com.qs.serve.common.model.dto.R; |
|||
import com.qs.serve.common.model.enums.BizType; |
|||
import com.qs.serve.common.model.enums.SystemModule; |
|||
import com.qs.serve.common.util.CollectionUtil; |
|||
import com.qs.serve.common.util.CopierUtil; |
|||
import com.qs.serve.common.util.PageUtil; |
|||
import com.qs.serve.common.util.StringUtils; |
|||
import com.qs.serve.modules.bms.entity.BmsRegion; |
|||
import com.qs.serve.modules.bms.entity.BmsRegion2; |
|||
import com.qs.serve.modules.bms.entity.bo.BmsRegionUserBo; |
|||
import com.qs.serve.modules.bms.entity.bo.BmsRegionUserSaveBo; |
|||
import com.qs.serve.modules.bms.service.BmsRegion2Service; |
|||
import com.qs.serve.modules.bms.service.BmsRegionService; |
|||
import com.qs.serve.modules.sys.entity.SysUser; |
|||
import com.qs.serve.modules.sys.service.SysUserService; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.security.access.prepost.PreAuthorize; |
|||
import org.springframework.web.bind.annotation.*; |
|||
|
|||
import com.qs.serve.modules.bms.entity.BmsRegionUser; |
|||
import com.qs.serve.modules.bms.service.BmsRegionUserService; |
|||
|
|||
import javax.validation.Valid; |
|||
import java.util.ArrayList; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.stream.Collectors; |
|||
|
|||
/** |
|||
* 基础档案 区域负责人 |
|||
* @author YenHex |
|||
* @since 2022-11-02 |
|||
*/ |
|||
@Slf4j |
|||
@AllArgsConstructor |
|||
@RestController |
|||
@RequestMapping("bms/regionUser") |
|||
public class BmsRegionUserController { |
|||
|
|||
private BmsRegionUserService bmsRegionUserService; |
|||
private BmsRegion2Service bmsRegion2Service; |
|||
private BmsRegionService bmsRegionService; |
|||
private SysUserService sysUserService; |
|||
|
|||
/** |
|||
* 列表 |
|||
* @param param |
|||
* @return |
|||
*/ |
|||
@GetMapping("/list") |
|||
@PreAuthorize("hasRole('bms:regionUser:query')") |
|||
public R<List<BmsRegionUser>> getPage(BmsRegionUserBo param){ |
|||
BmsRegionUser regionUser = CopierUtil.copy(param,new BmsRegionUser()); |
|||
LambdaQueryWrapper<BmsRegionUser> regionUserWrapper = new LambdaQueryWrapper<>(regionUser); |
|||
List<BmsRegionUser> list = bmsRegionUserService.list(regionUserWrapper); |
|||
if(list.size()<1){ |
|||
return R.ok(new ArrayList<>()); |
|||
} |
|||
List<String> userIds = list.stream().map(BmsRegionUser::getUserId).collect(Collectors.toList()); |
|||
List<SysUser> sysUsers = sysUserService.listByIds(userIds); |
|||
for (BmsRegionUser bmsRegionUser : list) { |
|||
for (SysUser sysUser : sysUsers) { |
|||
if(bmsRegionUser.getUserId().equals(sysUser.getId())){ |
|||
bmsRegionUser.setUserName(sysUser.getName()); |
|||
bmsRegionUser.setUserCode(sysUser.getCode()); |
|||
} |
|||
} |
|||
} |
|||
|
|||
Map<Integer,List<BmsRegionUser>> listMap = list.stream().collect(Collectors.groupingBy(BmsRegionUser::getType)); |
|||
List<BmsRegionUser> list1 = listMap.get(0); |
|||
if(CollectionUtil.isNotEmpty(list1)){ |
|||
List<String> regionIds = list1.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); |
|||
List<BmsRegion> regionList = bmsRegionService.listByIds(regionIds); |
|||
for (BmsRegion region : regionList) { |
|||
for (BmsRegionUser bmsRegionUser : list) { |
|||
if(bmsRegionUser.getRegionId().equals(region.getId())){ |
|||
bmsRegionUser.setRegionCode(region.getCode()); |
|||
bmsRegionUser.setRegionName(region.getName()); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
List<BmsRegionUser> list2 = listMap.get(1); |
|||
if(CollectionUtil.isNotEmpty(list2)){ |
|||
List<String> regionIds = list2.stream().map(BmsRegionUser::getRegionId).collect(Collectors.toList()); |
|||
List<BmsRegion2> regionList = bmsRegion2Service.listByIds(regionIds); |
|||
for (BmsRegion2 region : regionList) { |
|||
for (BmsRegionUser bmsRegionUser : list) { |
|||
if(bmsRegionUser.getRegionId().equals(region.getId())){ |
|||
bmsRegionUser.setRegionCode(region.getCode()); |
|||
bmsRegionUser.setRegionName(region.getName()); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
return R.ok(list); |
|||
} |
|||
|
|||
/** |
|||
* 批量保存 |
|||
* @param param |
|||
* @return |
|||
*/ |
|||
@PostMapping("/save") |
|||
@SysLog(module = SystemModule.BASE, title = "区域负责人", biz = BizType.UPDATE) |
|||
@PreAuthorize("hasRole('bms:regionUser:insert')") |
|||
public R<?> save(@RequestBody @Valid BmsRegionUserSaveBo param){ |
|||
Integer type = param.getType(); |
|||
List<BmsRegionUser> bmsRegionUsers = new ArrayList<>(); |
|||
for (String regionId : param.getRegionIds()) { |
|||
for (String userId : param.getUserIds()) { |
|||
BmsRegionUser regionUser = bmsRegionUserService.getByParam(type,regionId,userId); |
|||
if(regionUser==null){ |
|||
regionUser = new BmsRegionUser(); |
|||
regionUser.setType(type); |
|||
regionUser.setRegionId(regionId); |
|||
regionUser.setUserId(userId); |
|||
bmsRegionUsers.add(regionUser); |
|||
} |
|||
} |
|||
} |
|||
bmsRegionUserService.saveBatch(bmsRegionUsers); |
|||
return R.ok(); |
|||
} |
|||
|
|||
/** |
|||
* 设置为主要负责人 |
|||
* @param id |
|||
* @return |
|||
*/ |
|||
@PostMapping("/setMaster/{id}") |
|||
@SysLog(module = SystemModule.BASE, title = "区域负责人", biz = BizType.UPDATE) |
|||
@PreAuthorize("hasRole('bms:regionUser:update')") |
|||
public R<?> updateById(@PathVariable("id")Long id){ |
|||
bmsRegionUserService.setMaster(id); |
|||
return R.ok(); |
|||
} |
|||
|
|||
/** |
|||
* 取消主要负责人 |
|||
* @param id |
|||
* @return |
|||
*/ |
|||
@PostMapping("/cancelMaster/{id}") |
|||
@SysLog(module = SystemModule.BASE, title = "区域负责人", biz = BizType.UPDATE) |
|||
@PreAuthorize("hasRole('bms:regionUser:update')") |
|||
public R<?> cancelMaster(@PathVariable("id")Long id){ |
|||
BmsRegionUser regionUser = new BmsRegionUser(); |
|||
regionUser.setId(id); |
|||
regionUser.setMasterFlag(0); |
|||
bmsRegionUserService.updateById(regionUser); |
|||
return R.ok(); |
|||
} |
|||
|
|||
/** |
|||
* 删除 |
|||
* @param ids |
|||
* @return |
|||
*/ |
|||
@DeleteMapping("/deleteById/{ids}") |
|||
@SysLog(module = SystemModule.BASE, title = "区域负责人", biz = BizType.DELETE) |
|||
@PreAuthorize("hasRole('bms:regionUser:delete')") |
|||
public R<?> deleteById(@PathVariable String ids){ |
|||
List<Long> idsLong = StringUtils.splitIdLong(ids); |
|||
bmsRegionUserService.removeByIds(idsLong); |
|||
return R.ok(); |
|||
} |
|||
|
|||
} |
|||
|
@ -0,0 +1,98 @@ |
|||
package com.qs.serve.modules.bms.entity; |
|||
|
|||
import java.time.LocalDateTime; |
|||
import java.io.Serializable; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.*; |
|||
import com.fasterxml.jackson.annotation.JsonFormat; |
|||
import com.fasterxml.jackson.annotation.JsonIgnore; |
|||
import com.fasterxml.jackson.annotation.JsonProperty; |
|||
import lombok.Data; |
|||
import org.hibernate.validator.constraints.Length; |
|||
import org.springframework.format.annotation.DateTimeFormat; |
|||
|
|||
import javax.validation.constraints.NotNull; |
|||
import javax.validation.constraints.NotBlank; |
|||
|
|||
/** |
|||
* 区域负责人 实体类 |
|||
* @author YenHex |
|||
* @since 2022-11-02 |
|||
*/ |
|||
@Data |
|||
@TableName("bms_region_user") |
|||
public class BmsRegionUser implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
/** id */ |
|||
@TableId(type = IdType.AUTO) |
|||
private Long id; |
|||
|
|||
/** 类型:0=销售区域;1=行政区域 */ |
|||
@NotNull(message = "类型:0=销售区域;1=行政区域不能为空") |
|||
private Integer type; |
|||
|
|||
/** 区域id */ |
|||
@NotBlank(message = "区域id不能为空") |
|||
@Length(max = 32,message = "区域id长度不能超过32字") |
|||
private String regionId; |
|||
|
|||
/** 用户id */ |
|||
@NotBlank(message = "用户id不能为空") |
|||
@Length(max = 32,message = "用户id长度不能超过32字") |
|||
private String userId; |
|||
|
|||
/** 主要负责人 */ |
|||
@NotNull(message = "主要负责人不能为空") |
|||
private Integer masterFlag; |
|||
|
|||
/** 创建时间 */ |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") |
|||
@TableField(fill = FieldFill.INSERT) |
|||
private LocalDateTime createTime; |
|||
|
|||
/** 创建人 */ |
|||
@TableField(fill = FieldFill.INSERT) |
|||
private String createBy; |
|||
|
|||
/** 更新时间 */ |
|||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
|||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") |
|||
@TableField(fill = FieldFill.UPDATE) |
|||
private LocalDateTime updateTime; |
|||
|
|||
/** 更新人 */ |
|||
@TableField(fill = FieldFill.UPDATE) |
|||
private String updateBy; |
|||
|
|||
/** 租户id */ |
|||
@JsonIgnore |
|||
@JsonProperty |
|||
private String tenantId; |
|||
|
|||
/** 删除标识 */ |
|||
@JsonIgnore |
|||
@JsonProperty |
|||
private Boolean delFlag; |
|||
|
|||
|
|||
/** 区域名称 */ |
|||
@TableField(exist = false) |
|||
private String regionName; |
|||
|
|||
/** 区域编码 */ |
|||
@TableField(exist = false) |
|||
private String regionCode; |
|||
|
|||
/** 用户名称 */ |
|||
@TableField(exist = false) |
|||
private String userName; |
|||
|
|||
/** 用户编码 */ |
|||
@TableField(exist = false) |
|||
private String userCode; |
|||
|
|||
} |
|||
|
@ -0,0 +1,40 @@ |
|||
package com.qs.serve.modules.bms.entity.bo; |
|||
|
|||
import com.baomidou.mybatisplus.annotation.IdType; |
|||
import com.baomidou.mybatisplus.annotation.TableId; |
|||
import lombok.Data; |
|||
import org.hibernate.validator.constraints.Length; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import javax.validation.constraints.NotNull; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2022/11/2 |
|||
*/ |
|||
@Data |
|||
public class BmsRegionUserBo { |
|||
|
|||
/** id */ |
|||
@TableId(type = IdType.AUTO) |
|||
private Long id; |
|||
|
|||
/** 类型:0=销售区域;1=行政区域 */ |
|||
@NotNull(message = "类型:0=销售区域;1=行政区域不能为空") |
|||
private Integer type; |
|||
|
|||
/** 区域id */ |
|||
@NotBlank(message = "区域id不能为空") |
|||
@Length(max = 32,message = "区域id长度不能超过32字") |
|||
private String regionId; |
|||
|
|||
/** 用户id */ |
|||
@NotBlank(message = "用户id不能为空") |
|||
@Length(max = 32,message = "用户id长度不能超过32字") |
|||
private String userId; |
|||
|
|||
/** 主要负责人 */ |
|||
@NotNull(message = "主要负责人不能为空") |
|||
private Integer masterFlag; |
|||
|
|||
} |
@ -0,0 +1,28 @@ |
|||
package com.qs.serve.modules.bms.entity.bo; |
|||
|
|||
import lombok.Data; |
|||
import org.hibernate.validator.constraints.Length; |
|||
|
|||
import javax.validation.constraints.NotBlank; |
|||
import javax.validation.constraints.NotNull; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* @author YenHex |
|||
* @since 2022/11/2 |
|||
*/ |
|||
@Data |
|||
public class BmsRegionUserSaveBo { |
|||
|
|||
/** 区域id列表 */ |
|||
private List<String> regionIds; |
|||
|
|||
/** 类型:0=销售区域;1=行政区域 */ |
|||
@NotNull(message = "类型:0=销售区域;1=行政区域不能为空") |
|||
private Integer type; |
|||
|
|||
/** 用户id列表 */ |
|||
@NotNull(message = "用户id不能为空") |
|||
private List<String> userIds; |
|||
|
|||
} |
@ -0,0 +1,14 @@ |
|||
package com.qs.serve.modules.bms.mapper; |
|||
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
|||
import com.qs.serve.modules.bms.entity.BmsRegionUser; |
|||
|
|||
/** |
|||
* 区域负责人 Mapper |
|||
* @author YenHex |
|||
* @date 2022-11-02 |
|||
*/ |
|||
public interface BmsRegionUserMapper extends BaseMapper<BmsRegionUser> { |
|||
|
|||
} |
|||
|
@ -0,0 +1,22 @@ |
|||
package com.qs.serve.modules.bms.service; |
|||
|
|||
import com.baomidou.mybatisplus.extension.service.IService; |
|||
import com.qs.serve.modules.bms.entity.BmsRegionUser; |
|||
|
|||
/** |
|||
* 区域负责人 服务接口 |
|||
* @author YenHex |
|||
* @date 2022-11-02 |
|||
*/ |
|||
public interface BmsRegionUserService extends IService<BmsRegionUser> { |
|||
|
|||
BmsRegionUser getByParam(Integer type,String regionId,String userId); |
|||
|
|||
/** |
|||
* 设置主要负责人 |
|||
* @param id |
|||
*/ |
|||
void setMaster(Long id); |
|||
|
|||
} |
|||
|
@ -0,0 +1,46 @@ |
|||
package com.qs.serve.modules.bms.service.impl; |
|||
|
|||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|||
import lombok.AllArgsConstructor; |
|||
import lombok.extern.slf4j.Slf4j; |
|||
import org.springframework.stereotype.Service; |
|||
import com.qs.serve.modules.bms.entity.BmsRegionUser; |
|||
import com.qs.serve.modules.bms.service.BmsRegionUserService; |
|||
import com.qs.serve.modules.bms.mapper.BmsRegionUserMapper; |
|||
|
|||
/** |
|||
* 区域负责人 服务实现类 |
|||
* @author YenHex |
|||
* @since 2022-11-02 |
|||
*/ |
|||
@Slf4j |
|||
@Service |
|||
@AllArgsConstructor |
|||
public class BmsRegionUserServiceImpl extends ServiceImpl<BmsRegionUserMapper,BmsRegionUser> implements BmsRegionUserService { |
|||
|
|||
@Override |
|||
public BmsRegionUser getByParam(Integer type, String regionId, String userId) { |
|||
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>(); |
|||
lqw.eq(BmsRegionUser::getRegionId,regionId); |
|||
lqw.eq(BmsRegionUser::getType,type); |
|||
lqw.eq(BmsRegionUser::getUserId,userId); |
|||
return this.getOne(lqw,false); |
|||
} |
|||
|
|||
@Override |
|||
public void setMaster(Long id) { |
|||
BmsRegionUser regionUser = this.getById(id); |
|||
LambdaQueryWrapper<BmsRegionUser> lqw = new LambdaQueryWrapper<>(); |
|||
lqw.eq(BmsRegionUser::getRegionId,regionUser.getRegionId()); |
|||
lqw.eq(BmsRegionUser::getType,regionUser.getType()); |
|||
lqw.ne(BmsRegionUser::getUserId,regionUser.getUserId()); |
|||
BmsRegionUser param = new BmsRegionUser(); |
|||
param.setMasterFlag(0); |
|||
this.update(regionUser,lqw); |
|||
regionUser.setMasterFlag(0); |
|||
this.updateById(regionUser); |
|||
} |
|||
|
|||
} |
|||
|
Loading…
Reference in new issue