package com.doumee.service.business.impl; 
 | 
  
 | 
import com.doumee.dao.business.dao.MemberMapper; 
 | 
import com.doumee.dao.business.dao.UserActionMapper; 
 | 
import com.doumee.dao.business.model.UserAction; 
 | 
import com.doumee.service.business.third.model.LoginUserInfo; 
 | 
import com.doumee.service.business.third.model.PageData; 
 | 
import com.doumee.service.business.third.model.PageWrap; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.Utils; 
 | 
import com.doumee.dao.business.join.UserActionJoinMapper; 
 | 
import com.doumee.dao.business.model.Company; 
 | 
import com.doumee.dao.business.model.Member; 
 | 
import com.doumee.dao.system.model.SystemUser; 
 | 
import com.doumee.service.business.UserActionService; 
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import com.github.yulichang.wrapper.MPJLambdaWrapper; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 人员操作记录日志Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2023/12/14 13:57 
 | 
 */ 
 | 
@Service 
 | 
public class UserActionServiceImpl implements UserActionService { 
 | 
  
 | 
    @Autowired 
 | 
    private UserActionMapper userActionMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private UserActionJoinMapper userActionJoinMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(UserAction userAction) { 
 | 
        userActionMapper.insert(userAction); 
 | 
        return userAction.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        userActionMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(UserAction userAction) { 
 | 
        UpdateWrapper<UserAction> deleteWrapper = new UpdateWrapper<>(userAction); 
 | 
        userActionMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        userActionMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(UserAction userAction) { 
 | 
        userActionMapper.updateById(userAction); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<UserAction> userActions) { 
 | 
        if (CollectionUtils.isEmpty(userActions)) { 
 | 
            return; 
 | 
        } 
 | 
        for (UserAction userAction: userActions) { 
 | 
            this.updateById(userAction); 
 | 
        } 
 | 
    } 
 | 
    public static void saveUserActionBiz(LoginUserInfo user, Integer bizId, Constants.UserActionType type, UserActionMapper userActionMapper, Date date, String[] params, String modelInfo) { 
 | 
        String info = type.getInfo(); 
 | 
        if(params!=null){ 
 | 
            for (int i = 0; i < params.length; i++) { 
 | 
                info = info.replace("${param"+(i+1)+"}",params[i]); 
 | 
            } 
 | 
        } 
 | 
       UserAction userAction=new UserAction(); 
 | 
        userAction.setIsdeleted(Constants.ZERO); 
 | 
        userAction.setCreateDate(date); 
 | 
        userAction.setCreator(user.getId()); 
 | 
        userAction.setBeforeStatus(Constants.ZERO); 
 | 
        userAction.setType(type.getKey()); 
 | 
        userAction.setContent(modelInfo); 
 | 
        userAction.setRemark(info); 
 | 
        userAction.setMemberId(bizId+""); 
 | 
        userActionMapper.insert(userAction); 
 | 
    } 
 | 
    @Override 
 | 
    public UserAction findById(Integer id) { 
 | 
        return userActionMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public UserAction findOne(UserAction userAction) { 
 | 
        QueryWrapper<UserAction> wrapper = new QueryWrapper<>(userAction); 
 | 
        return userActionMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<UserAction> findList(UserAction userAction) { 
 | 
        QueryWrapper<UserAction> wrapper = new QueryWrapper<>(userAction); 
 | 
        return userActionMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<UserAction> findPage(PageWrap<UserAction> pageWrap) { 
 | 
        IPage<UserAction> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        MPJLambdaWrapper<UserAction> queryWrapper = new MPJLambdaWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
       UserAction queryModel =  pageWrap.getModel(); 
 | 
        queryWrapper.selectAll(UserAction.class) 
 | 
                .leftJoin(Member.class,Member::getId,UserAction::getMemberId) 
 | 
                .leftJoin(Company.class,Company::getId,Member::getCompanyId) 
 | 
                .leftJoin(SystemUser.class,SystemUser::getId,UserAction::getCreator) 
 | 
                .selectAs(SystemUser::getRealname,UserAction::getCreateName) 
 | 
                .selectAs(Member::getName,UserAction::getMemberName) 
 | 
                .selectAs(Company::getName,UserAction::getCompanyName) 
 | 
                .selectAs(Member::getType,UserAction::getMemberType) 
 | 
                .selectAs(Member::getPhone,UserAction::getMobile) 
 | 
                .select(" ( SELECT v.company_name FROM visits v WHERE v.member_id = t.member_id ORDER BY create_date DESC limit 1 ) as visitCompanyName ") 
 | 
                .like(StringUtils.isNotBlank(queryModel.getCreateName()),SystemUser::getRealname,queryModel.getCreateName()) 
 | 
                .like(StringUtils.isNotBlank(queryModel.getMemberName()),Member::getName,queryModel.getMemberName()) 
 | 
                .like(StringUtils.isNotBlank(queryModel.getMobile()),Member::getPhone,queryModel.getMobile()) 
 | 
                .like(StringUtils.isNotBlank(queryModel.getRemark()),Member::getPhone,queryModel.getRemark()) 
 | 
                .and(StringUtils.isNotBlank(queryModel.getCompanyName()), 
 | 
                        p-> p.like(Company::getName, queryModel.getCompanyName()) 
 | 
                                .or() 
 | 
                                .exists(" select 1 from visits v where  v.member_id = t.member_id and v.company_name like '%"+pageWrap.getModel().getCompanyName()+"%' ")) 
 | 
                .eq(!Objects.isNull(queryModel.getMemberType()),Member::getType,queryModel.getMemberType()) 
 | 
                .eq(!Objects.isNull(queryModel.getBeforeStatus()),UserAction::getBeforeStatus,queryModel.getBeforeStatus()) 
 | 
                .eq(!Objects.isNull(queryModel.getType()),UserAction::getType,queryModel.getType()) 
 | 
                .ge(queryModel.getObjType() !=null &&queryModel.getObjType() == Constants.ZERO,UserAction::getType,Constants.UserActionType.CANCEL_FREEZE.getKey()) 
 | 
                .le(queryModel.getObjType() !=null &&queryModel.getObjType() == Constants.ZERO,UserAction::getType,Constants.UserActionType.NOT_HEAD.getKey()) 
 | 
                .ge(queryModel.getObjType() !=null &&queryModel.getObjType() == Constants.ONE,UserAction::getType,Constants.UserActionType.MEET_BOOK_DEL.getKey()) 
 | 
                .le(queryModel.getObjType() !=null &&queryModel.getObjType() == Constants.ONE,UserAction::getType,Constants.UserActionType.HIDEN_DANGER_DEL.getKey()) 
 | 
                .orderByDesc(UserAction::getCreateDate) 
 | 
        ; 
 | 
        IPage<UserAction> result =  userActionJoinMapper.selectJoinPage(page,UserAction.class,queryWrapper); 
 | 
        if(result!=null &&result.getRecords()!=null){ 
 | 
            for(UserAction model :result.getRecords()){ 
 | 
                model.setTypeName(Constants.UserActionType.getName(model.getType())); 
 | 
            } 
 | 
        } 
 | 
        return PageData.from(result); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(UserAction userAction) { 
 | 
        QueryWrapper<UserAction> wrapper = new QueryWrapper<>(userAction); 
 | 
        return userActionMapper.selectCount(wrapper); 
 | 
    } 
 | 
} 
 |