Forráskód Böngészése

商城套餐包优惠卷/发送优惠卷/销售端的绑定app端的 客服登录 接口

三七 5 napja
szülő
commit
7b760940f7
19 módosított fájl, 407 hozzáadás és 22 törlés
  1. 43 0
      fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java
  2. 1 1
      fs-qwhook-sop/src/main/java/com/fs/FsQwhookSopApplication.java
  3. 6 15
      fs-qwhook-sop/src/main/java/com/fs/app/controller/testController.java
  4. 26 0
      fs-service/src/main/java/com/fs/company/domain/CompanyFsUser.java
  5. 53 0
      fs-service/src/main/java/com/fs/company/mapper/CompanyFsUserMapper.java
  6. 23 0
      fs-service/src/main/java/com/fs/company/service/ICompanyUserService.java
  7. 72 0
      fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java
  8. 7 1
      fs-service/src/main/java/com/fs/his/mapper/FsIntegralGoodsMapper.java
  9. 2 0
      fs-service/src/main/java/com/fs/his/param/FsIntegralGoodsListUParam.java
  10. 15 0
      fs-service/src/main/java/com/fs/his/vo/CompanyUserBindUserVO.java
  11. 5 2
      fs-service/src/main/java/com/fs/hisStore/mapper/FsIntegralGoodsScrmMapper.java
  12. 1 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderItemScrmMapper.java
  13. 4 1
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductAttrValueScrmMapper.java
  14. 2 0
      fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductScrmMapper.java
  15. 24 0
      fs-service/src/main/java/com/fs/hisStore/param/FsIntegralGoodsListUParam.java
  16. 74 0
      fs-service/src/main/resources/mapper/company/CompanyFsUserMapper.xml
  17. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/CouponController.java
  18. 1 1
      fs-user-app/src/main/java/com/fs/app/controller/store/CouponScrmController.java
  19. 47 0
      fs-user-app/src/main/java/com/fs/app/controller/store/StoreProductPackageScrmController.java

+ 43 - 0
fs-company/src/main/java/com/fs/company/controller/company/CompanyUserController.java

@@ -30,10 +30,13 @@ import com.fs.company.vo.CompanyUserQwListVO;
 import com.fs.company.vo.CompanyUserVO;
 import com.fs.config.cloud.CloudHostProper;
 import com.fs.course.config.CourseConfig;
+import com.fs.course.domain.FsUserCompanyUser;
 import com.fs.framework.security.LoginUser;
 import com.fs.framework.security.SecurityUtils;
 import com.fs.framework.service.TokenService;
+import com.fs.his.domain.FsUser;
 import com.fs.his.utils.qrcode.QRCodeUtils;
+import com.fs.his.vo.CompanyUserBindUserVO;
 import com.fs.his.vo.OptionsVO;
 import com.fs.hisStore.service.IFsUserScrmService;
 import com.fs.hisStore.vo.FsStoreProductExportVO;
@@ -912,4 +915,44 @@ public class CompanyUserController extends BaseController {
         List<com.fs.hisStore.domain.FsUserScrm> userList = companyUserService.selectBoundFsUsersByCompanyUserId(companyUserId);
         return R.ok().put("data", userList);
     }
+
+    /**
+     * 获取销售绑定的fs_user
+     */
+
+    @GetMapping("/getFsUserBySaleId")
+    public  TableDataInfo getFsUserBySaleId(FsUser fsUser){
+        LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
+        fsUser.setCompanyId(loginUser.getCompany().getCompanyId());
+        startPage();
+        List<CompanyUserBindUserVO> list = companyUserService.getFsUserByCompanyUserId(fsUser);
+        return getDataTable(list);
+    }
+
+
+    /**
+     * 绑定销售和fs_user 的关系(该销售绑定fs_user)
+     */
+    @ApiOperation("绑定销售和fs_user 的关系(该销售绑定fs_user)")
+//    @PreAuthorize("@ss.hasPermi('company:user:bindUser')")
+    @PostMapping("/bindSaleAndFsUser")
+    public R bindSaleAndFsUser(@RequestBody FsUserCompanyUser companyUser){
+        int i = companyUserService.bindCompanyUserAndFsUser(companyUser.getCompanyUserId(), companyUser.getUserId());
+        return i>0?R.ok():R.error("绑定失败");
+    }
+
+    /**
+     * 解绑销售和 fs_user 的关系
+     */
+    @ApiOperation("解绑销售和 fs_user 的关系")
+    @PostMapping("/unbindSaleAndFsUser")
+    public R unbindSaleAndFsUser(@RequestBody FsUserCompanyUser companyUser) {
+        try {
+            boolean result = companyUserService.unbindCompanyUserAndFsUser(companyUser.getCompanyUserId(), companyUser.getUserId());
+            return result ? R.ok("解绑成功") : R.error("解绑失败");
+        } catch (Exception e) {
+            logger.error("解绑销售和用户关系异常", e);
+            return R.error("操作失败:" + e.getMessage());
+        }
+    }
 }

