Commit bb915ade authored by liuyang's avatar liuyang

update

parent 19251232
......@@ -8,20 +8,26 @@ import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.qkdata.biz.common.BizConstants;
import com.qkdata.biz.enums.AccountStatusEnum;
import com.qkdata.biz.enums.AccountTypeEnum;
import com.qkdata.biz.management.vo.MemberInfoModel;
import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.entity.SysUserExtPO;
import com.qkdata.biz.sys.entity.SysUserPO;
import com.qkdata.biz.sys.mapper.SysUserExtMapper;
import com.qkdata.biz.sys.service.SysRoleService;
import com.qkdata.biz.sys.service.SysUserRoleService;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.management.vo.MemberListModel;
import com.qkdata.biz.management.vo.QueryMemberModel;
import com.qkdata.biz.sys.vo.SysRoleModel;
import com.qkdata.biz.sys.vo.SysUserModel;
import com.qkdata.biz.web.vo.ModifyMemberInfoModel;
import com.qkdata.common.base.entity.BasePO;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.constants.Constants;
import com.qkdata.common.util.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -37,6 +43,8 @@ public class MemberService {
private SysUserExtMapper sysUserExtMapper;
@Autowired
private SysRoleService sysRoleService;
@Autowired
private SysUserRoleService sysUserRoleService;
public PageResult<MemberListModel> queryPage(QueryMemberModel param) {
Page page = new Page(param.getPageIndex(),param.getPageSize());
......@@ -123,4 +131,71 @@ public class MemberService {
int count = sysUserExtMapper.selectCount(Wrappers.<SysUserExtPO>lambdaQuery().eq(SysUserExtPO::getEnterpriseId,enterpriseId));
return count;
}
/**
* 删除企业成员
* @param userId
*/
@Transactional
public void remove(Long userId) {
sysUserExtMapper.update(null,Wrappers.<SysUserExtPO>lambdaUpdate()
.set(SysUserExtPO::getType,AccountTypeEnum.USER)
.set(SysUserExtPO::getEnterpriseId,null)
.set(SysUserExtPO::getVipStartTime,null)
.set(SysUserExtPO::getVipEndTime,null)
.eq(SysUserExtPO::getUserId,userId));
sysUserRoleService.saveOrUpdateUserRole(userId,Lists.newArrayList(5L));
}
public MemberInfoModel getByUserId(Long userId){
return getByUserId(userId,false);
}
public MemberInfoModel getByUserId(Long userId, boolean withRole) {
MemberInfoModel model = sysUserExtMapper.getByUserId(userId);
if (withRole){
List<SysRoleModel> roleList = sysRoleService.getUserRoles(model.getId());
List<String> roleCodeList = roleList.stream().map(SysRoleModel::getCode).collect(Collectors.toList());
model.setRoleCodeList(roleCodeList);
}
return model;
}
@Transactional
public void updateInfo(ModifyMemberInfoModel model) {
MemberInfoModel memberInfo = getByUserId(model.getId(),true);
if (memberInfo == null){
throw new BusinessException("请求错误,数据不存在");
}
if (!memberInfo.getUsername().equals(model.getUsername())){
//修改手机号
int count = sysUserService.count(Wrappers.<SysUserPO>lambdaQuery().eq(SysUserPO::getUsername,model.getUsername())
.ne(BasePO::getId, model.getId()));
if (count > 0){
throw new BusinessException("手机号已存在");
}else {
sysUserService.update(Wrappers.<SysUserPO>lambdaUpdate().set(SysUserPO::getUsername,model.getUsername()).eq(BasePO::getId,model.getId()));
}
}
//修改姓名
sysUserExtMapper.update(null,Wrappers.<SysUserExtPO>lambdaUpdate().set(SysUserExtPO::getName,model.getName()).eq(SysUserExtPO::getUserId,model.getId()));
//修改角色
List<String> roles = memberInfo.getRoleCodeList();
boolean isManager = false;
for (String roleCode : roles){
if (roleCode.equals(BizConstants.ROLE_ENTERPRISE_ADMIN)){
isManager = true;
break;
}
}
if (isManager != model.isManager()){
List<Long> roleIds = Lists.newArrayList();
if (model.isManager()){
roleIds.add(3L);
}else {
roleIds.add(5L);
}
sysUserRoleService.saveOrUpdateUserRole(model.getId(),roleIds);
}
}
}
......@@ -64,28 +64,17 @@ public class OrgSurplusService extends ServiceImpl<OrgSurplusMapper, OrgSurplusP
return PageResult.<OrgCourseSurplusModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
/**
* 减少企业购买的余额
* @param po
*/
public void subtractCount(OrgSurplusPO po) {
OrgSurplusPO dbPo = null;
if (po.getProductType() == ProductTypeEnum.ENTERPRISE_VIP){
dbPo = getOne(Wrappers.<OrgSurplusPO>lambdaQuery().eq(OrgSurplusPO::getOrgId,po.getOrgId()).eq(OrgSurplusPO::getProductType,po.getProductType()));
}else if (po.getProductType() == ProductTypeEnum.ENTERPRISE_COURSE_BUY){
dbPo = getOne(Wrappers.<OrgSurplusPO>lambdaQuery().eq(OrgSurplusPO::getOrgId,po.getOrgId()).eq(OrgSurplusPO::getCourseId,po.getCourseId()).eq(OrgSurplusPO::getProductType,po.getProductType()));
}
if (dbPo == null){
throw new BusinessException("请求错误,数据不存在");
}else {
int dbCount = dbPo.getCount();
int newCount = dbCount - po.getCount();
if (newCount < 0){
throw new BusinessException("企业余额不足,不能领用");
}
dbPo.setCount(newCount);
updateById(dbPo);
public OrgSurplusPO getVIP(Long orgId) {
return getOne(Wrappers.<OrgSurplusPO>lambdaQuery()
.eq(OrgSurplusPO::getOrgId,orgId)
.eq(OrgSurplusPO::getProductType,ProductTypeEnum.ENTERPRISE_VIP));
}
public OrgSurplusPO getCourseVIP(Long orgId, Long courseId) {
return getOne(Wrappers.<OrgSurplusPO>lambdaQuery()
.eq(OrgSurplusPO::getOrgId,orgId)
.eq(OrgSurplusPO::getCourseId,courseId)
.eq(OrgSurplusPO::getProductType,ProductTypeEnum.ENTERPRISE_COURSE_BUY));
}
}
\ No newline at end of file
package com.qkdata.biz.management.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists;
import com.qkdata.biz.enums.ProductTypeEnum;
import com.qkdata.biz.management.entity.OrgSurplusPO;
import com.qkdata.biz.management.entity.OrgUserReceiveRecordPO;
import com.qkdata.biz.management.mapper.OrgUserReceiveRecordMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qkdata.biz.sys.service.SysUserService;
import com.qkdata.biz.web.vo.EnterpriseAssignVipModel;
import com.qkdata.biz.web.vo.OrgUserReceiveRecordModel;
import com.qkdata.biz.web.vo.QueryReceiveHistoryModel;
import com.qkdata.common.base.enums.CodeEnum;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageResult;
import com.qkdata.common.util.UserContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -23,9 +31,55 @@ import java.util.List;
@Service
public class OrgUserReceiveRecordService extends ServiceImpl<OrgUserReceiveRecordMapper, OrgUserReceiveRecordPO> {
@Autowired
private SysUserService sysUserService;
@Autowired
private OrgSurplusService orgSurplusService;
public PageResult<OrgUserReceiveRecordModel> queryPageList(QueryReceiveHistoryModel model) {
Page page = new Page(model.getPageIndex(),model.getPageSize());
List<OrgUserReceiveRecordModel> list = baseMapper.queryPageList(page,model);
return PageResult.<OrgUserReceiveRecordModel>builder().code(CodeEnum.SUCCESS.getCode()).count(page.getTotal()).data(list).build();
}
/**
* 企业分配VIP
* @param models
*/
public void assignVip(List<EnterpriseAssignVipModel> models) {
Long orgId = sysUserService.getUserEnterpriesId(UserContext.getUserId());
List<OrgUserReceiveRecordPO> poList = Lists.newArrayList();
for (EnterpriseAssignVipModel model : models){
OrgUserReceiveRecordPO po = new OrgUserReceiveRecordPO();
po.setOrgId(orgId);
po.setUserId(model.getUserId());
po.setProductType(model.getProductType());
po.setCount(model.getCount());
po.setCourseId(model.getCourseId());
poList.add(po);
}
saveBatch(poList);
}
public synchronized void validateAndSave(List<OrgUserReceiveRecordPO> poList){
for (OrgUserReceiveRecordPO po : poList){
OrgSurplusPO orgSurplusPO = null;
if (po.getProductType() == ProductTypeEnum.ENTERPRISE_VIP){
//查询企业剩除数量
orgSurplusPO = orgSurplusService.getVIP(po.getOrgId());
}else if (po.getProductType() == ProductTypeEnum.ENTERPRISE_COURSE_BUY){
orgSurplusPO = orgSurplusService.getCourseVIP(po.getOrgId(),po.getCourseId());
}
if (orgSurplusPO != null){
if (orgSurplusPO.getCount() >= po.getCount()){
orgSurplusPO.setCount(orgSurplusPO.getCount() - po.getCount());
//更新剩余数量
orgSurplusService.updateById(orgSurplusPO);
//保存记录
save(po);
}else {
throw new BusinessException("已超出剩余数量");
}
}
}
}
}
\ No newline at end of file
......@@ -25,4 +25,6 @@ public interface SysUserExtMapper extends BaseMapper<SysUserExtPO> {
List<MemberListModel> queryPage(Page page, @Param("p") QueryMemberModel param);
MemberInfoModel getByUsername(String username);
MemberInfoModel getByUserId(Long userId);
}
......@@ -251,19 +251,13 @@ public class SysUserService extends BaseServiceImpl<SysUserMapper, SysUserPO> {
throw new BusinessException("您的企业会员生效中,请过期后再领取");
}
}
//减少企业余额
OrgSurplusPO po = new OrgSurplusPO();
po.setOrgId(userInfo.getEnterpriseId());
po.setProductType(ProductTypeEnum.ENTERPRISE_VIP);
po.setCount(1);
orgSurplusService.subtractCount(po);
//添加领用记录
OrgUserReceiveRecordPO orgUserReceiveRecordPO = new OrgUserReceiveRecordPO();
orgUserReceiveRecordPO.setUserId(userInfo.getId());
orgUserReceiveRecordPO.setOrgId(userInfo.getEnterpriseId());
orgUserReceiveRecordPO.setCount(1);
orgUserReceiveRecordPO.setProductType(ProductTypeEnum.ENTERPRISE_VIP);
orgUserReceiveRecordService.save(orgUserReceiveRecordPO);
orgUserReceiveRecordService.validateAndSave(Lists.newArrayList(orgUserReceiveRecordPO));
}
......@@ -286,13 +280,6 @@ public class SysUserService extends BaseServiceImpl<SysUserMapper, SysUserPO> {
throw new BusinessException("您已领取过该课程,并在有效期内,不可重覆领取");
}
}
//减少企业余额
OrgSurplusPO po = new OrgSurplusPO();
po.setOrgId(userInfo.getEnterpriseId());
po.setCourseId(courseId);
po.setProductType(ProductTypeEnum.ENTERPRISE_COURSE_BUY);
po.setCount(1);
orgSurplusService.subtractCount(po);
//添加领用记录
OrgUserReceiveRecordPO orgUserReceiveRecordPO = new OrgUserReceiveRecordPO();
orgUserReceiveRecordPO.setUserId(userInfo.getId());
......@@ -300,6 +287,6 @@ public class SysUserService extends BaseServiceImpl<SysUserMapper, SysUserPO> {
orgUserReceiveRecordPO.setCourseId(courseId);
orgUserReceiveRecordPO.setCount(1);
orgUserReceiveRecordPO.setProductType(ProductTypeEnum.ENTERPRISE_COURSE_BUY);
orgUserReceiveRecordService.save(orgUserReceiveRecordPO);
orgUserReceiveRecordService.validateAndSave(Lists.newArrayList(orgUserReceiveRecordPO));
}
}
......@@ -94,7 +94,8 @@ public class MyEnterpriseController {
model.setOrgId(orgId);
return orgSurplusService.queryCourseSurplusPageList(model);
}
@ApiOperation("领取会员")
@ApiOperation("企业成员领取会员")
@GetMapping("/receiveVIP")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
@SysLog("领取会员")
......@@ -102,7 +103,7 @@ public class MyEnterpriseController {
userService.receiveOrgVIP();
return Result.succeed("ok");
}
@ApiOperation("领取企业购买课程")
@ApiOperation("企业成员领取企业购买课程")
@GetMapping("/receiveCourse/{courseId}")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
@SysLog("领取企业购买课程")
......@@ -110,12 +111,22 @@ public class MyEnterpriseController {
userService.receiveOrgCourse(courseId);
return Result.succeed("ok");
}
@ApiOperation("领取会员历史记录列表")
@PostMapping("/history/receiveVIP")
@ApiOperation("我的领取会员历史记录列表")
@PostMapping("/myHistory/receiveVIP")
@RequiresRoles(value = {BizConstants.ROLE_USER,BizConstants.ROLE_ENTERPRISE_ADMIN},logical = Logical.OR)
@SysLog("领取会员历史记录列表")
@SysLog("我的领取会员历史记录列表")
public PageResult<OrgUserReceiveRecordModel> receiveVIPHistory(@RequestBody QueryReceiveHistoryModel model){
model.setUserId(UserContext.getUserId());
model.setOrgId(null);
return orgUserReceiveRecordService.queryPageList(model);
}
@ApiOperation("企业购中领取会员历史记录列表")
@PostMapping("/history/receiveVIP")
@RequiresRoles(value = {BizConstants.ROLE_ENTERPRISE_ADMIN})
@SysLog("企业购中领取会员历史记录列表")
public PageResult<OrgUserReceiveRecordModel> orgReceiveVIPHistory(@RequestBody QueryReceiveHistoryModel model){
model.setUserId(null);
model.setOrgId(userService.getUserEnterpriesId(UserContext.getUserId()));
return orgUserReceiveRecordService.queryPageList(model);
}
......@@ -133,17 +144,16 @@ public class MyEnterpriseController {
@RequiresRoles(value = BizConstants.ROLE_ENTERPRISE_ADMIN)
@SysLog("企业成员列表")
public PageResult<MemberListModel> memberList(@RequestBody QueryMemberModel model){
if (model.getOrgId() == null){
throw new BusinessException("请求参数错误,企业ID不能为空");
}
Long orgId = userService.getUserEnterpriesId(UserContext.getUserId());
model.setOrgId(orgId);
return memberService.queryPage(model);
}
@ApiOperation("获取企业成员详情")
@GetMapping("/memeber/detail")
@RequiresRoles(value = BizConstants.ROLE_ENTERPRISE_ADMIN)
@SysLog("获取企业成员详情")
public Result<MemberInfoModel> memberDetail(@RequestParam String username){
MemberInfoModel memberInfo = memberService.getByUsername(username,true);
public Result<MemberInfoModel> memberDetail(@RequestParam Long userId){
MemberInfoModel memberInfo = memberService.getByUserId(userId,true);
return Result.succeed(memberInfo);
}
@ApiOperation("企业成员领取记录")
......@@ -218,8 +228,29 @@ public class MyEnterpriseController {
@RequiresRoles(value = {BizConstants.ROLE_ENTERPRISE_ADMIN})
@SysLog("删除成员")
public Result<String> deleteMember(@RequestParam Long userId){
//todo
Long currentUserId = UserContext.getUserId();
if (currentUserId.longValue() == userId.longValue()){
throw new BusinessException("不能删除自己");
}
memberService.remove(userId);
return Result.succeed("ok");
}
@ApiOperation("修改成员信息")
@PostMapping("/member/modify")
@RequiresRoles(value = {BizConstants.ROLE_ENTERPRISE_ADMIN})
@SysLog("修改成员信息")
public Result<String> modifyMember(@RequestBody @Validated ModifyMemberInfoModel model){
memberService.updateInfo(model);
return Result.succeed("ok");
}
@ApiOperation("分配企业会员,分配课程")
@PostMapping("/assign/vip")
@RequiresRoles(value = {BizConstants.ROLE_ENTERPRISE_ADMIN})
@SysLog("分配企业会员")
public Result<String> assignVip(@RequestBody List<EnterpriseAssignVipModel> models){
orgUserReceiveRecordService.assignVip(models);
return Result.succeed("ok");
}
}
package com.qkdata.biz.web.vo;
import com.qkdata.biz.enums.ProductTypeEnum;
import lombok.Data;
@Data
public class EnterpriseAssignVipModel {
private Long userId;
private int count = 1;
private ProductTypeEnum productType;
private Long courseId;
}
package com.qkdata.biz.web.vo;
import com.qkdata.common.constants.ValidatorPattern;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
@Data
public class ModifyMemberInfoModel {
@NotNull(message = "ID不能为空")
private Long id;
private String name;
@NotBlank(message = "电话不能为空")
@Pattern(regexp = ValidatorPattern.MOBILE_PATTERN,message = "手机号格式不正确")
private String username;
private boolean manager;
}
......@@ -10,4 +10,5 @@ public class QueryReceiveHistoryModel {
private int pageSize = Constants.DEFAULT_PAGE_SIZE;
private Long userId;
private ProductTypeEnum productType;
private Long orgId;
}
......@@ -15,5 +15,8 @@
c.is_del = 0
and c.allow='ALL'
and c.status = 'UP'
<if test="p.userId != null and p.userId != ''">
and f.user_id = #{p.userId}
</if>
</select>
</mapper>
......@@ -49,9 +49,31 @@
INNER JOIN user_ext e on u.id = e.user_id
LEFT JOIN organization o on e.enterprise_id = o.id
WHERE u.is_del = 0
<if test="username != null and username != ''">
and u.username like concat('%',#{username},'%')
</if>
and u.username = #{username}
</select>
<select id="getByUserId" resultType="com.qkdata.biz.management.vo.MemberInfoModel">
SELECT u.id,
u.username,
u.nick_name,
u.last_login_time,
u.activate_time,
u.create_time,
u.`status`,
e.`name`,
e.sex,
e.age,
e.avatar_url,
e.type,
e.enterprise_id,
o.`name` enterprise_name,
e.vip_start_time,
e.vip_end_time
FROM sys_user u
INNER JOIN user_ext e on u.id = e.user_id
LEFT JOIN organization o on e.enterprise_id = o.id
WHERE u.is_del = 0
and u.id = #{userId}
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment