package com.panzhihua.service_community.service.impl;
|
|
import static java.util.Objects.isNull;
|
import static java.util.Objects.nonNull;
|
import static org.apache.commons.lang3.StringUtils.isNotBlank;
|
|
import java.text.SimpleDateFormat;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.panzhihua.common.exceptions.ServiceException;
|
import com.panzhihua.common.model.dtos.community.convenient.ConvenientMerchantDTO;
|
import com.panzhihua.common.model.dtos.community.convenient.DisableOrEnableConvenientMerchantDTO;
|
import com.panzhihua.common.model.dtos.community.convenient.PageClassifyMerchantDTO;
|
import com.panzhihua.common.model.dtos.community.convenient.PageConvenientMerchantDTO;
|
import com.panzhihua.common.model.dtos.community.convenient.PagePopularMerchantDTO;
|
import com.panzhihua.common.model.dtos.community.convenient.ResetPasswordConvenientMerchantDTO;
|
import com.panzhihua.common.model.dtos.grid.EventGridMemberPassResetDTO;
|
import com.panzhihua.common.model.vos.LoginUserInfoVO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO;
|
import com.panzhihua.common.service.user.UserService;
|
import com.panzhihua.service_community.dao.ComActDAO;
|
import com.panzhihua.service_community.dao.ConvenientMerchantDAO;
|
import com.panzhihua.service_community.dao.ConvenientServiceCategoryDAO;
|
import com.panzhihua.service_community.model.dos.ComActDO;
|
import com.panzhihua.service_community.model.dos.ConvenientMerchantDO;
|
import com.panzhihua.service_community.model.dos.ConvenientServiceCategoryDO;
|
import com.panzhihua.service_community.service.ConvenientMerchantService;
|
|
/**
|
* @title: ConvenientMerchantServiceImpl
|
* @projectName: 成都呐喊信息技术有限公司-智慧社区项目
|
* @description: 便民服务商家服务实现类
|
* @author: hans
|
* @date: 2021/09/16 16:14
|
*/
|
@Service
|
public class ConvenientMerchantServiceImpl extends ServiceImpl<ConvenientMerchantDAO, ConvenientMerchantDO> implements ConvenientMerchantService {
|
|
@Resource
|
private UserService userService;
|
@Resource
|
private ConvenientServiceCategoryDAO convenientServiceCategoryDAO;
|
@Resource
|
private ComActDAO comActDAO;
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public R addMerchant(ConvenientMerchantDTO convenientMerchantDTO) {
|
ComActDO comActDO = comActDAO.selectById(convenientMerchantDTO.getCommunityId());
|
ConvenientMerchantDO convenientMerchantDO = new ConvenientMerchantDO();
|
BeanUtils.copyProperties(convenientMerchantDTO, convenientMerchantDO);
|
convenientMerchantDO.setUserId(0L);
|
convenientMerchantDO.setCommunityName(comActDO.getName());
|
convenientMerchantDO.setCreatedAt(new Date());
|
int insertResult = this.baseMapper.insert(convenientMerchantDO);
|
if (insertResult > 0) {
|
Long merchantId = convenientMerchantDO.getId();
|
if (nonNull(merchantId)) {
|
//添加服务
|
List<Long> serviceIds = convenientMerchantDTO.getServiceIds();
|
serviceIds.forEach(serviceId -> {
|
ConvenientServiceCategoryDO convenientServiceCategoryDO = convenientServiceCategoryDAO.selectById(serviceId);
|
convenientServiceCategoryDAO.createMerchantServiceRelation(merchantId, serviceId,
|
convenientServiceCategoryDO.getName(), convenientMerchantDTO.getCreatedBy());
|
});
|
}
|
}
|
//添加user
|
R addUserResult = userService.addConvenientMerchantUser(convenientMerchantDTO);
|
if (R.isOk(addUserResult)) {
|
Long merchantUserId = ((Integer) addUserResult.getData()).longValue();
|
convenientMerchantDO.setUserId(merchantUserId);
|
this.baseMapper.updateById(convenientMerchantDO);
|
} else {
|
throw new ServiceException("406", addUserResult.getMsg());
|
}
|
return R.ok();
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public R putMerchant(ConvenientMerchantDTO convenientMerchantDTO) {
|
Long merchantId = convenientMerchantDTO.getId();
|
ConvenientMerchantDO convenientMerchantDO = this.baseMapper.selectById(merchantId);
|
if (isNull(convenientMerchantDO)) {
|
return R.fail("商家不存在");
|
}
|
Long communityId = convenientMerchantDTO.getCommunityId();
|
if (nonNull(communityId)) {
|
ComActDO comActDO = comActDAO.selectById(communityId);
|
convenientMerchantDO.setCommunityName(comActDO.getName());
|
}
|
String account = convenientMerchantDTO.getAccount();
|
if (isNotBlank(account)) {
|
//修改商家绑定账户号
|
R putAccountResult = userService.putUserAccount(convenientMerchantDO.getUserId(), account);
|
if (!R.isOk(putAccountResult)) {
|
return putAccountResult;
|
}
|
}
|
List<Long> serviceIds = convenientMerchantDTO.getServiceIds();
|
if (!serviceIds.isEmpty()) {
|
convenientServiceCategoryDAO.deleteMerchantServiceRelation(merchantId);
|
serviceIds.forEach(serviceId -> {
|
ConvenientServiceCategoryDO convenientServiceCategoryDO = convenientServiceCategoryDAO.selectById(serviceId);
|
convenientServiceCategoryDAO.createMerchantServiceRelation(merchantId, serviceId,
|
convenientServiceCategoryDO.getName(), convenientMerchantDTO.getCreatedBy());
|
});
|
}
|
this.baseMapper.updateById(convenientMerchantDO);
|
return R.ok();
|
}
|
|
@Override
|
public R deleteMerchant(Long merchantId, Long operator) {
|
int result = this.baseMapper.deleteMerchantById(merchantId, operator);
|
if (result > 0) {
|
return R.ok();
|
}
|
return R.fail("删除失败");
|
}
|
|
@Override
|
public R pageMerchant(PageConvenientMerchantDTO pageConvenientMerchantDTO) {
|
Page page = new Page<>();
|
page.setSize(pageConvenientMerchantDTO.getPageSize());
|
page.setCurrent(pageConvenientMerchantDTO.getPageNum());
|
IPage<ConvenientMerchantVO> iPage = this.baseMapper.pageMerchant(page, pageConvenientMerchantDTO);
|
//填充服务范围
|
List<ConvenientMerchantVO> records = iPage.getRecords();
|
if (!records.isEmpty()) {
|
records.forEach(record -> {
|
String serviceScope = convenientServiceCategoryDAO.selectServiceScopeByMerchantId(record.getId());
|
record.setServiceScope(serviceScope);
|
});
|
}
|
return R.ok(iPage);
|
}
|
|
@Override
|
public R getMerchant(Long merchantId) {
|
ConvenientMerchantVO convenientMerchantVO = this.baseMapper.selectMerchantById(merchantId);
|
List<Long> serviceIds = convenientServiceCategoryDAO.selectServiceIdsForMerchant(merchantId);
|
convenientMerchantVO.setServiceIds(serviceIds);
|
return R.ok(convenientMerchantVO);
|
}
|
|
@Override
|
public R disableOrEnableMerchant(DisableOrEnableConvenientMerchantDTO disableOrEnableConvenientMerchantDTO) {
|
R result = userService.disableOrEnableMerchantUsers(disableOrEnableConvenientMerchantDTO);
|
if (R.isOk(result)) {
|
return R.ok();
|
}
|
return R.fail("操作失败");
|
}
|
|
@Override
|
public R resetPasswordMerchant(ResetPasswordConvenientMerchantDTO resetPasswordConvenientMerchantDTO) {
|
EventGridMemberPassResetDTO eventGridMemberPassResetDTO = new EventGridMemberPassResetDTO();
|
eventGridMemberPassResetDTO.setPassword(resetPasswordConvenientMerchantDTO.getPassword());
|
eventGridMemberPassResetDTO.setIds(resetPasswordConvenientMerchantDTO.getIds());
|
return userService.gridMemberPassReset(eventGridMemberPassResetDTO);
|
}
|
|
@Override
|
public R<ConvenientMerchantVO> getUserMerchantInfoByAccount(String account) {
|
try {
|
R<LoginUserInfoVO> loginUserInfoVOR = userService.getUserInfo(account + "_10");
|
LoginUserInfoVO loginUserInfoVO =
|
JSONObject.parseObject(JSONObject.toJSONString(loginUserInfoVOR.getData()), LoginUserInfoVO.class);
|
|
if (isNull(loginUserInfoVO)) {
|
return R.fail(500, "该账号不存在");
|
}
|
ConvenientMerchantDO merchantDO = this.baseMapper.selectOne(new LambdaQueryWrapper<ConvenientMerchantDO>()
|
.eq(ConvenientMerchantDO::getIsDel, false).eq(ConvenientMerchantDO::getUserId, loginUserInfoVO.getUserId()));
|
if (isNull(merchantDO)) {
|
return R.fail(500, "该账号不存在");
|
}
|
ConvenientMerchantVO merchantVO = new ConvenientMerchantVO();
|
BeanUtils.copyProperties(merchantDO, merchantVO);
|
merchantVO.setAccount(account);
|
merchantVO.setAccountStatus(loginUserInfoVO.getStatus());
|
return R.ok(merchantVO);
|
} catch (Exception e) {
|
return R.fail();
|
}
|
}
|
|
@Override
|
public R<ConvenientMerchantVO> getUserConvenientMerchantInfo(Long userId) {
|
ConvenientMerchantDO merchantDO = this.baseMapper.selectOne(new QueryWrapper<ConvenientMerchantDO>()
|
.lambda().eq(ConvenientMerchantDO::getUserId, userId));
|
if (isNull(merchantDO)) {
|
return R.fail("商家不存在");
|
}
|
ConvenientMerchantVO convenientMerchantVO = new ConvenientMerchantVO();
|
BeanUtils.copyProperties(merchantDO, convenientMerchantVO);
|
List<Long> serviceIds = convenientServiceCategoryDAO.selectServiceIdsForMerchant(merchantDO.getId());
|
convenientMerchantVO.setServiceIds(serviceIds);
|
return R.ok(convenientMerchantVO);
|
}
|
|
@Override
|
public R getPopularMerchants(PagePopularMerchantDTO pagePopularMerchantDTO) {
|
Date nowDate = new Date();
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
|
String currentMon = simpleDateFormat.format(nowDate).concat("%");
|
Page page = new Page<>();
|
page.setSize(pagePopularMerchantDTO.getPageSize());
|
page.setCurrent(pagePopularMerchantDTO.getPageNum());
|
IPage<ConvenientMerchantVO> merchantVOList = this.baseMapper.getPopularMerchants(page, pagePopularMerchantDTO.getCommunityId(), currentMon);
|
return R.ok(merchantVOList);
|
}
|
|
@Override
|
public R getClassifyMerchants(PageClassifyMerchantDTO pageClassifyMerchantDTO) {
|
Date nowDate = new Date();
|
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
|
String currentMon = simpleDateFormat.format(nowDate).concat("%");
|
Page page = new Page<>();
|
page.setSize(pageClassifyMerchantDTO.getPageSize());
|
page.setCurrent(pageClassifyMerchantDTO.getPageNum());
|
IPage<ConvenientMerchantVO> merchantVOList = this.baseMapper.getClassifyMerchants(page, pageClassifyMerchantDTO, currentMon);
|
return R.ok(merchantVOList);
|
}
|
}
|