+ 1 - 1
fs-qwhook-sop/src/main/java/com/fs/FsQwhookSopApplication.java

@@ -11,7 +11,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
 @EnableTransactionManagement
 @EnableAsync
-@EnableScheduling
+//@EnableScheduling
 public class FsQwhookSopApplication {
 
 

+ 6 - 15
fs-qwhook-sop/src/main/java/com/fs/app/controller/testController.java

@@ -2,8 +2,10 @@ package com.fs.app.controller;
 
 import com.fs.common.core.domain.R;
 import com.fs.common.core.redis.RedisCache;
+import com.fs.qw.domain.QwUser;
 import com.fs.qw.mapper.QwExternalContactMapper;
 import com.fs.qw.mapper.QwUserMapper;
+import com.fs.qw.service.IQwUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -21,25 +23,14 @@ public class testController {
     testService testService;
     @Autowired
     private RedisCache redisCache;
+    @Autowired
+    private  IQwUserService qwUserService;
 
     @GetMapping("/qwHookNotify")
     public R qwHookNotify() {
 
-//        redisCache.setCacheObject("qwUserRd:"+12313+":"+12313 ,JSON.toJSONString(null),1, TimeUnit.HOURS);
-
-//
-//        List<QwUser> qwUserAllKey = qwUserMapper.getQwUserAllKey();
-//
-//
-//        int i=1;
-//
-//        for (QwUser qwUser : qwUserAllKey) {
-//            System.out.println(qwUser);
-//            i++;
-//            System.out.println("执行到第:"+i);
-//            testService.add(qwUser);
-//
-//        }
+        QwUser user = qwUserMapper.selectById(34205);
+        qwUserService.atMsg(user, "掉线提醒(登录异常)");
 
 
         return  R.ok();

+ 26 - 0
fs-service/src/main/java/com/fs/company/domain/CompanyFsUser.java

@@ -0,0 +1,26 @@
+package com.fs.company.domain;
+
+import com.fs.common.annotation.Excel;
+import com.fs.common.core.domain.BaseEntity;
+import lombok.Data;
+
+@Data
+public class CompanyFsUser extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** fs_user 用户id */
+    @Excel(name = "fs_user 用户id")
+    private Long fsUserId;
+
+    /** company_user 销售id */
+    @Excel(name = "company_user 销售id")
+    private Long companyUserId;
+
+    /** 绑定状态 */
+    @Excel(name = "绑定状态")
+    private Integer status;
+
+}

+ 53 - 0
fs-service/src/main/java/com/fs/company/mapper/CompanyFsUserMapper.java

@@ -0,0 +1,53 @@
+package com.fs.company.mapper;
+
+import com.fs.company.domain.CompanyFsUser;
+import com.fs.his.domain.FsUser;
+import com.fs.his.vo.CompanyUserBindUserVO;
+import org.apache.ibatis.annotations.Delete;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
+
+public interface CompanyFsUserMapper {
+
+    /**
+     * 新增公司用户绑定关系
+     *
+     * @param companyFsUser 公司用户绑定关系
+     * @return 结果
+     */
+    public int insertCompanyFsUser(CompanyFsUser companyFsUser);
+
+    /**
+     * 根据FS用户ID查询绑定关系
+     *
+     * @param fsUserId FS用户ID
+     * @return 公司用户绑定关系
+     */
+    public CompanyFsUser selectByFsUserId(Long fsUserId);
+
+    /**
+     * 更新公司用户绑定关系
+     *
+     * @param companyFsUser 公司用户绑定关系
+     * @return 结果
+     */
+    public int updateCompanyFsUser(CompanyFsUser companyFsUser);
+
+    /**
+     * 销售公司用户列表
+     */
+    List<CompanyUserBindUserVO> selecUserList(FsUser fsUser);
+
+    /**
+     * 根据销售id 查询绑定的用户
+     */
+    String selectUserListBySalesId(Long companyUserId);
+
+    @Select("select * from company_fs_user where company_user_id=#{companyUserId} and fs_user_id=#{userId}")
+    CompanyFsUser selectByCompanyUserIdAndUserId(@Param("companyUserId") Long companyUserId, @Param("userId") Long userId);
+
+    @Delete("delete from company_fs_user WHERE id=#{id}")
+    int deleteById(Long id);
+}

+ 23 - 0
fs-service/src/main/java/com/fs/company/service/ICompanyUserService.java

@@ -7,7 +7,9 @@ import com.fs.company.param.CompanyUserAreaParam;
 import com.fs.company.param.CompanyUserCodeParam;
 import com.fs.company.param.CompanyUserQwParam;
 import com.fs.company.vo.*;
+import com.fs.his.domain.FsUser;
 import com.fs.his.vo.CitysAreaVO;
+import com.fs.his.vo.CompanyUserBindUserVO;
 import com.fs.his.vo.OptionsVO;
 import com.fs.hisStore.vo.FsStoreProductExportVO;
 import com.fs.qw.dto.UserProjectDTO;
@@ -276,4 +278,25 @@ public interface ICompanyUserService {
     List<CompanyUser> getDataScopeCompanyUser(Long companyUserId);
 
     List<Company> getCompanyList(String corpId);
+
+
+
+    /**
+     * 绑定销售和fs_user 的关系(该销售绑定fs_user)
+     */
+    int  bindCompanyUserAndFsUser(Long companyUserId, Long fsUserId);
+
+    /**
+     * 解绑销售和 fs_user 的关系
+     * @param companyUserId 销售 ID
+     * @param userId 用户 ID
+     * @return 是否删除成功
+     */
+    boolean unbindCompanyUserAndFsUser(Long companyUserId, Long userId);
+
+
+    /**
+     * 获取销售绑定的fs_user
+     */
+    List<CompanyUserBindUserVO> getFsUserByCompanyUserId(FsUser fsUser);
 }

+ 72 - 0
fs-service/src/main/java/com/fs/company/service/impl/CompanyUserServiceImpl.java

@@ -23,9 +23,12 @@ import com.fs.company.param.CompanyUserQwParam;
 import com.fs.company.service.*;
 import com.fs.company.vo.*;
 import com.fs.course.service.IFsUserCompanyUserService;
+import com.fs.his.domain.FsUser;
 import com.fs.his.mapper.FsUserMapper;
 import com.fs.his.service.IFsCityService;
+import com.fs.his.utils.PhoneUtil;
 import com.fs.his.vo.CitysAreaVO;
+import com.fs.his.vo.CompanyUserBindUserVO;
 import com.fs.his.vo.OptionsVO;
 import com.fs.hisStore.domain.FsStoreProductAttrScrm;
 import com.fs.hisStore.domain.FsStoreProductAttrValueScrm;
@@ -130,6 +133,9 @@ public class CompanyUserServiceImpl implements ICompanyUserService
     @Autowired
     private CompanyMapper companyMapper;
 
+    @Autowired
+    private  CompanyFsUserMapper companyFsUserMapper;
+
 
     /**
      * 查询物业公司管理员信息
@@ -1128,4 +1134,70 @@ public class CompanyUserServiceImpl implements ICompanyUserService
         return companyMapper.getCompanyList(corpId);
 
     }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int bindCompanyUserAndFsUser(Long companyUserId, Long fsUserId) {
+        // 检查该用户是否已经与其他销售绑定
+        CompanyFsUser existingBinding = companyFsUserMapper.selectByFsUserId(fsUserId);
+
+        if (existingBinding != null) {
+            // 如果已存在绑定关系,检查是否是同一个销售
+            if (existingBinding.getCompanyUserId().equals(companyUserId)) {
+                // 已经是同一个销售,更新状态并返回成功
+                existingBinding.setStatus(1);
+                existingBinding.setCreateTime(DateUtils.getNowDate());
+                return companyFsUserMapper.updateCompanyFsUser(existingBinding);
+            } else {
+                // 已绑定其他销售,需要先解绑
+                throw new CustomException("该用户已绑定销售:" +
+                        companyUserService.selectCompanyUserNameUserById(existingBinding.getCompanyUserId()) +
+                        ",需先解绑后才能重新绑定");
+            }
+        }
+
+        // 没有绑定记录,创建新的绑定关系
+        CompanyFsUser companyFsUser = new CompanyFsUser();
+        companyFsUser.setCompanyUserId(companyUserId);
+        companyFsUser.setFsUserId(fsUserId);
+        companyFsUser.setStatus(1);
+        companyFsUser.setCreateTime(DateUtils.getNowDate());
+        return companyFsUserMapper.insertCompanyFsUser(companyFsUser);
+    }
+
+    @Override
+    public boolean unbindCompanyUserAndFsUser(Long companyUserId, Long userId) {
+        // 校验参数
+        if (companyUserId == null || userId == null) {
+            throw new IllegalArgumentException("销售 ID 或用户 ID 不能为空");
+        }
+
+        // 查询是否存在绑定关系
+        CompanyFsUser relation = companyFsUserMapper.selectByCompanyUserIdAndUserId(companyUserId, userId);
+        if (relation == null) {
+            throw new RuntimeException("未找到销售与用户之间的绑定关系");
+        }
+
+        // 删除绑定关系
+        int rows = companyFsUserMapper.deleteById(relation.getId());
+        return rows > 0;
+    }
+
+
+    @Override
+    public List<CompanyUserBindUserVO> getFsUserByCompanyUserId(FsUser fsUser) {
+        //加密手机号
+        if (StringUtils.isNotBlank(fsUser.getPhone())) {
+            fsUser.setPhone(PhoneUtil.encryptPhone(fsUser.getPhone()));
+        }
+        List<CompanyUserBindUserVO> fsUsers = companyFsUserMapper.selecUserList(fsUser);
+        for (CompanyUserBindUserVO user : fsUsers) {
+            if (StringUtils.isNotBlank(user.getPhone())) {
+                user.setPhone(PhoneUtil.decryptPhone(user.getPhone()));
+            }
+        }
+        return fsUsers;
+    }
+
 }

+ 7 - 1
fs-service/src/main/java/com/fs/his/mapper/FsIntegralGoodsMapper.java

@@ -86,9 +86,15 @@ public interface FsIntegralGoodsMapper
     @Select({"<script> " +
             "select g.goods_id,g.img_url,g.images,g.goods_name,g.ot_price,g.goods_type,g.integral,g.cash,g.sort  from fs_integral_goods g  " +
             "where g.status=1  " +
-            "<if test = 'maps.goodsType != null and maps.goodsType != 0     '> " +
+            "<if test = 'maps.goodsType != null and maps.goodsType != 0 '> " +
             "and g.goods_type = #{maps.goodsType}  " +
             "</if>" +
+            "<if test = 'maps.keyword != null and maps.keyword != \" \" '> " +
+            "and g.goods_name like concat('%', #{maps.keyword}, '%') " +
+            "</if>" +
+            "<if test = 'maps.appId != null and maps.appId != \" \" '> " +
+            " and ((FIND_IN_SET(#{maps.appId}, g.app_ids) > 0)) " +
+            "</if>"+
             " order by g.goods_id desc "+
             "</script>"})
     List<FsIntegralGoodsListUVO> selectFsIntegralGoodsListUVO(@Param("maps")FsIntegralGoodsListUParam param);

+ 2 - 0
fs-service/src/main/java/com/fs/his/param/FsIntegralGoodsListUParam.java

@@ -28,4 +28,6 @@ public class FsIntegralGoodsListUParam  implements Serializable {
      * 商品状态(1:上架 2:下架)
      */
     private Integer status;
+
+    private String appId;
 }

+ 15 - 0
fs-service/src/main/java/com/fs/his/vo/CompanyUserBindUserVO.java

@@ -0,0 +1,15 @@
+package com.fs.his.vo;
+
+import lombok.Data;
+
+@Data
+public class CompanyUserBindUserVO {
+
+    private Long userId;
+
+    private String phone;
+
+    private  String nickName;
+
+    private  Integer status;
+}

+ 5 - 2
fs-service/src/main/java/com/fs/hisStore/mapper/FsIntegralGoodsScrmMapper.java

@@ -75,11 +75,14 @@ public interface FsIntegralGoodsScrmMapper
             "</script>"})
     List<FsIntegralGoodsListVO> selectFsIntegralGoodsListVO(FsIntegralGoodsScrm fsIntegralGoods);
     @Select({"<script> " +
-            "select g.goods_id,g.img_url,g.images,g.goods_name,g.ot_price,g.goods_type,g.integral,g.sort  from fs_integral_goods g  " +
+            "select g.goods_id,g.img_url,g.images,g.goods_name,g.ot_price,g.goods_type,g.integral,g.cash,g.sort  from fs_integral_goods g  " +
             "where g.status=1  " +
-            "<if test = 'maps.goodsType != null and maps.goodsType != 0     '> " +
+            "<if test = 'maps.goodsType != null and maps.goodsType != 0 '> " +
             "and g.goods_type = #{maps.goodsType}  " +
             "</if>" +
+            "<if test = 'maps.keyword != null and maps.keyword != \" \"  '> " +
+            "and g.goods_name like concat('%', #{maps.keyword}, '%') " +
+            "</if>" +
             "<if test = 'maps.appId != null and maps.appId != \" \" '> " +
             " and ((FIND_IN_SET(#{maps.appId}, g.app_ids) > 0)) " +
             "</if>"+

+ 1 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreOrderItemScrmMapper.java

@@ -69,6 +69,7 @@ public interface FsStoreOrderItemScrmMapper
 
     @Select("select * from fs_store_order_item_scrm where order_id=#{orderId}")
     List<FsStoreOrderItemVO> selectFsStoreOrderItemListByOrderId(Long orderId);
+
     @Select("select * from fs_store_order_item_scrm where order_id=#{orderId}")
     List<FsStoreOrderItemVO> selectMyFsStoreOrderItemListByOrderId(Long id);
 

+ 4 - 1
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductAttrValueScrmMapper.java

@@ -80,7 +80,7 @@ public interface FsStoreProductAttrValueScrmMapper
     List<FsStoreProductAttrValueScrm> selectFsStoreProductAttrValueByProductId(Long productId);
     @Select("select ifnull(stock,0) from fs_store_product_attr_value_scrm where  id=#{productAttrValueId}")
     int selectFsStoreProductStockById(Long productAttrValueId);
-    
+
     /**
      * 使用行锁查询规格库存
      */
@@ -91,9 +91,11 @@ public interface FsStoreProductAttrValueScrmMapper
     @Update("update fs_store_product_attr_value_scrm set stock=stock-#{num},sales=sales+#{num}" +
             " where id=#{productAttrValueId} and stock >= #{num} ")
     int decProductAttrStock(@Param("productAttrValueId")Long productAttrValueId, @Param("num") Integer cartNum);
+
     @Update("update fs_store_product_attr_value_scrm set stock=stock+#{num}, sales=sales-#{num}" +
             " where product_id=#{productId} and id=#{productAttrValueId}")
     int incProductAttrStock(@Param("num")Long num,@Param("productId") Long productId,@Param("productAttrValueId") Long productAttrValueId);
+
     @Select({"<script> " +
             "select v.*,p.product_name,p.product_type,c.cate_name  from fs_store_product_attr_value_scrm v inner join fs_store_product_scrm p on p.product_id=v.product_id left join fs_store_product_category_scrm c on c.cate_id=p.cate_id   " +
             "where 1=1 and v.bar_code is not null " +
@@ -118,6 +120,7 @@ public interface FsStoreProductAttrValueScrmMapper
             " order by v.id desc "+
             "</script>"})
     List<FsStoreProductAttrValueVO> selectFsStoreProductAttrValueListVO(@Param("maps")FsProductAttrValueParam param);
+
     @Select({"<script> " +
             "select v.*,p.product_name from fs_store_product_attr_value_scrm v " +
             "inner join fs_store_product_scrm p on p.product_id=v.product_id    " +

+ 2 - 0
fs-service/src/main/java/com/fs/hisStore/mapper/FsStoreProductScrmMapper.java

@@ -277,6 +277,7 @@ public interface FsStoreProductScrmMapper
             " and p.product_id=#{productId} " +
             "</script>"})
     FsStoreProductQueryVO selectFsStoreProductByIdQuery(@Param("productId") Long productId, @Param("storeId") String storeId, @Param("config") MedicalMallConfig config);
+
     @Update("update fs_store_product_scrm set stock=stock-#{num}, sales=sales+#{num}" +
             " where product_id=#{productId} and stock >= #{num}")
     int decProductAttrStock(@Param("productId")Long productId, @Param("num")Integer cartNum);
@@ -287,6 +288,7 @@ public interface FsStoreProductScrmMapper
     @Select("select stock from fs_store_product_scrm where product_id=#{productId} for update")
     @DataSource(DataSourceType.SLAVE)
     Integer selectProductStockForUpdate(@Param("productId") Long productId);
+
     @Update("update fs_store_product_scrm set stock=stock+#{num}, sales=sales-#{num}" +
             " where product_id=#{productId}")
     int incStockDecSales( @Param("num")Long num, @Param("productId")Long productId);

+ 24 - 0
fs-service/src/main/java/com/fs/hisStore/param/FsIntegralGoodsListUParam.java

@@ -1,6 +1,7 @@
 package com.fs.hisStore.param;
 
 import com.fs.common.param.BaseQueryParam;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -8,4 +9,27 @@ import java.io.Serializable;
 @Data
 public class FsIntegralGoodsListUParam extends BaseQueryParam implements Serializable {
     Integer goodsType;
+
+    @ApiModelProperty(value = "页码,默认为1")
+    private Integer pageNum =1;
+    @ApiModelProperty(value = "页大小,默认为10")
+    private Integer pageSize = 10;
+    private String keyword;
+
+    /**
+     * 最小积分
+     */
+    private Integer minPoints;
+
+    /**
+     * 最大积分
+     */
+    private Integer maxPoints;
+
+    /**
+     * 商品状态(1:上架 2:下架)
+     */
+    private Integer status;
+
+    private String appId;
 }

+ 74 - 0
fs-service/src/main/resources/mapper/company/CompanyFsUserMapper.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.fs.company.mapper.CompanyFsUserMapper">
+
+    <resultMap type="CompanyFsUser" id="CompanyFsUserResult">
+        <result property="id"    column="id"    />
+        <result property="fsUserId"    column="fs_user_id"    />
+        <result property="companyUserId"    column="company_user_id"    />
+        <result property="status"    column="status"    />
+        <result property="createTime"    column="create_time"    />
+    </resultMap>
+
+    <insert id="insertCompanyFsUser" parameterType="CompanyFsUser" useGeneratedKeys="true" keyProperty="id">
+        insert into company_fs_user
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="fsUserId != null">fs_user_id,</if>
+            <if test="companyUserId != null">company_user_id,</if>
+            <if test="status != null">status,</if>
+            <if test="createTime != null">create_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="fsUserId != null">#{fsUserId},</if>
+            <if test="companyUserId != null">#{companyUserId},</if>
+            <if test="status != null">#{status},</if>
+            <if test="createTime != null">#{createTime},</if>
+        </trim>
+    </insert>
+    <update id="updateCompanyFsUser">
+        update company_fs_user
+        <set>
+            <if test="fsUserId != null">fs_user_id = #{fsUserId},</if>
+            <if test="companyUserId != null">company_user_id = #{companyUserId},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+        </set>
+        where id = #{id}
+    </update>
+    <select id="selecUserList" resultType="com.fs.his.vo.CompanyUserBindUserVO">
+        SELECT
+            u.user_id userId,
+            u.phone,
+            u.nick_name nickName,
+            cfs.`status`
+        FROM
+            fs_user u
+                LEFT JOIN fs_user_company_user fsu ON u.user_id = fsu.user_id
+                LEFT JOIN company_fs_user cfs on u.user_id=cfs.fs_user_id
+        <where>
+            (u.company_id =#{companyId} or u.company_id is null)
+            <if test="phone != null and phone != ''">
+                and u.phone = #{phone}
+            </if>
+            <if test="nickName != null and nickName != ''">
+                and u.nick_name like concat('%',#{nickName},'%')
+            </if>
+            <if test="userId !=null and userId !=''">
+                and u.user_id=#{userId}
+            </if>
+        </where>
+
+        GROUP BY
+            u.user_id
+    </select>
+    <select id="selectByFsUserId" resultType="com.fs.company.domain.CompanyFsUser">
+        select * from company_fs_user where fs_user_id = #{fsUserId}
+    </select>
+    <select id="selectUserListBySalesId" resultType="java.lang.String">
+        SELECT GROUP_CONCAT(fs_user_id) FROM  company_fs_user   WHERE company_user_id=#{companyUserId}
+    </select>
+
+
+</mapper>

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/CouponController.java

@@ -31,7 +31,7 @@ import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 
-@Api("优惠券接口")
+@Api("互医优惠券接口")
 @RestController
 @RequestMapping(value="/app/coupon")
 public class CouponController extends  AppBaseController {

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/store/CouponScrmController.java

@@ -29,7 +29,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 
-@Api("优惠券接口")
+@Api("商城优惠券接口")
 @RestController
 @RequestMapping(value="/store/app/coupon")
 public class CouponScrmController extends AppBaseController {

+ 47 - 0
fs-user-app/src/main/java/com/fs/app/controller/store/StoreProductPackageScrmController.java

@@ -3,9 +3,16 @@ package com.fs.app.controller.store;
 
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fs.app.annotation.Login;
 import com.fs.app.controller.AppBaseController;
 import com.fs.common.core.domain.R;
+import com.fs.common.core.domain.entity.SysDictData;
+import com.fs.company.domain.Company;
+import com.fs.company.domain.CompanyUser;
+import com.fs.company.service.ICompanyService;
+import com.fs.company.service.ICompanyUserService;
 import com.fs.hisStore.domain.FsStoreProductAttrValueScrm;
 import com.fs.hisStore.domain.FsStoreProductPackageScrm;
 import com.fs.hisStore.domain.FsStoreProductScrm;
@@ -17,6 +24,7 @@ import com.fs.hisStore.service.IFsStoreProductAttrValueScrmService;
 import com.fs.hisStore.service.IFsStoreProductPackageScrmService;
 import com.fs.hisStore.service.IFsStoreProductScrmService;
 import com.fs.hisStore.vo.FsStoreProductPacketVO;
+import com.fs.system.service.ISysDictTypeService;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.Api;
@@ -40,6 +48,45 @@ public class StoreProductPackageScrmController extends AppBaseController {
     private IFsStoreProductAttrValueScrmService attrValueService;
     @Autowired
     private IFsStoreProductScrmService storeProductService;
+
+    @Autowired
+    private ICompanyUserService companyUserService;
+    @Autowired
+    private ICompanyService companyService;
+    @Autowired
+    private ISysDictTypeService dictTypeService;
+
+
+    @ApiOperation("获取套餐分类")
+    @GetMapping("/getPackagCateList")
+    public R getPackagCateList() {
+        List<SysDictData> result = new ArrayList<>();
+        try {
+            ObjectMapper objectMapper = new ObjectMapper();
+            Long companyUserId = getCompanyUserId();
+            CompanyUser companyUser=companyUserService.selectCompanyUserById(companyUserId);
+            Company company = companyService.selectCompanyById(companyUser.getCompanyId());
+            String packageCateIds = company.getPackageCateIds();
+            List<String> cateIdList = objectMapper.readValue(packageCateIds, new TypeReference<List<String>>() {});
+            if(!cateIdList.isEmpty()){
+                List<SysDictData> data = dictTypeService.selectDictDataByType("store_product_package_cate");
+                if(data != null && !data.isEmpty()){
+
+                    data.stream().forEach(item->{
+                        if (cateIdList.contains(item.getDictValue())) {
+                            result.add(item);
+                        }
+                    });
+                }
+            }
+
+        } catch (Exception e) {
+        } finally {
+            return R.ok().put("data", result);
+        }
+
+    }
+
     @Login
     @ApiOperation("获取套餐列表")
     @GetMapping("/getStoreProductPackage")