CBin
2023-08-02 533d26dae76cb5e54e84d6105f7aee42dcb9f76b
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -1,15 +1,19 @@
package com.ruoyi.shop.service.impl.shop;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.binarywang.wxpay.exception.WxPayException;
import com.ruoyi.common.core.constant.CacheConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.security.utils.CodeFactoryUtil;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.shop.domain.dto.*;
import com.ruoyi.shop.domain.pojo.shop.*;
import com.ruoyi.shop.domain.pojo.task.ShopFile;
@@ -18,6 +22,10 @@
import com.ruoyi.shop.service.shop.*;
import com.ruoyi.shop.service.task.MemberTaskService;
import com.ruoyi.shop.service.task.ShopFileService;
import com.ruoyi.shop.service.task.ShopTaskService;
import com.ruoyi.shop.util.WechatPayUtils;
import com.ruoyi.shop.util.WxShopUtils;
import com.ruoyi.shop.util.dto.*;
import com.ruoyi.system.api.constant.AppErrorConstant;
import com.ruoyi.system.api.domain.dto.*;
import com.ruoyi.system.api.domain.poji.config.SysTag;
@@ -27,9 +35,11 @@
import com.ruoyi.system.api.domain.vo.*;
import com.ruoyi.system.api.service.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.text.ParseException;
import java.util.*;
import java.util.function.Function;
@@ -98,10 +108,16 @@
    private ShopTransferRecordService shopTransferRecordService;
    @Resource
    private RemoteUserService remoteUserService;
    private RemoteSysStaffService remoteSysStaffService;
    @Resource
    private RemoteSysStaffService remoteSysStaffService;
    private ShopTaskService shopTaskService;
    @Resource
    private RedisService redisService;
    @Resource
    private WechatPayUtils wechatPayUtils;
    /**
     * 获取商户详情
@@ -189,6 +205,12 @@
            //清空归属
            shopRelUserService.deleteByShopId(shop.getShopId());
            shopStaffService.clearShopStaffRelation(shop.getShopId());
            if(!shop.getShopName().equals(mgtEditShopDto.getShopName())){
                MgtMemberShopNameDto mgtMemberShopNameDto = new MgtMemberShopNameDto();
                mgtMemberShopNameDto.setShopId(mgtEditShopDto.getShopId());
                mgtMemberShopNameDto.setShopName(mgtEditShopDto.getShopName());
                remoteMemberService.updateMemberShopName(mgtMemberShopNameDto);
            }
        }else{
            if(shopSame!=null){
                throw new ServiceException(AppErrorConstant.SHOP_DOUBLE);
@@ -199,14 +221,21 @@
            shop.setCreateUserId(mgtEditShopDto.getUserId());
            shop.setFrozenFlag(0);
            shop.setCooperativeFlag(0);
            shop.setAuthFlag(0);
            newShop = true;
        }
        BeanUtils.copyProperties(mgtEditShopDto,shop);
        String shopDetail = shop.getShopDetail();
        if(StringUtils.isNotBlank(shopDetail)){
            byte[] decodedBytes = Base64.getDecoder().decode(shopDetail);
            shopDetail = new String(decodedBytes, StandardCharsets.UTF_8);
            shop.setShopDetail(shopDetail);
        }
        //商户编号
        if(mgtEditShopDto.getShopId()==null){
        /*if(mgtEditShopDto.getShopId()==null){
            String shopNo = CodeFactoryUtil.getShopNo();
            shop.setShopNumber(shopNo);
        }
        }*/
        this.saveOrUpdate(shop);
        //商户标签
        String shopTagIds = mgtEditShopDto.getShopTagIds();
