jiangqs
2023-05-26 aed4e4c7d76de4d0fbfe8c0b26fcdeecbd5c5b24
管理台用户管理
26个文件已修改
3个文件已添加
519 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppMemberBindingDto.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/SysTag.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/Member.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtMemberPageDto.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/BrowseRecord.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/IntegralRecord.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/util/CodeFactoryUtil.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopFundRecord.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopProportion.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopRelTagServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopStaffService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Activeness.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Article.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Cooperation.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/AppMemberBindingDto.java
@@ -18,4 +18,7 @@
    @ApiModelProperty(value = "商户id")
    private Long shopId;
    @ApiModelProperty(value = "商户名称")
    private String shopName;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/config/SysTag.java
@@ -39,7 +39,7 @@
    @TableField("del_flag")
    private Integer delFlag;
    /**
     * 标签类型1.用户2.合作商
     * 标签类型1.用户 2.合作商 3.建议
     */
    @TableField("tag_type")
    private Integer tagType;
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/Member.java
@@ -69,6 +69,9 @@
     */
    @TableField("relation_shop_id")
    private Long relationShopId;
    @TableField("relation_shop_name")
    private String relationShopName;
    /**
     * 真实姓名
     */
@@ -138,9 +141,19 @@
    @TableField("binding_flag")
    private Integer bindingFlag;
    /**
     * 商品类型
     */
    @TableField("goods_type")
    private String goodsType;
    /**
     * 调理问题
     */
    @TableField("member_nurse")
    private String memberNurse;
    @Override
    protected Serializable pkVal() {
        return this.userId;
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -195,7 +195,7 @@
    public QwH5LoginVo qwH5Login(QwUserDetailDto qwUserDetail)
    {
        // 查询用户信息
        R<QwH5LoginVo> userResult = remoteUserService.qwH5Login(qwUserDetail);
        R<QwH5LoginVo> userResult = remoteShopService.qwH5Login(qwUserDetail);
        if (R.FAIL == userResult.getCode())
        {
            throw new ServiceException(userResult.getMsg());
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
@@ -1,8 +1,7 @@
package com.ruoyi.common.core.utils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
import org.springframework.util.AntPathMatcher;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.text.StrFormatter;
@@ -558,4 +557,17 @@
        }
        return sb.toString();
    }
    /**
     * 比较数组返回差值
     */
    public static String[] compareStringArr(String[] A, String[] B) {
        List<String> result = new ArrayList<>();
        for (String s : A) {
            if (!Arrays.asList(B).contains(s)) {
                result.add(s);
            }
        }
        return result.toArray(new String[0]);
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/management/MgtMemberController.java
New file
@@ -0,0 +1,45 @@
package com.ruoyi.member.controller.management;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.member.domain.dto.MgtMemberPageDto;
import com.ruoyi.member.domain.vo.MgtMemberPageVo;
import com.ruoyi.member.service.member.MemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author jqs34
 * @ClassName ShopController
 * @description: TODO
 * @date 2023年04月21日
 * @version: 1.0
 */
@Api(value = "管理台会员相关接口", tags = "管理台会员相关接口", description = "管理台会员相关接口")
@RestController
@RequestMapping("/mgt/member")
public class MgtMemberController {
    @Autowired
    private MemberService memberService;
    @RequestMapping(value = "/pageMgtMember", method = RequestMethod.POST)
    @ApiOperation(value = "分页获取用户列表")
    public R<Page<MgtMemberPageVo>> pageMgtMember(@RequestBody MgtMemberPageDto mgtMemberPageDto) {
        Page<MgtMemberPageVo> page = new Page<>();
        page.setSize(mgtMemberPageDto.getPageSize());
        page.setCurrent(mgtMemberPageDto.getPageNum());
        List<MgtMemberPageVo> mgtShopPageVoList = memberService.pageMgtMember(page,mgtMemberPageDto);
        return R.ok(page.setRecords(mgtShopPageVoList));
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MerMemberPageDto.java
@@ -28,8 +28,8 @@
    @ApiModelProperty(value = "会员类型1.周期2.服务3.体验")
    private Integer memberType;
    @ApiModelProperty(value = "会员来源1.小程序2.推荐3.店铺创建")
    private Integer memberFrom;
    @ApiModelProperty(value = "会员来源")
    private String memberFrom;
    @ApiModelProperty(value = "跟进开始时间")
    private String taskStartDate;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/dto/MgtMemberPageDto.java
New file
@@ -0,0 +1,80 @@
package com.ruoyi.member.domain.dto;
import com.ruoyi.system.api.domain.dto.MgtBaseDto;
import com.ruoyi.system.api.domain.dto.MgtPageDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @author jqs34
 * @ClassName MgtMemerPageDto
 * @description: TODO
 * @date 2023年05月26日
 * @version: 1.0
 */
@Data
public class MgtMemberPageDto extends MgtPageDto {
    @ApiModelProperty(value = "关键词")
    private String keyword;
    @ApiModelProperty(value = "所属地区")
    private String belongDistrict;
    @ApiModelProperty(value = "注册时间")
    private String createTime;
    @ApiModelProperty(value = "最近消费时间")
    private String lastPayTime;
    @ApiModelProperty(value = "是否会员0否1是")
    private Integer memberFlag;
    @ApiModelProperty(value = "客户类型")
    private String goodsType;
    @ApiModelProperty(value = "关联商户id")
    private Long relationShopId;
    @ApiModelProperty(value = "会员来源")
    private String memberFrom;
    @ApiModelProperty(value = "推荐人")
    private String referrer;
    @ApiModelProperty(value = "性别0=男,1=女")
    private Integer gender;
    @ApiModelProperty(value = "开始年龄")
    private Integer startAge;
    @ApiModelProperty(value = "截止年龄")
    private Integer endAge;
    @ApiModelProperty(value = "开始年龄",hidden = true)
    private String startBirthday;
    @ApiModelProperty(value = "截止年龄",hidden = true)
    private String endBirthday;
    @ApiModelProperty(value = "开始积分")
    private Integer startIntegral;
    @ApiModelProperty(value = "截止积分")
    private Integer endIntegral;
    @ApiModelProperty(value = "活跃度id")
    private Long activenessId;
    @ApiModelProperty(value = "开始消费次数")
    private Integer startPayCount;
    @ApiModelProperty(value = "截止消费次数")
    private Integer endPayCount;
    @ApiModelProperty(value = "用户标签")
    private String memberTag;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/BrowseRecord.java
@@ -32,7 +32,7 @@
     * 记录id
     */
    @TableId(value = "record_id", type = IdType.AUTO)
    private Integer recordId;
    private Long recordId;
    /**
     * 删除标记
     */
@@ -42,7 +42,7 @@
     * 用户id
     */
    @TableField("user_id")
    private Integer userId;
    private Long userId;
    /**
     * 浏览类型
     */
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/member/IntegralRecord.java
@@ -32,7 +32,7 @@
     * 记录id
     */
    @TableId(value = "record_id", type = IdType.AUTO)
    private Integer recordId;
    private Long recordId;
    /**
     * 删除标记
     */
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/vo/MgtMemberPageVo.java
New file
@@ -0,0 +1,83 @@
package com.ruoyi.member.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * @author jqs34
 * @ClassName MgtMemberPageVo
 * @description: TODO
 * @date 2023年05月26日
 * @version: 1.0
 */
@Data
public class MgtMemberPageVo {
    @ApiModelProperty(value = "会员id")
    private String memberId;
    @ApiModelProperty(value = "用户id")
    private Long userId;
    @ApiModelProperty(value = "会员编号")
    private String memberNo;
    @ApiModelProperty(value = "用户姓名")
    private String realName;
    @ApiModelProperty(value = "用户昵称")
    private String nickName;
    @ApiModelProperty(value = "用户手机")
    private String mobile;
    @ApiModelProperty(value = "用户性别")
    private String gender;
    @ApiModelProperty(value = "用户年龄")
    private Integer age;
    @ApiModelProperty(value = "活跃度")
    private String activeness;
    @ApiModelProperty(value = "用户标签 多个,隔开")
    private String memberTags;
    @ApiModelProperty(value = "所属地区")
    private String belongDistrict;
    @ApiModelProperty(value = "是否成为会员")
    private String memberFlag;
    @ApiModelProperty(value = "注册时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    @ApiModelProperty(value = "最近消费时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date lastPayTime;
    @ApiModelProperty(value = "客户类型")
    private String goodsType;
    @ApiModelProperty(value = "客户类型")
    private String relationShopName;
    @ApiModelProperty(value = "积分")
    private Integer integral;
    @ApiModelProperty(value = "推荐人")
    private String referrer;
    @ApiModelProperty(value = "会员来源")
    private String memberFrom;
    @ApiModelProperty(value = "消费总金额")
    private BigDecimal totalPayMoney;
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/mapper/member/MemberMapper.java
@@ -4,8 +4,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.member.domain.dto.MerCashMemberPageDto;
import com.ruoyi.member.domain.dto.MerMemberPageDto;
import com.ruoyi.member.domain.dto.MgtMemberPageDto;
import com.ruoyi.member.domain.vo.MerCashMemberPageVo;
import com.ruoyi.member.domain.vo.MerMemberPageVo;
import com.ruoyi.member.domain.vo.MgtMemberPageVo;
import com.ruoyi.system.api.domain.poji.member.Member;
import org.apache.ibatis.annotations.Param;
@@ -37,25 +39,43 @@
     * @version 1.0
     */
    Member selectMemberByMobile(String mobile);
    /**
     * 通过openid获取会员
     *
     * @param miniOpenid
     * @return
     */
    Member getOneByMiniOpenid(@Param("miniOpenid")String miniOpenid);
    Member getOneByMiniOpenid(@Param("miniOpenid") String miniOpenid);
    /**
     * 商户获取绑定会员
     *
     * @param page
     * @return
     */
    List<MerMemberPageVo> pageMerMember(Page page,@Param("param")MerMemberPageDto merMemberPageDto);
    List<MerMemberPageVo> pageMerMember(Page page, @Param("param") MerMemberPageDto merMemberPageDto);
    /**
     * 分页获取收银用户列表
     *
     * @param page
     * @param merCashMemberPageDto
     * @return
     */
    List<MerCashMemberPageVo> pageMerCashMember(Page page, @Param("param")MerCashMemberPageDto merCashMemberPageDto);
    List<MerCashMemberPageVo> pageMerCashMember(Page page, @Param("param") MerCashMemberPageDto merCashMemberPageDto);
    /**
     * 平台分页获取会员列表
     *
     * @param page
     * @param merMemberPageDto
     * @return
     */
    List<MgtMemberPageVo> pageMgtMember(Page page, @Param("param") MgtMemberPageDto merMemberPageDto);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberServiceImpl.java
@@ -4,7 +4,9 @@
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -21,6 +23,7 @@
import com.ruoyi.member.service.member.MemberNurseService;
import com.ruoyi.member.service.member.MemberService;
import com.ruoyi.member.service.member.MemberTotalService;
import com.ruoyi.member.util.CodeFactoryUtil;
import com.ruoyi.member.util.HttpUtils;
import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto;
import com.ruoyi.system.api.domain.vo.AppMiniRegisterVo;
@@ -209,8 +212,9 @@
        //获取用户为空则新建
        if(member == null){
            //创建新用户
            String memberId = IdUtils.simpleUUID();
            sysUser = new SysUser();
            sysUser.setUserName(mobile+"-3");
            sysUser.setUserName(memberId);
            sysUser.setUserType("03");
            sysUser.setNickName("鸿瑞堂用户");
            sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
@@ -218,11 +222,13 @@
            sysUser.setPassword(SecurityUtils.encryptPassword(password));
            sysUser = sysUserService.registerUser(sysUser).getData();
            member = new Member();
            String memberId = IdUtils.simpleUUID();
            String memberNo = createMemberNo();
            member.setMemberNo(memberNo);
            member.setUserId(sysUser.getUserId());
            member.setDelFlag(0);
            member.setNickName("鸿瑞堂用户");
            member.setRealName("鸿瑞堂用户");
            member.setCustomerSource("小程序");
            member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
            member.setMemberId(memberId);
            member.setBindingFlag(0);
@@ -387,6 +393,7 @@
        Member member = this.getByUserId(appMemberBindingDto.getUserId());
        member.setBindingFlag(appMemberBindingDto.getBindingFlag());
        member.setRelationShopId(appMemberBindingDto.getShopId());
        member.setRelationShopName(appMemberBindingDto.getShopName());
        this.saveOrUpdate(member);
    }
@@ -474,8 +481,9 @@
        }
        SysUser sysUser = sysUserService.getSysUserByMobile(phonenumber).getData();
        if(sysUser==null){
            String memberId = IdUtils.simpleUUID();
            sysUser = new SysUser();
            sysUser.setUserName(phonenumber+"-3");
            sysUser.setUserName(memberId);
            sysUser.setUserType("03");
            sysUser.setNickName(merMemberAddDto.getNickName());
            sysUser.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
@@ -483,8 +491,9 @@
            sysUser.setPassword(SecurityUtils.encryptPassword(password));
            log.debug("sysUser"+sysUser.toString());
            sysUser = sysUserService.registerUser(sysUser).getData();
            String memberId = IdUtils.simpleUUID();
            Member member = new Member();
            String memberNo = createMemberNo();
            member.setMemberNo(memberNo);
            member.setMemberId(memberId);
            member.setUserId(sysUser.getUserId());
            member.setDelFlag(0);
@@ -500,6 +509,7 @@
            member.setMiniOpenid(null);
            member.setBindingFlag(1);
            member.setRelationShopId(merMemberAddDto.getShopId());
            member.setCustomerSource("商户添加");
            member.setCreateTime(new Date());
            log.info("member-----------------"+member.toString());
            this.saveOrUpdate(member);
@@ -589,10 +599,13 @@
     */
    @Override
    public void createNewMember(Member member){
        String memberNo = createMemberNo();
        member.setMemberNo(memberNo);
        member.setDelFlag(0);
        member.setAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/default.png");
        member.setBindingFlag(0);
        member.setCreateTime(new Date());
        member.setCustomerSource("商户订单添加");
        this.saveOrUpdate(member);
        initMemberTotal(member.getMemberId());
    }
@@ -622,4 +635,28 @@
        memberTotal.setTotalGoodsOrder(0);
        memberTotalService.saveOrUpdate(memberTotal);
    }
    /**
     * 生成会员编号
     * @return
     */
    private String createMemberNo(){
        int memberTotal = memberMapper.selectCount(new LambdaQueryWrapper<Member>().eq(Member::getDelFlag, 0));
        String memberNo = CodeFactoryUtil.getMemberNo(Long.valueOf(memberTotal+1));
        return memberNo;
    }
    /**
     * 平台分页获取会员列表
     * @param page
     * @param merMemberPageDto
     * @return
     */
    @Override
    public List<MgtMemberPageVo> pageMgtMember(Page page,MgtMemberPageDto merMemberPageDto){
        List<MgtMemberPageVo> memberPageVoList = memberMapper.pageMgtMember(page, merMemberPageDto);
        return memberPageVoList;
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/member/MemberService.java
@@ -140,4 +140,12 @@
     * @param member
     */
    void createNewMember(Member member);
    /**
     * 平台分页获取会员列表
     * @param page
     * @param merMemberPageDto
     * @return
     */
    List<MgtMemberPageVo> pageMgtMember(Page page,MgtMemberPageDto merMemberPageDto);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/util/CodeFactoryUtil.java
@@ -41,7 +41,11 @@
     * 用户id和随机数总长度
     */
    private static final int MAX_LENGTH = 4;
    private static final int SHOP_LENGTH = 4;
    private static final int MEMBER_LENGTH = 6;
    private static final int ORDER_LENGTH = 4;
    /**
     * 更具id进行加密+加随机数组成固定长度编码
@@ -61,7 +65,7 @@
     */
    public static String getShopNo(Long shopId) {
        String prefix = SHOP_PREFIX;
        return toFillZeroCode(prefix, MAX_LENGTH, shopId);
        return toFillZeroCode(prefix, SHOP_LENGTH, shopId);
    }
    /**
@@ -71,7 +75,7 @@
     */
    public static String getMemberNo(Long userId) {
        String prefix = APP_USER_PREFIX;
        return toFillZeroCode(prefix, MAX_LENGTH, userId);
        return toFillZeroCode(prefix, MEMBER_LENGTH, userId);
    }
    /**
@@ -84,7 +88,7 @@
        String prefix = DateUtils.parseDateToStr( "yyyyMMddHHmmss",new Date());
        prefix = ORDER_PREFIX + prefix;
        return toFillZeroCode(prefix, MAX_LENGTH, userId);
        return toFillZeroCode(prefix, ORDER_LENGTH, userId);
    }
ruoyi-modules/ruoyi-member/src/main/resources/mapper/member/MemberMapper.xml
@@ -26,6 +26,7 @@
        <result property="avatar"    column="avatar"    />
        <result property="bindingFlag"    column="binding_flag"    />
        <result property="goodsType"    column="goods_type"    />
        <result property="relationShopName"    column="relation_shop_name"    />
    </resultMap>
    <sql id="selectMemberVo">
@@ -57,7 +58,7 @@
        where user_id = #{userId}
    </select>
    <select id="selectMemberByUserId" parameterType="Long" resultMap="MemberResult">
    <select id="selectMemberByMobile" parameterType="Long" resultMap="MemberResult">
        <include refid="selectMemberVo"/>
        where mobile = #{mobile}
    </select>
@@ -189,4 +190,34 @@
            AND (tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%'))
        </if>
    </select>
    <select id="pageMgtMember" resultType="com.ruoyi.member.domain.vo.MgtMemberPageVo">
        SELECT
        tm.user_id userId,
        tm.relation_shop_id relationShopId,
        tm.member_no memberNo,
        tm.real_name realName,
        tm.nick_name nickName,
        tm.mobile mobile,
        CASE tm.gender WHEN 0 THEN "男" WHEN 1 THEN "女" ELSE "未知" END gender,
        (YEAR(CURRENT_DATE) - YEAR(tm.birthday)) - (RIGHT(CURRENT_DATE, 5) &lt; RIGHT(tm.birthday, 5)) age,
        tm.user_tags memberTags,
        tm.belong_district belongDistrict,
        CASE tm.binding_flag WHEN 0 THEN "否" WHEN 1 THEN "是" ELSE "否" END memberFlag,
        tm.create_time createTime,
        tmt.last_pay_time lastPayTime,
        tm.goods_type goodsType,
        tm.relation_shop_name relationShopName,
        tmt.total_integral integral,
        tm.referrer referrer,
        tm.customer_source memberFrom,
        tmt.total_pay_money totalPayMoney
        FROM t_member tm
        INNER JOIN t_member_total tmt ON tm.member_id = tmt.member_id
        WHERE del_flag = 0
        <if test="param.keyword != null and param.keyword != ''">
            AND (tm.member_no LIKE CONCAT('%',#{param.keyword},'%') OR tm.mobile LIKE CONCAT('%',#{param.keyword},'%') OR tm.real_name LIKE CONCAT('%',#{param.keyword},'%') OR tm.nick_name LIKE CONCAT('%',#{param.keyword},'%') OR FIND_IN_SET(tm.member_nurse,#{param.keyword}))
        </if>
    </select>
</mapper>
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -696,6 +696,8 @@
        BigDecimal goodsPrice;
        BigDecimal goodsTotalPrice;
        BigDecimal goodsRealPrice;
        Long shopId = merNewOrderDto.getShopId();
        Shop shop = remoteShopService.getShop(shopId).getData();
        List<AppMemberCouponVo> appMemberCouponVoList = remoteMemberService.listVoMemberCouponByUserId(userId).getData();
        Map<Long,AppMemberCouponVo> appMemberCouponVoMap = new HashMap<>();
        if(null != appMemberCouponVoList){
@@ -726,7 +728,7 @@
            //商户定制价格
            AppShopGoodsGetDto appShopGoodsGetDto = new AppShopGoodsGetDto();
            appShopGoodsGetDto.setGoodsId(goods.getGoodsId());
            appShopGoodsGetDto.setShopId(merNewOrderDto.getShopId());
            appShopGoodsGetDto.setShopId(shopId);
            ShopGoods shopGoods = remoteGoodsService.getShopGoods(appShopGoodsGetDto).getData();
            if(shopGoods!=null){
                goodsPrice = shopGoods.getSalesPrice();
@@ -792,7 +794,7 @@
        order.setOrderStatus(3);
        order.setOrderNo(orderNo);
        order.setOrderFrom(3);
        order.setShopId(merNewOrderDto.getShopId());
        order.setShopId(shopId);
        order.setUserId(userId);
        order.setOrderMoney(orderGoodsMoney);
        order.setCouponMoney(couponDiscount);
@@ -847,7 +849,8 @@
        if(member!=null&&member.getBindingFlag()!=1){
            //绑定商户
            AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
            appMemberBindingDto.setShopId(merNewOrderDto.getShopId());
            appMemberBindingDto.setShopId(shopId);
            appMemberBindingDto.setShopName(shop.getShopName());
            appMemberBindingDto.setUserId(userId);
            appMemberBindingDto.setBindingFlag(1);
            remoteMemberService.updateMemberBinding(appMemberBindingDto);
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/management/MgtShopController.java
@@ -38,9 +38,9 @@
    @Autowired
    private ShopRelTagService shopRelTagService;
    @RequestMapping(value = "/pageShop", method = RequestMethod.POST)
    @RequestMapping(value = "/pageMgtShop", method = RequestMethod.POST)
    @ApiOperation(value = "分页获取商户列表")
    public R<Page<MgtShopPageVo>> pageShop(@RequestBody MgtShopPageDto mgtShopPageDto) {
    public R<Page<MgtShopPageVo>> pageMgtShop(@RequestBody MgtShopPageDto mgtShopPageDto) {
        Page<MgtShopPageVo> page = new Page<>();
        page.setSize(mgtShopPageDto.getPageSize());
        page.setCurrent(mgtShopPageDto.getPageNum());
@@ -48,39 +48,39 @@
        return R.ok(page.setRecords(mgtShopPageVoList));
    }
    @RequestMapping(value = "/createShop", method = RequestMethod.POST)
    @RequestMapping(value = "/createMgtShop", method = RequestMethod.POST)
    @ApiOperation(value = "创建商户")
    public R createShop(@RequestBody MgtEditShopDto mgtEditShopDto) {
    public R createMgtShop(@RequestBody MgtEditShopDto mgtEditShopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtEditShopDto.setUserId(userId);
        shopService.createShop(mgtEditShopDto);
        return R.ok();
    }
    @RequestMapping(value = "/getShopInfo", method = RequestMethod.POST)
    @RequestMapping(value = "/getMgtShopInfo", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户详情")
    public R<MgtShopInfoVo> getShopInfo(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
    public R<MgtShopInfoVo> getMgtShopInfo(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
        MgtShopInfoVo mgtShopInfoVo = shopService.getMgtShopInfo(Long.valueOf(mgtBaseGetDto.getId()));
        return R.ok(mgtShopInfoVo);
    }
    @RequestMapping(value = "/getShopTag", method = RequestMethod.POST)
    @RequestMapping(value = "/getMgtShopTag", method = RequestMethod.POST)
    @ApiOperation(value = "获取商户标签")
    public R<List<MgtShopTagVo>> getShopTag(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
    public R<List<MgtShopTagVo>> getMgtShopTag(@RequestBody MgtBaseGetDto mgtBaseGetDto) {
        List<MgtShopTagVo> mgtShopInfoVoList = shopRelTagService.listShopTagVo(Long.valueOf(mgtBaseGetDto.getId()));
        return R.ok(mgtShopInfoVoList);
    }
    @RequestMapping(value = "/editShopTag", method = RequestMethod.POST)
    @RequestMapping(value = "/editMgtShopTag", method = RequestMethod.POST)
    @ApiOperation(value = "修改商户标签")
    public R editShopTag(@RequestBody MgtEditShopTagDto mgtEditShopTagDto) {
    public R editMgtShopTag(@RequestBody MgtEditShopTagDto mgtEditShopTagDto) {
        shopService.editShopTag(mgtEditShopTagDto);
        return R.ok();
    }
    @RequestMapping(value = "/changeCooperationTime", method = RequestMethod.POST)
    @RequestMapping(value = "/changeMgtCooperationTime", method = RequestMethod.POST)
    @ApiOperation(value = "修改合作时间")
    public R changeCooperationTime(@RequestBody MgtChangeCoopDto mgtChangeCoopDto) {
    public R changeMgtCooperationTime(@RequestBody MgtChangeCoopDto mgtChangeCoopDto) {
        Long userId = SecurityUtils.getUserId();
        mgtChangeCoopDto.setUserId(userId);
        shopService.changeCooperationTime(mgtChangeCoopDto);
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopFundRecord.java
@@ -32,7 +32,7 @@
     * 记录id
     */
    @TableId(value = "record_id", type = IdType.AUTO)
    private Integer recordId;
    private Long recordId;
    /**
     * 删除标记
     */
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/pojo/shop/ShopProportion.java
@@ -32,7 +32,7 @@
     * 分成id
     */
    @TableId("proportion_id")
    private Integer proportionId;
    private Long proportionId;
    /**
     * 删除标记
     */
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopStaffMapper.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.shop.domain.pojo.shop.ShopStaff;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
@@ -13,4 +14,9 @@
 */
public interface ShopStaffMapper extends BaseMapper<ShopStaff> {
    /**
     * 清空商户员工关联
     * @param shopId
     */
    void clearShopStaffRelation(@Param("shopId") Long shopId);
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopRelTagServiceImpl.java
@@ -2,15 +2,21 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.shop.domain.pojo.shop.ShopRelTag;
import com.ruoyi.shop.domain.vo.MgtShopTagVo;
import com.ruoyi.shop.mapper.shop.ShopRelTagMapper;
import com.ruoyi.shop.service.shop.ShopRelTagService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.api.domain.poji.config.SysTag;
import com.ruoyi.system.api.service.RemoteConfigService;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * <p>
@@ -24,6 +30,9 @@
public class ShopRelTagServiceImpl extends ServiceImpl<ShopRelTagMapper, ShopRelTag> implements ShopRelTagService {
    @Resource
    private ShopRelTagMapper shopRelTagMapper;
    @Resource
    private RemoteConfigService remoteConfigService;
    /**
     * 通过商户id获取标签
@@ -53,7 +62,29 @@
     */
    @Override
    public List<MgtShopTagVo> listShopTagVo(Long shopId){
        return shopRelTagMapper.listShopTagVo(shopId);
        List<ShopRelTag> shopRelTagList = listShopRelTagByShopId(shopId);
        Long[] tagIdArr =null;
        if(shopRelTagList!=null && !shopRelTagList.isEmpty()){
            tagIdArr = shopRelTagList.stream()
                    .map(ShopRelTag::getTagId)
                    .toArray(Long[]::new);
        }
        List<SysTag> sysTagsList = remoteConfigService.listSysTag(2).getData();
        //生成返回结果
        List<MgtShopTagVo> mgtShopTagVoList = new ArrayList<>();
        MgtShopTagVo mgtShopTagVo;
        for(SysTag sysTag : sysTagsList){
            mgtShopTagVo = new MgtShopTagVo();
            mgtShopTagVo.setTagId(sysTag.getTagId());
            mgtShopTagVo.setTagName(sysTag.getTagName());
            //判断是否选择
            if(tagIdArr!=null && tagIdArr.length>0 && ArrayUtils.contains(tagIdArr, sysTag.getTagId())){
                mgtShopTagVo.setSelectFlag(1);
            }else{
                mgtShopTagVo.setSelectFlag(0);
            }
        }
        return mgtShopTagVoList;
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -125,6 +125,9 @@
            shopFileService.deleteByShopId(shop.getShopId());
            shopRelTagService.deleteByShopId(shop.getShopId());
            shopRelUserService.deleteByShopId(shop.getShopId());
            //清空归属
            shopRelUserService.deleteByShopId(shop.getShopId());
            shopStaffService.clearShopStaffRelation(shop.getShopId());
        }else{
            shop.setShopStatus(2);
            shop.setCreateTime(new Date());
@@ -158,6 +161,9 @@
            shop.setShopTags(shopTagSj.toString());
            this.saveOrUpdate(shop);
        }
        //商户归属员工
        SysUser belongSysUser = sysUserService.getSysUser(shop.getBelongUserId()).getData();
        handleShopStaff(shop.getShopId(),belongSysUser);
        //商户关联人员
        String relUserIds = MGTEditShopDto.getRelUserIds();
        if(StringUtils.isNotBlank(relUserIds)){
@@ -176,6 +182,7 @@
                shopRelUser.setUserMobile(sysUser.getPhonenumber());
                shopRelUser.setUserDeptId(sysUser.getDeptId());
                shopRelUserService.save(shopRelUser);
                handleShopStaff(shop.getShopId(),sysUser);
            }
        }
        //商户封面
@@ -350,6 +357,7 @@
        if(member!=null&&member.getBindingFlag()!=1){
            AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
            appMemberBindingDto.setShopId(shop.getShopId());
            appMemberBindingDto.setShopName(shop.getShopName());
            appMemberBindingDto.setUserId(member.getUserId());
            appMemberBindingDto.setBindingFlag(0);
            remoteMemberService.updateMemberBinding(appMemberBindingDto);
@@ -375,6 +383,11 @@
        return shop;
    }
    /**
     * 获取商户端
     * @param userId
     * @return
     */
    @Override
    public MerHomeShopTotalVo getMerHomeTotal(Long userId){
        MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo();
@@ -390,7 +403,7 @@
    }
    /**
     *
     * 获取商户绑定代理商
     * @param page
     * @param merAgencyPageDto
     * @return
@@ -401,6 +414,11 @@
        return merAgencyPageVoList;
    }
    /**
     * 处理商户员工
     * @param shopId
     * @param sysUser
     */
    private void handleShopStaff(Long shopId,SysUser sysUser){
        ShopStaff shopStaff = shopStaffService.getByUserId(sysUser.getUserId());
        if(shopStaff!=null){
@@ -419,4 +437,6 @@
        }
        shopStaffService.saveOrUpdate(shopStaff);
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopStaffServiceImpl.java
@@ -35,6 +35,9 @@
    @Resource
    private ShopRelUserService shopRelUserService;
    @Resource
    private ShopStaffMapper shopStaffMapper;
    /**
     *
     * @param userId
@@ -83,7 +86,7 @@
    }
    /**
     *
     * 编辑商户员工信息
     * @param merEditUserDto
     */
    @Override
@@ -108,4 +111,13 @@
        }
        this.saveOrUpdate(shopStaff);
    }
    /**
     * 清空商户员工关联
     * @param shopId
     */
    @Override
    public void clearShopStaffRelation(Long shopId){
        shopStaffMapper.clearShopStaffRelation(shopId);
    }
}
ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopStaffService.java
@@ -37,8 +37,14 @@
    MerStaffInfoVo getShopStaffInfo(Long userId);
    /**
     *
     * 编辑商户员工信息
     * @param merEditUserDto
     */
    void editShopStaffInfo(MerEditUserDto merEditUserDto);
    /**
     * 清空商户员工关联
     * @param shopId
     */
    void clearShopStaffRelation(Long shopId);
}
ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopStaffMapper.xml
@@ -3,4 +3,9 @@
<mapper namespace="com.ruoyi.shop.mapper.shop.ShopStaffMapper">
    <update id="clearShopStaffRelation">
        UPDATE t_shop_staff SET del_flag = 1 WHERE del_flag = 0 AND shop_id = #{shopId}
    </update>
</mapper>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Activeness.java
@@ -1,6 +1,8 @@
package com.ruoyi.system.domain.pojo.config;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
@@ -30,8 +32,8 @@
    /**
     * 活跃度id
     */
    @TableId("activeness_id")
    private Integer activenessId;
    @TableId(value = "activeness_id", type = IdType.AUTO)
    private Long activenessId;
    /**
     * 删除标记
     */
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Article.java
@@ -32,7 +32,7 @@
     * 文章id
     */
    @TableId(value = "article_id", type = IdType.AUTO)
    private Integer articleId;
    private Long articleId;
    /**
     * 删除标记
     */
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/pojo/config/Cooperation.java
@@ -1,6 +1,8 @@
package com.ruoyi.system.domain.pojo.config;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.activerecord.Model;
@@ -30,8 +32,8 @@
    /**
     * 合作id
     */
    @TableId("cooper_id")
    private Integer cooperId;
    @TableId(value ="cooper_id", type = IdType.AUTO)
    private Long cooperId;
    /**
     * 删除标记
     */