@@ -373,18 +402,56 @@
                 throw new ServiceException(AppErrorConstant.COOPERATION_TIME_ERROR);
            }*/
            shop.setCooperativeFlag(1);
            if(shop.getShopStatus()==2&&shop.getFrozenFlag()==0){
                shop.setShopStatus(1);
            }else if(shop.getShopStatus()==2&&shop.getFrozenFlag()==1){
                shop.setShopStatus(0);
            }
        }else{
            shop.setCooperativeFlag(0);
            shop.setShopStatus(2);
        }
        shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
        shop.setUpdateTime(new Date());
        shop.setUpdateUserId(mgtTerminateCooperationDto.getUserId());
        this.saveOrUpdate(shop);
    }
    /**
     * @description  冻结商户
     * @author  jqs
     * @date    2023/7/15 13:56
     * @param mgtFrozenShopDto
     * @return  void
     */
    @Override
    public void frozenMgtShop(MgtFrozenShopDto mgtFrozenShopDto){
        Shop shop = this.getById(mgtFrozenShopDto.getShopId());
        if(mgtFrozenShopDto.getFrozenFlag()==1){
            shop.setFrozenFlag(1);
        }else{
            shop.setFrozenFlag(0);
        }
        shop.setShopStatus(handelShopStatus(shop.getFrozenFlag(),shop.getCooperativeFlag(),shop.getAuthFlag()));
        this.saveOrUpdate(shop);
    }
    /**
     * @description  处理商户状态
     * @author  jqs
     * @date    2023/7/15 14:09
     * @param
     * @return  Integer
     */
    private Integer handelShopStatus(Integer frozenFlag, Integer cooperativeFlag, Integer authFlag){
        Integer shopStatus = 1;
        if(frozenFlag == 1){
            shopStatus = 0;
            return shopStatus;
        }
        if(authFlag == 0){
            shopStatus = 3;
            return shopStatus;
        }
        if(cooperativeFlag == 0){
            shopStatus = 2;
            return shopStatus;
        }
        return shopStatus;
    }
@@ -495,6 +562,12 @@
        Shop shop = this.getById(shopId);
        //基本信息拷贝
        BeanUtils.copyProperties(shop,mgtShopInfoVo);
        String shopDetail = mgtShopInfoVo.getShopDetail();
        if(StringUtils.isNotBlank(shopDetail)){
            byte[] encodedBytes = Base64.getEncoder().encode(shopDetail.getBytes(StandardCharsets.UTF_8));
            shopDetail = new String(encodedBytes, StandardCharsets.UTF_8);
            mgtShopInfoVo.setShopDetail(shopDetail);
        }
        //商户标签
        List<ShopRelTag> shopRelTagList = shopRelTagService.listShopRelTagByShopId(shopId);
        if(shopRelTagList!=null&&!shopRelTagList.isEmpty()){
@@ -503,6 +576,14 @@
                shopTagJs.add(shopRelTag.getTagId().toString());
            }
            mgtShopInfoVo.setShopTagIds(shopTagJs.toString());
        }
        if(mgtShopInfoVo.getBelongUserId()!=null){
            SysUser sysUser = sysUserService.getSysUser(mgtShopInfoVo.getBelongUserId()).getData();
            mgtShopInfoVo.setBelongUserName(sysUser.getNickName());
        }
        if(mgtShopInfoVo.getBelongShopId()!=null){
            Shop belongShop = this.getByShopId(mgtShopInfoVo.getBelongShopId());
            mgtShopInfoVo.setBelongShopName(belongShop.getShopName());
        }
        //商户关联用户
        List<ShopRelUser> shopRelUserList = shopRelUserService.listByShopId(shopId);
@@ -581,6 +662,9 @@
    public void transferMgtShop(MgtTransferShopDto mgtTransferShopDto){
        Shop shop = this.getByShopId(mgtTransferShopDto.getShopId());
        if(shop.getBelongUserId()!=null){
            if(shop.getBelongUserId().equals(mgtTransferShopDto.getUserId())){
                throw new ServiceException(AppErrorConstant.TRANS_NOT_MYSELF);
            }
            ShopTransferRecord shopTransferRecord = new ShopTransferRecord();
            shopTransferRecord.setDelFlag(0);
            shopTransferRecord.setShopId(shop.getShopId());
@@ -592,7 +676,7 @@
        }
        shop.setBelongUserId(mgtTransferShopDto.getTransferUserId());
        this.saveOrUpdate(shop);
        ShopRelUser shopRelUser = new ShopRelUser();
        /*ShopRelUser shopRelUser = new ShopRelUser();
        shopRelUser.setDelFlag(0);
        shopRelUser.setShopId(shop.getShopId());
        shopRelUser.setUserId(mgtTransferShopDto.getTransferUserId());
@@ -600,7 +684,7 @@
        shopRelUser.setUserMobile(sysUser.getPhonenumber());
        shopRelUser.setUserDeptId(sysUser.getDeptId());
        shopRelUser.setUserName(sysUser.getNickName());
        shopRelUserService.save(shopRelUser);
        shopRelUserService.save(shopRelUser);*/
    }
    /**
@@ -657,47 +741,48 @@
     * @return
     */
    @Override
    public MerHomeShopTotalVo getStaffHomeTotal(Long userId){
    public StaffHomeShopTotalVo getStaffHomeTotal(Long userId){
        List<Long> userIds = null;
        List<Long> shopIds = null;
        //如果是leader 查询leader下面所有的员工下的所有shopId
        if(remoteSysStaffService.isLeader()){
            Long deptId = sysUserService.getSysUser(userId).getData().getDeptId();
            userIds = remoteSysStaffService.getUserIds(deptId).getData();
            userIds = sysUserService.getUserIdsByDept(userId).getData();
            //根据用户所有id查询关联的商户id
            MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
            mgtBasePlatformDto.setUserIdList(userIds);
            shopIds = shopMapper.listShopIdByTotal(mgtBasePlatformDto);
            Shop shop = this.getShopByBelongUserId(userId);
            shopIds.add(shop.getShopId());
        }else {
            //普通员工查询商户归属的shopId
            MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto();
            mgtShopIdByCodeDto.setBelongUserId(userId);
            shopIds = shopMapper.getShopIdByCode(mgtShopIdByCodeDto);
            Shop shop = this.getShopByBelongUserId(userId);
            shopIds.add(shop.getShopId());
        }
            //分别查询
            MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo();
            merHomeShopTotalVo.setShopIds(shopIds);
            MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData();
            merHomeShopTotalVo.setTodayShop(orderVo.getTodayShop());
            merHomeShopTotalVo.setUnHandleOrder(orderVo.getUnHandleOrder());
            merHomeShopTotalVo.setShopTurnover(orderVo.getShopTurnover());
            ShopTotal shopTotal = shopTotalService.shopsTotalByIds(shopIds);
            merHomeShopTotalVo.setCycleSurp(shopTotal.getUseableCyclePerson());
            merHomeShopTotalVo.setExplorationSurp(shopTotal.getUseableExperiencePerson());
            Integer taskCount = memberTaskService.getMembersIngTotal(shopIds);
            merHomeShopTotalVo.setTask(taskCount);
            return merHomeShopTotalVo;
        }
        //分别查询
        StaffHomeShopTotalVo staffHomeShopTotalVo = shopMapper.getStaffHomeTotal(shopIds);
        Integer shopTaskCount = shopTaskService.getShopIngTotal(shopIds);
        staffHomeShopTotalVo.setFollowMember(0);
        staffHomeShopTotalVo.setNewMember(0);
        staffHomeShopTotalVo.setShopTask(shopTaskCount);
        return staffHomeShopTotalVo;
    }
    /**
     * 获取商户端
     * @param userId
     * @param merBaseDto
     * @return
     */
    @Override
    public MerHomeShopTotalVo getMerHomeTotal(Long userId){
    public MerHomeShopTotalVo getMerHomeTotal(MerBaseDto merBaseDto){
        Long userId = merBaseDto.getUserId();
        MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo();
        ShopRelUser shopRelUser = shopRelUserService.getByUserId(userId);
        Long shopId = shopRelUser.getShopId();
        //如果商户变动刷新token
        if(!shopId.equals(merBaseDto.getShopId())){
            String userKey = SecurityUtils.getUserKey();
            redisService.deleteObject(CacheConstants.LOGIN_TOKEN_KEY+userKey);
            throw new ServiceException("登录状态已过期",401);
        }
        merHomeShopTotalVo.setShopId(shopId);
        Shop shop = this.getById(shopId);
        merHomeShopTotalVo.setShopType(shop.getShopType());
@@ -867,11 +952,15 @@
     * @return  void
     */
    @Override
    public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto){
    public void mgtShopAuth(MgtShopAuthDto mgtShopAuthDto) throws WxPayException {
        ShopAuthentication shopAuthentication = shopAuthenticationService.getById(mgtShopAuthDto.getAuthId());
        Shop shop = this.getByShopId(shopAuthentication.getShopId());
        String applyNumber = IdUtils.simpleUUID();
        BeanUtils.copyProperties(mgtShopAuthDto , shopAuthentication);
        shopAuthentication.setApplyNumber(applyNumber);
        shopAuthentication.setAuditStatus(3);
        shopAuthenticationService.saveOrUpdate(shopAuthentication);
        wechatPayUtils.ecommerceApply(shopAuthentication,applyNumber,shop);
    }
    /**
@@ -1045,4 +1134,198 @@
                }).collect(Collectors.toList());
        return simpleShopVoList;
    }
    /**
     * @description  获取用户管理商户
     * @author  jqs
     * @date    2023/7/14 10:00
     * @param userId
     * @return  Shop
     */
    @Override
    public Shop getShopByBelongUserId(Long userId){
        LambdaQueryWrapper<Shop> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Shop::getDelFlag,0);
        queryWrapper.eq(Shop::getBelongUserId,userId);
        return this.getOne(queryWrapper,false);
    }
    /**
     * @description  员工端获取商户列表
     * @author  jqs
     * @date    2023/7/14 15:26
     * @param page
     * @param staffShopPageDto
     * @return  List<StaffShopPageVo>
     */
    @Override
    public List<StaffShopPageVo> pageStaffShop(Page page, StaffShopPageDto staffShopPageDto){
        List<StaffShopPageVo> staffShopPageVoList = shopMapper.pageStaffShop(page, staffShopPageDto);
        return staffShopPageVoList;
    }
    /**
     * @description  获取员工端商户数量统计
     * @author  jqs
     * @date    2023/7/14 15:51
     * @param userId
     * @return  StaffShopSimpleTotalVo
     */
    @Override
    public StaffShopSimpleTotalVo getStaffSimpleTotal(Long userId){
        List<Long> userIdList = null;
        if(remoteSysStaffService.isLeader()){
            userIdList = sysUserService.getUserIdsByDept(userId).getData();
            userIdList.add(userId);
        }else {
            userIdList.add(userId);
        }
        return shopMapper.getStaffSimpleTotal(userIdList);
    }
    /**
     * @description  员工端获取商户详情
     * @author  jqs
     * @date    2023/7/14 18:32
     * @param shopId
     * @return  StaffShopInfoGetVo
     */
    @Override
    public StaffShopInfoGetVo getStaffShopInfo(Long shopId) {
        // 创建员工商店信息对象
        StaffShopInfoGetVo staffShopInfoGetVo = new StaffShopInfoGetVo();
        // 通过商店ID获取商店信息
        Shop shop = this.getByShopId(shopId);
        // 获取商店文件列表
        List<ShopFile> shopFileList = shopFileService.listShopFileByShopId(shopId);
        // 初始化商店图片
        String shopPicture = null;
        // 遍历商店文件列表,获取商店图片
        if (shopFileList != null && !shopFileList.isEmpty()) {
            for (ShopFile shopFile : shopFileList) {
                if (shopFile.getFileType() == 1) {
                    shopPicture = shopFile.getFileUrl();
                    break;
                }
            }
        }
        // 创建商店总览对象,并设置商店ID
        MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo();
        merHomeShopTotalVo.setShopId(shopId);
        // 通过远程订单服务获取商店总览信息
        MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData();
        // 获取商店总计信息
        ShopTotal shopTotal = shopTotalService.getById(shopId);
        // 获取商店任务计数
        Integer taskCount = memberTaskService.getMemberIngTotal(shopId);
        // 设置员工商店信息对象的属性
        staffShopInfoGetVo.setTodayReservation(0);
        staffShopInfoGetVo.setUnHandleOrder(orderVo.getUnHandleOrder());
        staffShopInfoGetVo.setShopTask(taskCount);
        staffShopInfoGetVo.setShopTurnover(orderVo.getShopTurnover());
        staffShopInfoGetVo.setCycleSurp(shopTotal.getUseableCyclePerson());
        staffShopInfoGetVo.setExplorationSurp(shopTotal.getUseableExperiencePerson());
        staffShopInfoGetVo.setShopId(shopId);
        staffShopInfoGetVo.setShopName(shop.getShopName());
        staffShopInfoGetVo.setShopPicture(shopPicture);
        staffShopInfoGetVo.setBusinessStartTime(shop.getBusinessStartTime());
        staffShopInfoGetVo.setBusinessEndTime(shop.getBusinessEndTime());
        staffShopInfoGetVo.setShopownerName(shop.getShopownerName());
        staffShopInfoGetVo.setShopownerPhone(shop.getShopownerPhone());
        staffShopInfoGetVo.setShopAddress(shop.getShopAreaName() + shop.getShopAddress());
        staffShopInfoGetVo.setShopCustomStatus(shop.getShopCustomStatus());
        staffShopInfoGetVo.setShopTags(shop.getShopTags());
        staffShopInfoGetVo.setSupportingCapacityFlag(shop.getSupportingCapacityFlag());
        staffShopInfoGetVo.setOperationPersonFlag(shop.getOperationPersonFlag());
        staffShopInfoGetVo.setExecutiveForceFlag(shop.getExecutiveForceFlag());
        staffShopInfoGetVo.setPatternFlag(shop.getPatternFlag());
        staffShopInfoGetVo.setConnectionFlag(shop.getConnectionFlag());
        staffShopInfoGetVo.setEconomicAbilityFlag(shop.getEconomicAbilityFlag());
        staffShopInfoGetVo.setRelationPartner(shop.getRelationPartner());
        staffShopInfoGetVo.setBusinessHistory(shop.getBusinessHistory());
        staffShopInfoGetVo.setNewAreaMember(0);
        staffShopInfoGetVo.setAreaTurnover(BigDecimal.ZERO);
        staffShopInfoGetVo.setFrozenFlag(shop.getFrozenFlag());
        // 如果商店类型为1,则获取该商店ID列表的新区域成员和总订单金额
        if (shop.getShopType() == 1) {
            List<Long> shopIdList = this.listShopIdByShopId(shop.getShopId());
            if (shopIdList != null && !shopIdList.isEmpty()) {
                Integer count = remoteMemberService.getAreaNewMember(shopIdList).getData();
                staffShopInfoGetVo.setNewAreaMember(count);
                ShopTotal shopTotalAll = shopTotalService.shopsTotalByIds(shopIdList);
                staffShopInfoGetVo.setAreaTurnover(shopTotalAll.getTotalOrderMoney());
            }
        }
        // 如果商店的扩展联系方式不为空,则设置员工商店信息对象的扩展联系方式列表
        String extendContacts = shop.getExtendContacts();
        if (StringUtils.isNotBlank(extendContacts)) {
            List<ExtendContactsVo> extendContactsVoList = JSON.parseArray(extendContacts, ExtendContactsVo.class);
            staffShopInfoGetVo.setExtendContactsVoList(extendContactsVoList);
        }
        // 返回员工商店信息对象
        return staffShopInfoGetVo;
    }
    /**
     * @description  修改商户评估
     * @author  jqs
     * @date    2023/7/15 10:18
     * @param staffShopEstimateEditDto
     * @return  void
     */
    @Override
    public void editShopEstimate(StaffShopEstimateEditDto staffShopEstimateEditDto){
        Shop shop = new Shop();
        shop.setShopId(staffShopEstimateEditDto.getShopId());
        shop.setSupportingCapacityFlag(staffShopEstimateEditDto.getSupportingCapacityFlag());
        shop.setOperationPersonFlag(staffShopEstimateEditDto.getOperationPersonFlag());
        shop.setExecutiveForceFlag(staffShopEstimateEditDto.getExecutiveForceFlag());
        shop.setPatternFlag(staffShopEstimateEditDto.getPatternFlag());
        shop.setConnectionFlag(staffShopEstimateEditDto.getConnectionFlag());
        shop.setEconomicAbilityFlag(staffShopEstimateEditDto.getEconomicAbilityFlag());
        shop.setRelationPartner(staffShopEstimateEditDto.getRelationPartner());
        shop.setBusinessHistory(staffShopEstimateEditDto.getBusinessHistory());
        shop.setUpdateUserId(staffShopEstimateEditDto.getUserId());
        shop.setUpdateTime(new Date());
        shopMapper.updateShop(shop);
    }
    /**
     * @description  修改店铺扩展联系人
     * @author  jqs
     * @date    2023/7/15 11:06
     * @param staffShopECEditDto
     * @return  void
     */
    @Override
    public void editExtendContacts(StaffShopECEditDto staffShopECEditDto){
        Shop shop = new Shop();
        String extendContacts = null;
        List<ExtendContactsVo> extendContactsVoList = staffShopECEditDto.getExtendContactsVoList();
        if(extendContactsVoList!=null&&!extendContactsVoList.isEmpty()){
            extendContacts = JSON.toJSONString(extendContactsVoList);
        }
        shop.setExtendContacts(extendContacts);
        shop.setShopId(staffShopECEditDto.getShopId());
        shop.setUpdateUserId(staffShopECEditDto.getUserId());
        shop.setUpdateTime(new Date());
        shopMapper.updateExtendContacts(shop);
    }
    /**
     * @description  修改店铺状态
     * @author  jqs
     * @date    2023/7/15 11:51
     * @param staffShopCCEditDto
     * @return  void
     */
    @Override
    public void editShopCustomStatus(StaffShopCCEditDto staffShopCCEditDto){
        Shop shop = new Shop();
        shop.setShopCustomStatus(staffShopCCEditDto.getShopCustomStatus());
        shop.setShopId(staffShopCCEditDto.getShopId());
        shop.setUpdateUserId(staffShopCCEditDto.getUserId());
        shop.setUpdateTime(new Date());
        shopMapper.updateShop(shop);
    }
}