yumeng 2 年之前
父節點
當前提交
fc8bbf3fa5
共有 20 個文件被更改,包括 2619 次插入26 次删除
  1. 22 25
      ruixuan-framework/src/main/java/com/ruixuan/framework/config/SecurityConfig.java
  2. 32 1
      ruixuan-live/pom.xml
  3. 10 0
      ruixuan-live/src/main/java/com/ruixuan/isc/constants/KuaiShouConstants.java
  4. 258 0
      ruixuan-live/src/main/java/com/ruixuan/isc/controller/KuaishouItemCollectSamplesController.java
  5. 190 0
      ruixuan-live/src/main/java/com/ruixuan/isc/controller/KuaishouItemListController.java
  6. 337 0
      ruixuan-live/src/main/java/com/ruixuan/isc/entity/KuaishouItemCollectSamples.java
  7. 603 0
      ruixuan-live/src/main/java/com/ruixuan/isc/entity/KuaishouItemList.java
  8. 5 0
      ruixuan-live/src/main/java/com/ruixuan/isc/mapper/AccessTokenMapper.java
  9. 77 0
      ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KuaishouItemCollectSamplesMapper.java
  10. 28 0
      ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KuaishouItemListMapper.java
  11. 8 0
      ruixuan-live/src/main/java/com/ruixuan/isc/service/IAccessTokenService.java
  12. 75 0
      ruixuan-live/src/main/java/com/ruixuan/isc/service/IKuaishouItemCollectSamplesService.java
  13. 33 0
      ruixuan-live/src/main/java/com/ruixuan/isc/service/IKuaishouItemListService.java
  14. 60 0
      ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/AccessTokenServiceImpl.java
  15. 224 0
      ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KuaishouItemCollectSamplesServiceImpl.java
  16. 142 0
      ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KuaishouItemListServiceImpl.java
  17. 二進制
      ruixuan-live/src/main/resources/lib/kuaishou-merchant-open-sdk-release_open_kwaishop_sdk-1.0.2546.jar
  18. 11 0
      ruixuan-live/src/main/resources/mapper/isc/AccessTokenMapper.xml
  19. 282 0
      ruixuan-live/src/main/resources/mapper/isc/KuaishouItemCollectSamplesMapper.xml
  20. 222 0
      ruixuan-live/src/main/resources/mapper/isc/KuaishouItemListMapper.xml

+ 22 - 25
ruixuan-framework/src/main/java/com/ruixuan/framework/config/SecurityConfig.java

@@ -20,18 +20,17 @@ import com.ruixuan.framework.security.handle.LogoutSuccessHandlerImpl;
 
 
 /**
 /**
  * spring security配置
  * spring security配置
- * 
+ *
  * @author ruixuan
  * @author ruixuan
  */
  */
 @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
 @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
-public class SecurityConfig extends WebSecurityConfigurerAdapter
-{
+public class SecurityConfig extends WebSecurityConfigurerAdapter {
     /**
     /**
      * 自定义用户认证逻辑
      * 自定义用户认证逻辑
      */
      */
     @Autowired
     @Autowired
     private UserDetailsService userDetailsService;
     private UserDetailsService userDetailsService;
-    
+
     /**
     /**
      * 认证失败处理类
      * 认证失败处理类
      */
      */
@@ -49,13 +48,13 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      */
      */
     @Autowired
     @Autowired
     private JwtAuthenticationTokenFilter authenticationTokenFilter;
     private JwtAuthenticationTokenFilter authenticationTokenFilter;
-    
+
     /**
     /**
      * 跨域过滤器
      * 跨域过滤器
      */
      */
     @Autowired
     @Autowired
     private CorsFilter corsFilter;
     private CorsFilter corsFilter;
-    
+
     /**
     /**
      * 解决 无法直接注入 AuthenticationManager
      * 解决 无法直接注入 AuthenticationManager
      *
      *
@@ -64,8 +63,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      */
      */
     @Bean
     @Bean
     @Override
     @Override
-    public AuthenticationManager authenticationManagerBean() throws Exception
-    {
+    public AuthenticationManager authenticationManagerBean() throws Exception {
         return super.authenticationManagerBean();
         return super.authenticationManagerBean();
     }
     }
 
 
@@ -85,8 +83,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      * authenticated       |   用户登录后可访问
      * authenticated       |   用户登录后可访问
      */
      */
     @Override
     @Override
-    protected void configure(HttpSecurity httpSecurity) throws Exception
-    {
+    protected void configure(HttpSecurity httpSecurity) throws Exception {
         httpSecurity
         httpSecurity
                 // CSRF禁用,因为不使用session
                 // CSRF禁用,因为不使用session
                 .csrf().disable()
                 .csrf().disable()
@@ -112,17 +109,19 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                 .antMatchers("/webjars/**").anonymous()
                 .antMatchers("/webjars/**").anonymous()
                 .antMatchers("/*/api-docs").anonymous()
                 .antMatchers("/*/api-docs").anonymous()
                 .antMatchers("/druid/**").anonymous()
                 .antMatchers("/druid/**").anonymous()
-                    .antMatchers("/swagger/**").permitAll()
-                    .antMatchers("/test/**").permitAll()
-                    .antMatchers("/demoController/**").permitAll()
-                    .antMatchers("/sale/**").permitAll()
-                    .antMatchers("/live/**").permitAll()
-                    .antMatchers("/launch/**").permitAll()
-                    .antMatchers("/system/user/getUserRoleByUserId").permitAll()
-                    .antMatchers("/system/user/getUserByRoleName").permitAll()
-                    .antMatchers("/system/industry/**").permitAll()
-                    .antMatchers("/isv/supply_chain/*").permitAll()
-                    .antMatchers("/system/user/*").permitAll()
+                .antMatchers("/swagger/**").permitAll()
+                .antMatchers("/test/**").permitAll()
+                .antMatchers("/demoController/**").permitAll()
+                .antMatchers("/sale/**").permitAll()
+                .antMatchers("/live/**").permitAll()
+                .antMatchers("/launch/**").permitAll()
+                .antMatchers("/system/user/getUserRoleByUserId").permitAll()
+                .antMatchers("/system/user/getUserByRoleName").permitAll()
+                .antMatchers("/system/industry/**").permitAll()
+                .antMatchers("/isv/supply_chain/*").permitAll()
+                .antMatchers("/itemCollectSamples/*").permitAll()
+                .antMatchers("/item/*").permitAll()
+                .antMatchers("/system/user/*").permitAll()
                 // 除上面外的所有请求全部需要鉴权认证
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()
                 .anyRequest().authenticated()
                 .and()
                 .and()
@@ -139,8 +138,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      * 强散列哈希加密实现
      * 强散列哈希加密实现
      */
      */
     @Bean
     @Bean
-    public BCryptPasswordEncoder bCryptPasswordEncoder()
-    {
+    public BCryptPasswordEncoder bCryptPasswordEncoder() {
         return new BCryptPasswordEncoder();
         return new BCryptPasswordEncoder();
     }
     }
 
 
@@ -148,8 +146,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
      * 身份认证接口
      * 身份认证接口
      */
      */
     @Override
     @Override
-    protected void configure(AuthenticationManagerBuilder auth) throws Exception
-    {
+    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
         auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
         auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder());
     }
     }
 }
 }

+ 32 - 1
ruixuan-live/pom.xml

@@ -16,6 +16,19 @@
     </description>
     </description>
 
 
     <dependencies>
     <dependencies>
+        <dependency>
+            <groupId>com.github.kuaidi100-api</groupId>
+            <artifactId>sdk</artifactId>
+            <version>1.0.11</version>
+        </dependency>
+
+        <dependency>
+            <groupId>thirtpart</groupId>
+            <artifactId>sdk</artifactId>
+            <version>1.0</version>
+            <scope>system</scope>
+            <systemPath>${project.basedir}/src/main/resources/lib/kuaishou-merchant-open-sdk-release_open_kwaishop_sdk-1.0.2546.jar</systemPath>
+        </dependency>
 
 
         <!-- 通用工具-->
         <!-- 通用工具-->
         <dependency>
         <dependency>
@@ -44,7 +57,6 @@
             <version>3.0.5</version>
             <version>3.0.5</version>
         </dependency>
         </dependency>
 
 
-
         <!-- csv -->
         <!-- csv -->
         <dependency>
         <dependency>
             <groupId>de.siegmar</groupId>
             <groupId>de.siegmar</groupId>
@@ -54,4 +66,23 @@
 
 
     </dependencies>
     </dependencies>
 
 
+
+    <build>
+        <resources>
+          <!--  &lt;!&ndash; 解决MyBatis配置文件引入问题 &ndash;&gt;
+            <resource>
+                <directory>src/main/java</directory>
+                <includes>
+                    <include>**/*.properties</include>
+                    <include>**/*.xml</include>
+                </includes>
+                &lt;!&ndash; 是否替换资源中的属性&ndash;&gt;
+                <filtering>false</filtering>
+            </resource>-->
+            <resource>
+                <directory>src/main/resources</directory>
+            </resource>
+        </resources>
+    </build>
+
 </project>
 </project>

+ 10 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/constants/KuaiShouConstants.java

@@ -0,0 +1,10 @@
+package com.ruixuan.isc.constants;
+
+public class KuaiShouConstants {
+    public static final String KFX_URL = "https://openapi.kwaixiaodian.com/";
+    public static final String APP_KEY = "ks665688320292774929";
+    public static final String APP_SECRET = "3qAsvwcUYuHFVpxJ_OTSFg";
+    public static final String SIGN_SECRET = "8e21f5bc03b6d2dc63e6256225dac00b";
+
+
+}

+ 258 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KuaishouItemCollectSamplesController.java

@@ -0,0 +1,258 @@
+package com.ruixuan.isc.controller;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.kuaidi100.sdk.response.SubscribePushParamResp;
+import com.kuaidi100.sdk.response.SubscribeResp;
+import com.kuaidi100.sdk.utils.SignUtils;
+import com.ruixuan.common.annotation.Log;
+import com.ruixuan.common.core.controller.BaseController;
+import com.ruixuan.common.core.domain.AjaxResult;
+import com.ruixuan.common.core.domain.entity.SysUser;
+import com.ruixuan.common.core.page.TableDataInfo;
+import com.ruixuan.common.enums.BusinessType;
+import com.ruixuan.common.utils.Check;
+import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
+import com.ruixuan.isc.service.IKuaishouItemCollectSamplesService;
+import com.ruixuan.system.service.ISysDeptService;
+import com.ruixuan.system.service.ISysRoleService;
+import com.ruixuan.system.service.ISysUserService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * 【商品领样】Controller
+ *
+ * @author ruoyi
+ * @date 2023-02-08
+ */
+@RestController
+@RequestMapping("/itemCollectSamples")
+public class KuaishouItemCollectSamplesController extends BaseController {
+    @Autowired
+    private IKuaishouItemCollectSamplesService kuaishouItemCollectSamplesService;
+
+    @Autowired
+    private ISysRoleService sysRoleService;
+    @Autowired
+    private ISysDeptService sysDeptService;
+    @Autowired
+    private ISysUserService sysUserService;
+
+    /**
+     * 查询【请填写功能名称】列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(Long itemId, Long promoterId, Long userId, Integer collectSampleStatus) {
+        TableDataInfo tableDataInfo = new TableDataInfo();
+        try {
+            Map<String, Object> requestMap = new HashMap<>();
+            if (Check.isNull(userId)) {
+                throw new Exception("请传入登录人ID");
+            }
+            String roleId = sysRoleService.getRoleBYUserId(userId);
+            if (roleId.equals("courtshipManager") || roleId.equals("bdManager") || roleId.equals("associationManager")) { // 经理层级查看部门下所有数据
+                Long deptId = sysDeptService.getDeptIdByUserId(userId);
+                List<Long> userIds = sysDeptService.getDeptUserListByDeptId(deptId);
+                if (roleId.equals("bdManager") || roleId.equals("associationManager")) {
+                    requestMap.put("collectSampleIds", userIds);
+                } else {
+                    requestMap.put("itemCreateIds", userIds);
+                }
+            } else if (roleId.equals("association") || roleId.equals("bd")) { // 社群和bd查看申请人为自己的领样信息
+                requestMap.put("collectSampleId", userId);
+            } else if (roleId.equals("courtship")) { // 招商查看创建人为自己的领样信息
+                requestMap.put("itemCreateId", userId);
+            }
+            if (!Check.isNull(itemId)) {
+                requestMap.put("itemId", itemId);
+            }
+            if (!Check.isNull(promoterId)) {
+                requestMap.put("promoterId", promoterId);
+            }
+            if (!Check.isNull(collectSampleStatus)) {
+                requestMap.put("collectSampleStatus", collectSampleStatus);
+            }
+            startPage();
+            List<KuaishouItemCollectSamples> list = kuaishouItemCollectSamplesService.selectKuaishouItemCollectSamplesList(requestMap);
+            return getDataTable(list);
+        } catch (Exception e) {
+            tableDataInfo.setCode(-1);
+            tableDataInfo.setMsg(e.getMessage());
+        }
+        return tableDataInfo;
+    }
+
+
+    /**
+     * 领样预览
+     */
+
+    @PostMapping("/preview")
+    public JSONObject preview(@RequestBody JSONObject requestJson) {
+        JSONObject returnJson = new JSONObject();
+        try {
+            Long userId = requestJson.getLong("userId");
+            if (Check.isNull(userId)) {
+                throw new Exception("请传入当前登录人ID");
+            }
+            SysUser sysUser = sysUserService.selectUserById(userId);
+            if (Check.isNull(sysUser)) {
+                throw new Exception("未获取到登录人信息");
+            }
+
+            JSONArray itemIds = requestJson.getJSONArray("itemIds");
+            if (Check.isNull(itemIds)) {
+                throw new Exception("请传入需要申请的商品列表");
+            }
+            JSONArray promoterIds = requestJson.getJSONArray("promoterIds");
+            if (Check.isNull(promoterIds)) {
+                throw new Exception("请传入需要申请的达人列表");
+            }
+            JSONObject previewJson = kuaishouItemCollectSamplesService.preview(userId, sysUser.getNickName(), itemIds, promoterIds);
+            returnJson.put("code", 0);
+            returnJson.put("message", "success");
+            returnJson.put("preview", previewJson);
+        } catch (Exception e) {
+            returnJson.put("code", -1);
+            returnJson.put("message", e.getMessage());
+        }
+        return returnJson;
+    }
+
+
+    /**
+     * 新增【请填写功能名称】
+     */
+
+    @PostMapping("/add")
+    public JSONObject add(@RequestBody JSONObject requestJson) {
+        JSONObject returnJson = new JSONObject();
+        try {
+            if (Check.isNull(requestJson)) {
+                throw new Exception("入参不能为空");
+            }
+            JSONArray temCollectSamples = requestJson.getJSONArray("temCollectSamples");
+            if (Check.isNull(temCollectSamples)) {
+                throw new Exception("认领信息不能为空");
+            }
+            kuaishouItemCollectSamplesService.batchAdd(temCollectSamples);
+            returnJson.put("code", 0);
+            returnJson.put("message", "领样信息增加成功");
+        } catch (Exception e) {
+            returnJson.put("code", -1);
+            returnJson.put("message", e.getMessage());
+        }
+
+        return returnJson;
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     */
+
+    @PutMapping("/edit")
+    public JSONObject edit(@RequestBody KuaishouItemCollectSamples kuaishouItemCollectSamples) {
+        JSONObject returnJson = new JSONObject();
+        try {
+            Long id = kuaishouItemCollectSamples.getId();
+            if (Check.isNull(id)) {
+                throw new Exception("id不能为空");
+            }
+            Integer collectSampleStatus = kuaishouItemCollectSamples.getCollectSampleStatus();
+            if (!Check.isNull(collectSampleStatus)) {
+                if (collectSampleStatus == 2) {
+                    String collectSampleDesc = kuaishouItemCollectSamples.getCollectSampleDesc();
+                    if (Check.isNull(collectSampleDesc)) {
+                        kuaishouItemCollectSamples.setCollectSampleDesc("领样审核拒绝");
+                    }
+                }
+                if (collectSampleStatus == 3) {
+                    kuaishouItemCollectSamples.setCollectSampleDesc("待录入订单号");
+                }
+                if (collectSampleStatus == 5) { // 招商审核作业拒绝
+                    String collectSampleDesc = kuaishouItemCollectSamples.getCollectSampleDesc();
+                    if (Check.isNull(collectSampleDesc)) {
+                        kuaishouItemCollectSamples.setCollectSampleDesc("招商审核作业拒绝,请重新提交");
+                    }
+                }
+                if (collectSampleStatus == 7) { // 作业完成
+                    kuaishouItemCollectSamples.setCollectSampleDesc("作业已完成");
+                }
+            }
+
+            String courierNumber = kuaishouItemCollectSamples.getCourierNumber();
+            if (!Check.isNull(courierNumber)) {
+                kuaishouItemCollectSamples.setCollectSampleStatus(4);
+                kuaishouItemCollectSamples.setCollectSampleDesc("商品已发货");
+                // 调用快递接口
+                kuaishouItemCollectSamplesService.subscribe(id,courierNumber);
+            }
+            String taskFileUrl = kuaishouItemCollectSamples.getTaskFileUrl();
+            if (Check.isNull(taskFileUrl)) { // 作业上传成功
+                kuaishouItemCollectSamples.setCollectSampleStatus(6);
+                kuaishouItemCollectSamples.setCollectSampleDesc("作业上传成功,待招商审核");
+            }
+
+            kuaishouItemCollectSamplesService.updateKuaishouItemCollectSamples(kuaishouItemCollectSamples);
+            returnJson.put("code", 0);
+            returnJson.put("message", "修改成功");
+        } catch (Exception e) {
+            returnJson.put("code", -1);
+            returnJson.put("message", e.getMessage());
+        }
+        return returnJson;
+    }
+
+
+    @GetMapping("/callback")
+    public SubscribeResp callback(HttpServletRequest request){
+        String param = request.getParameter("param");
+        System.err.println("快递回调数据:" + param);
+        String sign = request.getParameter("sign");
+        //建议记录一下这个回调的内容,方便出问题后双方排查问题
+        //log.debug("快递100订阅推送回调结果|{}|{}",param,sign);
+        //订阅时传的salt,没有可以忽略
+        String salt = "";
+        String ourSign = SignUtils.sign(param + salt);
+        SubscribeResp subscribeResp = new SubscribeResp();
+        subscribeResp.setResult(Boolean.TRUE);
+        subscribeResp.setReturnCode("200");
+        subscribeResp.setMessage("成功");
+        //加密如果相等,属于快递100推送;否则可以忽略掉当前请求
+        if (ourSign.equals(sign)){
+            //TODO 业务处理
+            SubscribePushParamResp subscribePushParamResp = new Gson().fromJson(param, SubscribePushParamResp.class);
+            return subscribeResp;
+        }
+        return null;
+    }
+
+
+    /**
+     * 删除【请填写功能名称】
+     */
+    @PreAuthorize("@ss.hasPermi('system:samples:remove')")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(kuaishouItemCollectSamplesService.deleteKuaishouItemCollectSamplesByIds(ids));
+    }
+}
+

+ 190 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KuaishouItemListController.java

@@ -0,0 +1,190 @@
+package com.ruixuan.isc.controller;
+
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.common.annotation.Log;
+import com.ruixuan.common.core.controller.BaseController;
+import com.ruixuan.common.core.domain.AjaxResult;
+import com.ruixuan.common.core.page.TableDataInfo;
+import com.ruixuan.common.enums.BusinessType;
+import com.ruixuan.common.utils.Check;
+import com.ruixuan.common.utils.DateUtils;
+import com.ruixuan.isc.entity.KuaishouItemList;
+import com.ruixuan.isc.service.IAccessTokenService;
+import com.ruixuan.isc.service.IKuaishouItemListService;
+import com.ruixuan.system.service.ISysDeptService;
+import com.ruixuan.system.service.ISysRoleService;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+
+/**
+ * 【请填写功能名称】Controller
+ *
+ * @author ruoyi
+ * @date 2023-02-03
+ */
+@RestController
+@RequestMapping("/item")
+public class KuaishouItemListController extends BaseController {
+    @Autowired
+    private IKuaishouItemListService kuaishouItemListService;
+    @Autowired
+    private ISysRoleService sysRoleService;
+    @Autowired
+    private ISysDeptService sysDeptService;
+    @Autowired
+    private IAccessTokenService accessTokenService;
+
+
+    @GetMapping("/accessToken")
+    @ApiOperation(value = "商品列表")
+    public void accessToken() {
+        // accessTokenService.getAccessToken();
+        //   accessTokenService.getCodeAccessToken();
+    }
+
+
+    @GetMapping("/getItemPreview")
+    @ApiOperation(value = "商品详情预览")
+    public JSONObject getItemPreview(
+            @ApiParam("活动ID") @RequestParam(value = "activityId", required = false) Long activityId,
+            @ApiParam("商品ID") @RequestParam(value = "itemId", required = false) Long itemId) {
+        JSONObject returnJson = new JSONObject();
+        try {
+
+            if (Check.isNull(activityId)) {
+                throw new Exception("请传入活动ID");
+            }
+
+            if (Check.isNull(itemId)) {
+                throw new Exception("请传入商品ID");
+            }
+            String accessToken = accessTokenService.getAccessToken();
+            if (Check.isNull(accessToken)) {
+                throw new Exception("获取token授权信息为空");
+            }
+            returnJson = kuaishouItemListService.getItemDetail(activityId, itemId, accessToken);
+        } catch (Exception e) {
+            returnJson.put("code", -1);
+            returnJson.put("message", e.getMessage());
+            // dataInfo.setCode(-1);
+        }
+        return returnJson;
+    }
+
+
+    @GetMapping("/list")
+    @ApiOperation(value = "商品列表")
+    public TableDataInfo orderList(
+            @ApiParam("用户id") @RequestParam(value = "userId", required = false) Long userId,
+            @ApiParam("审核状态") @RequestParam(value = "examineStatus", required = false) Long examineStatus) {
+        TableDataInfo dataInfo = new TableDataInfo();
+        try {
+            Map<String, Object> requestMap = new HashMap<>();
+            if (Check.isNull(userId)) {
+                throw new Exception("请传入userId");
+            }
+            String roleKey = sysRoleService.getRoleBYUserId(userId);
+            if (roleKey.equals("courtship")) {
+                requestMap.put("userId", userId);
+            } else if (roleKey.equals("courtshipManager")) {
+                Long deptId = sysDeptService.getDeptIdByUserId(userId);
+                if (Check.isNull(deptId)) {
+                    throw new Exception("此用户未获取相关部门");
+                }
+                List<Long> userIds = sysDeptService.getDeptUserListByDeptId(deptId);
+                requestMap.put("userIds", userIds);
+            }
+            if (!Check.isNull(examineStatus)) {
+                requestMap.put("examineStatus", examineStatus);
+            }
+            startPage();
+            List<KuaishouItemList> list = kuaishouItemListService.getItemList(requestMap);
+            dataInfo = getDataTable(list);
+        } catch (Exception e) {
+            dataInfo.setMsg(e.getMessage());
+            dataInfo.setCode(-1);
+        }
+        return dataInfo;
+    }
+
+
+    @GetMapping("/checkItem")
+    @ApiOperation(value = "检查此商品是否被绑定")
+    @PostMapping
+    public JSONObject checkItem(@RequestBody KuaishouItemList kuaishouItemList) {
+        JSONObject returnJson = new JSONObject();
+        try {
+            Long itemId = kuaishouItemList.getItemId();
+            if (Check.isNull(itemId)) {
+                throw new Exception("请传入商品ID");
+            }
+            KuaishouItemList itemInfo = kuaishouItemListService.getItemInfoByItemId(itemId);
+            if (Check.isNull(itemInfo)) {
+                returnJson.put("code", 0);
+                returnJson.put("message", "true");
+            } else {
+                returnJson.put("code", -1);
+                returnJson.put("message", "此商品已被:" + itemInfo.getUserName() + "绑定!");
+            }
+        } catch (Exception e) {
+            returnJson.put("code", -1);
+            returnJson.put("message", e.getMessage());
+        }
+        return returnJson;
+    }
+
+
+    @GetMapping("/insertItem")
+    @ApiOperation(value = "商品列表")
+    @PostMapping
+    public JSONObject insertItem(@RequestBody KuaishouItemList kuaishouItemList) {
+
+        JSONObject returnJson = new JSONObject();
+        try {
+            Long itemId = kuaishouItemList.getItemId();
+            if (Check.isNull(itemId)) {
+                throw new Exception("请传入商品ID");
+            }
+            kuaishouItemListService.insertItem(kuaishouItemList);
+            returnJson.put("code", 0);
+            returnJson.put("message", "添加成功");
+
+        } catch (Exception e) {
+            returnJson.put("code", -1);
+            returnJson.put("message", e.getMessage());
+        }
+        return returnJson;
+
+    }
+
+    /**
+     * 修改
+     */
+
+    @Log(title = "修改", businessType = BusinessType.UPDATE)
+    @PutMapping("/edit")
+    public AjaxResult edit(@RequestBody KuaishouItemList kuaishouItemList) {
+        return toAjax(kuaishouItemListService.updateKuaishouItemList(kuaishouItemList));
+    }
+
+    /**
+     * 删除
+     */
+
+    @Log(title = "删除", businessType = BusinessType.DELETE)
+    @DeleteMapping("/remove")
+    public AjaxResult remove(@PathVariable Long[] itemIds) {
+        return toAjax(kuaishouItemListService.deleteKuaishouItemListByItemIds(itemIds));
+    }
+}
+

+ 337 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/entity/KuaishouItemCollectSamples.java

@@ -0,0 +1,337 @@
+package com.ruixuan.isc.entity;
+
+
+import com.ruixuan.common.annotation.Excel;
+import com.ruixuan.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+
+/**
+ * 【请填写功能名称】对象 kuaishou_item_collect_samples
+ *
+ * @author ruoyi
+ * @date 2023-02-08
+ */
+public class KuaishouItemCollectSamples extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private Long id;
+
+    /** 商品ID */
+    @Excel(name = "商品ID")
+    private Long itemId;
+
+    /** 商品标题 */
+    @Excel(name = "商品标题")
+    private String itemTitle;
+
+    /** 商品单价-分 */
+    @Excel(name = "商品单价-分")
+    private Long itemPrice;
+
+    /** 商品图片链接 */
+    @Excel(name = "商品图片链接")
+    private String itemMgUrl;
+
+    /** 商品备注 */
+    @Excel(name = "商品备注")
+    private String itemDesc;
+
+    /** 佣金比例 */
+    @Excel(name = "佣金比例")
+    private Long commissionRate;
+
+    /** 服务费 */
+    @Excel(name = "服务费")
+    private Long regimentalPromotion;
+
+    /** 领样数量 */
+    @Excel(name = "领样数量")
+    private Integer sampleCount;
+
+    /** 领样规则 */
+    @Excel(name = "领样规则")
+    private String sampleRequirement;
+
+    /** 商品创建人ID */
+    @Excel(name = "商品创建人ID")
+    private Long itemCreateId;
+
+    /** 商品创建人姓名 */
+    @Excel(name = "商品创建人姓名")
+    private String itemCreateName;
+
+    /** 领样人ID */
+    @Excel(name = "领样人ID")
+    private Long collectSampleId;
+
+    /** 领样人姓名 */
+    @Excel(name = "领样人姓名")
+    private String collectSampleName;
+
+    /** 手卡信息 */
+    @Excel(name = "手卡信息")
+    private String partnerRecommendText;
+
+    /** 达人id */
+    @Excel(name = "达人id")
+    private Long promoterId;
+
+    /** 达人昵称 */
+    @Excel(name = "达人昵称")
+    private String promoterNickName;
+
+    /** 达人手机号 */
+    @Excel(name = "达人手机号")
+    private String promoterPhone;
+
+    /** 达人收获地址 */
+    @Excel(name = "达人收获地址")
+    private String promoterAddress;
+    private String promoterUrl;
+
+    /** 快递单号 */
+    @Excel(name = "快递单号")
+    private String courierNumber;
+
+    /** 作业地址 */
+    @Excel(name = "作业地址")
+    private String taskFileUrl;
+
+    /** 1-待审核 2-领样申请审核拒绝 3-领样审核通过-待录入订单号 4-已发货 5-已签收待上传作业 6-作业上传成功待招商审核 7-审核通过 */
+    @Excel(name = "1-待审核 2-领样申请审核拒绝 3-领样审核通过-待录入订单号 4-已发货 5-已签收待上传作业 6-作业上传成功待招商审核 7-审核通过")
+    private Integer collectSampleStatus;
+
+    /** 状态备注 */
+    @Excel(name = "状态备注")
+    private String collectSampleDesc;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(Long itemId) {
+        this.itemId = itemId;
+    }
+
+    public String getItemTitle() {
+        return itemTitle;
+    }
+
+    public void setItemTitle(String itemTitle) {
+        this.itemTitle = itemTitle;
+    }
+
+    public Long getItemPrice() {
+        return itemPrice;
+    }
+
+    public void setItemPrice(Long itemPrice) {
+        this.itemPrice = itemPrice;
+    }
+
+    public String getItemMgUrl() {
+        return itemMgUrl;
+    }
+
+    public void setItemMgUrl(String itemMgUrl) {
+        this.itemMgUrl = itemMgUrl;
+    }
+
+    public String getItemDesc() {
+        return itemDesc;
+    }
+
+    public void setItemDesc(String itemDesc) {
+        this.itemDesc = itemDesc;
+    }
+
+    public Long getCommissionRate() {
+        return commissionRate;
+    }
+
+    public void setCommissionRate(Long commissionRate) {
+        this.commissionRate = commissionRate;
+    }
+
+    public Long getRegimentalPromotion() {
+        return regimentalPromotion;
+    }
+
+    public void setRegimentalPromotion(Long regimentalPromotion) {
+        this.regimentalPromotion = regimentalPromotion;
+    }
+
+    public Integer getSampleCount() {
+        return sampleCount;
+    }
+
+    public void setSampleCount(Integer sampleCount) {
+        this.sampleCount = sampleCount;
+    }
+
+    public String getSampleRequirement() {
+        return sampleRequirement;
+    }
+
+    public void setSampleRequirement(String sampleRequirement) {
+        this.sampleRequirement = sampleRequirement;
+    }
+
+    public Long getItemCreateId() {
+        return itemCreateId;
+    }
+
+    public void setItemCreateId(Long itemCreateId) {
+        this.itemCreateId = itemCreateId;
+    }
+
+    public String getItemCreateName() {
+        return itemCreateName;
+    }
+
+    public void setItemCreateName(String itemCreateName) {
+        this.itemCreateName = itemCreateName;
+    }
+
+    public Long getCollectSampleId() {
+        return collectSampleId;
+    }
+
+    public void setCollectSampleId(Long collectSampleId) {
+        this.collectSampleId = collectSampleId;
+    }
+
+    public String getCollectSampleName() {
+        return collectSampleName;
+    }
+
+    public void setCollectSampleName(String collectSampleName) {
+        this.collectSampleName = collectSampleName;
+    }
+
+    public String getPartnerRecommendText() {
+        return partnerRecommendText;
+    }
+
+    public void setPartnerRecommendText(String partnerRecommendText) {
+        this.partnerRecommendText = partnerRecommendText;
+    }
+
+    public Long getPromoterId() {
+        return promoterId;
+    }
+
+    public void setPromoterId(Long promoterId) {
+        this.promoterId = promoterId;
+    }
+
+    public String getPromoterNickName() {
+        return promoterNickName;
+    }
+
+    public void setPromoterNickName(String promoterNickName) {
+        this.promoterNickName = promoterNickName;
+    }
+
+    public String getPromoterPhone() {
+        return promoterPhone;
+    }
+
+    public void setPromoterPhone(String promoterPhone) {
+        this.promoterPhone = promoterPhone;
+    }
+
+    public String getPromoterAddress() {
+        return promoterAddress;
+    }
+
+    public void setPromoterAddress(String promoterAddress) {
+        this.promoterAddress = promoterAddress;
+    }
+
+    public String getPromoterUrl() {
+        return promoterUrl;
+    }
+
+    public void setPromoterUrl(String promoterUrl) {
+        this.promoterUrl = promoterUrl;
+    }
+
+    public String getCourierNumber() {
+        return courierNumber;
+    }
+
+    public void setCourierNumber(String courierNumber) {
+        this.courierNumber = courierNumber;
+    }
+
+    public String getTaskFileUrl() {
+        return taskFileUrl;
+    }
+
+    public void setTaskFileUrl(String taskFileUrl) {
+        this.taskFileUrl = taskFileUrl;
+    }
+
+    public Integer getCollectSampleStatus() {
+        return collectSampleStatus;
+    }
+
+    public void setCollectSampleStatus(Integer collectSampleStatus) {
+        this.collectSampleStatus = collectSampleStatus;
+    }
+
+    public String getCollectSampleDesc() {
+        return collectSampleDesc;
+    }
+
+    public void setCollectSampleDesc(String collectSampleDesc) {
+        this.collectSampleDesc = collectSampleDesc;
+    }
+
+    @Override
+    public String toString() {
+        return "KuaishouItemCollectSamples{" +
+                "id=" + id +
+                ", itemId=" + itemId +
+                ", itemTitle='" + itemTitle + '\'' +
+                ", itemPrice=" + itemPrice +
+                ", itemMgUrl='" + itemMgUrl + '\'' +
+                ", itemDesc='" + itemDesc + '\'' +
+                ", commissionRate=" + commissionRate +
+                ", regimentalPromotion=" + regimentalPromotion +
+                ", sampleCount=" + sampleCount +
+                ", sampleRequirement='" + sampleRequirement + '\'' +
+                ", itemCreateId=" + itemCreateId +
+                ", itemCreateName='" + itemCreateName + '\'' +
+                ", collectSampleId=" + collectSampleId +
+                ", collectSampleName='" + collectSampleName + '\'' +
+                ", partnerRecommendText='" + partnerRecommendText + '\'' +
+                ", promoterId=" + promoterId +
+                ", promoterNickName='" + promoterNickName + '\'' +
+                ", promoterPhone='" + promoterPhone + '\'' +
+                ", promoterAddress='" + promoterAddress + '\'' +
+                ", promoterUrl='" + promoterUrl + '\'' +
+                ", courierNumber='" + courierNumber + '\'' +
+                ", taskFileUrl='" + taskFileUrl + '\'' +
+                ", collectSampleStatus=" + collectSampleStatus +
+                ", collectSampleDesc='" + collectSampleDesc + '\'' +
+                '}';
+    }
+}

+ 603 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/entity/KuaishouItemList.java

@@ -0,0 +1,603 @@
+package com.ruixuan.isc.entity;
+
+import com.ruixuan.common.annotation.Excel;
+import com.ruixuan.common.core.domain.BaseEntity;
+
+public class KuaishouItemList extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 商品ID
+     */
+    private Long itemId;
+
+    /**
+     * 商品标题
+     */
+    @Excel(name = "商品标题")
+    private String itemTitle;
+
+    /**
+     * 商品单价-分
+     */
+    @Excel(name = "商品单价-分")
+    private Long itemPrice;
+
+    /**
+     * 商品备注
+     */
+    @Excel(name = "商品备注")
+    private String itemDesc;
+
+    /**
+     * 商品折扣价
+     */
+    @Excel(name = "商品折扣价")
+    private Long zkFinalPrice;
+
+    /**
+     * 商品图片链接
+     */
+    @Excel(name = "商品图片链接")
+    private String itemMgUrl;
+
+    /**
+     * 商品详情图
+     */
+    @Excel(name = "商品详情图")
+    private String itemDescUrls;
+
+    /**
+     * 小店星级
+     */
+    @Excel(name = "小店星级")
+    private String shoStar;
+
+    /**
+     * 品牌名称
+     */
+    @Excel(name = "品牌名称")
+    private String mallLogisticsScore;
+
+    /**
+     * 活动商品审核状态,1-待审核,2审核通过,3审核失败(拒绝),5失效
+     */
+    @Excel(name = "活动商品审核状态,1-待审核,2审核通过,3审核失败", readConverterExp = "拒=绝")
+    private Integer activityItemStatus;
+
+    /**
+     * 类目ID店铺评分
+     */
+    @Excel(name = "类目ID店铺评分")
+    private String shopScore;
+
+    /**
+     * 类目ID
+     */
+    @Excel(name = "类目ID")
+    private Long categoryId;
+
+    /**
+     * 类目
+     */
+    @Excel(name = "类目")
+    private String categoryName;
+
+    /**
+     * 轮播图列表
+     */
+    @Excel(name = "轮播图列表")
+    private String itemGalleryUrls;
+
+    /**
+     * 1-商家报名、2-团长报名
+     */
+    @Excel(name = "1-商家报名、2-团长报名")
+    private Integer identity;
+
+    /**
+     * 活动id
+     */
+    @Excel(name = "活动id")
+    private Long activityId;
+
+    /**
+     * 点名名称
+     */
+    @Excel(name = "点名名称")
+    private String shopTitle;
+
+    /**
+     * 佣金比例
+     */
+    @Excel(name = "佣金比例")
+    private Long commissionRate;
+
+    /**
+     * 店铺服务分
+     */
+    @Excel(name = "店铺服务分")
+    private String mallServiceScore;
+
+    /**
+     * 店铺质量分
+     */
+    @Excel(name = "店铺质量分")
+    private String mallQualityScore;
+
+    /**
+     * 商品规格ID
+     */
+    @Excel(name = "商品规格ID")
+    private Long skuId;
+
+    /**
+     * 商品规格名称
+     */
+    @Excel(name = "商品规格名称")
+    private String specification;
+
+    /**
+     * 商品规格库存
+     */
+    @Excel(name = "商品规格库存")
+    private Long skuStock;
+
+    /**
+     * 商品规格价格(分)
+     */
+    @Excel(name = "商品规格价格", readConverterExp = "分=")
+    private Long skuPrice;
+
+    /**
+     * 创建人id
+     */
+    @Excel(name = "创建人id")
+    private Long userId;
+
+    /**
+     * 创建人
+     */
+    @Excel(name = "创建人")
+    private String userName;
+
+    /**
+     * 审核人id
+     */
+    @Excel(name = "审核人id")
+    private Long examineId;
+
+    /**
+     * 审核人名称
+     */
+    @Excel(name = "审核人名称")
+    private String examineName;
+
+    /**
+     * 1待审核 2审核通过 3审核失败
+     */
+    @Excel(name = "1待审核 2审核通过 3审核失败")
+    private Integer examineStatus;
+
+    /**
+     * 审核拒绝原因
+     */
+    @Excel(name = "审核拒绝原因")
+    private String refuseDetail;
+
+    /**
+     * 发货地址
+     */
+    @Excel(name = "发货地址")
+    private String postArea;
+
+    /**
+     * 未发货地址
+     */
+    @Excel(name = "未发货地址")
+    private String noPostArea;
+
+    /**
+     * 服务费率
+     */
+    @Excel(name = "服务费率")
+    private Long regimentalPromotionRate;
+
+    /**
+     * 服务费
+     */
+    @Excel(name = "服务费")
+    private Long regimentalPromotion;
+
+    /**
+     * 样品数量
+     */
+    @Excel(name = "样品数量")
+    private Integer sampleCount;
+
+    /**
+     * 领样要求
+     */
+    @Excel(name = "领样要求")
+    private String sampleRequirement;
+
+    /**
+     * 发货率
+     */
+    @Excel(name = "发货率")
+    private String deliveryRate;
+
+    /**
+     * 手卡信息
+     */
+    @Excel(name = "手卡信息")
+    private String partnerRecommendText;
+
+    /**
+     * 商品相信信息
+     */
+    @Excel(name = "商品相信信息")
+    private String detailUrl;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(Long itemId) {
+        this.itemId = itemId;
+    }
+
+    public String getItemTitle() {
+        return itemTitle;
+    }
+
+    public void setItemTitle(String itemTitle) {
+        this.itemTitle = itemTitle;
+    }
+
+    public Long getItemPrice() {
+        return itemPrice;
+    }
+
+    public void setItemPrice(Long itemPrice) {
+        this.itemPrice = itemPrice;
+    }
+
+    public String getItemDesc() {
+        return itemDesc;
+    }
+
+    public void setItemDesc(String itemDesc) {
+        this.itemDesc = itemDesc;
+    }
+
+    public Long getZkFinalPrice() {
+        return zkFinalPrice;
+    }
+
+    public void setZkFinalPrice(Long zkFinalPrice) {
+        this.zkFinalPrice = zkFinalPrice;
+    }
+
+    public String getItemMgUrl() {
+        return itemMgUrl;
+    }
+
+    public void setItemMgUrl(String itemMgUrl) {
+        this.itemMgUrl = itemMgUrl;
+    }
+
+    public String getItemDescUrls() {
+        return itemDescUrls;
+    }
+
+    public void setItemDescUrls(String itemDescUrls) {
+        this.itemDescUrls = itemDescUrls;
+    }
+
+    public String getShoStar() {
+        return shoStar;
+    }
+
+    public void setShoStar(String shoStar) {
+        this.shoStar = shoStar;
+    }
+
+    public String getMallLogisticsScore() {
+        return mallLogisticsScore;
+    }
+
+    public void setMallLogisticsScore(String mallLogisticsScore) {
+        this.mallLogisticsScore = mallLogisticsScore;
+    }
+
+    public Integer getActivityItemStatus() {
+        return activityItemStatus;
+    }
+
+    public void setActivityItemStatus(Integer activityItemStatus) {
+        this.activityItemStatus = activityItemStatus;
+    }
+
+    public String getShopScore() {
+        return shopScore;
+    }
+
+    public void setShopScore(String shopScore) {
+        this.shopScore = shopScore;
+    }
+
+    public Long getCategoryId() {
+        return categoryId;
+    }
+
+    public void setCategoryId(Long categoryId) {
+        this.categoryId = categoryId;
+    }
+
+    public String getCategoryName() {
+        return categoryName;
+    }
+
+    public void setCategoryName(String categoryName) {
+        this.categoryName = categoryName;
+    }
+
+    public String getItemGalleryUrls() {
+        return itemGalleryUrls;
+    }
+
+    public void setItemGalleryUrls(String itemGalleryUrls) {
+        this.itemGalleryUrls = itemGalleryUrls;
+    }
+
+    public Integer getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(Integer identity) {
+        this.identity = identity;
+    }
+
+    public Long getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Long activityId) {
+        this.activityId = activityId;
+    }
+
+    public String getShopTitle() {
+        return shopTitle;
+    }
+
+    public void setShopTitle(String shopTitle) {
+        this.shopTitle = shopTitle;
+    }
+
+    public Long getCommissionRate() {
+        return commissionRate;
+    }
+
+    public void setCommissionRate(Long commissionRate) {
+        this.commissionRate = commissionRate;
+    }
+
+    public String getMallServiceScore() {
+        return mallServiceScore;
+    }
+
+    public void setMallServiceScore(String mallServiceScore) {
+        this.mallServiceScore = mallServiceScore;
+    }
+
+    public String getMallQualityScore() {
+        return mallQualityScore;
+    }
+
+    public void setMallQualityScore(String mallQualityScore) {
+        this.mallQualityScore = mallQualityScore;
+    }
+
+    public Long getSkuId() {
+        return skuId;
+    }
+
+    public void setSkuId(Long skuId) {
+        this.skuId = skuId;
+    }
+
+    public String getSpecification() {
+        return specification;
+    }
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
+    }
+
+    public Long getSkuStock() {
+        return skuStock;
+    }
+
+    public void setSkuStock(Long skuStock) {
+        this.skuStock = skuStock;
+    }
+
+    public Long getSkuPrice() {
+        return skuPrice;
+    }
+
+    public void setSkuPrice(Long skuPrice) {
+        this.skuPrice = skuPrice;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public Long getExamineId() {
+        return examineId;
+    }
+
+    public void setExamineId(Long examineId) {
+        this.examineId = examineId;
+    }
+
+    public String getExamineName() {
+        return examineName;
+    }
+
+    public void setExamineName(String examineName) {
+        this.examineName = examineName;
+    }
+
+    public Integer getExamineStatus() {
+        return examineStatus;
+    }
+
+    public void setExamineStatus(Integer examineStatus) {
+        this.examineStatus = examineStatus;
+    }
+
+    public String getRefuseDetail() {
+        return refuseDetail;
+    }
+
+    public void setRefuseDetail(String refuseDetail) {
+        this.refuseDetail = refuseDetail;
+    }
+
+    public String getPostArea() {
+        return postArea;
+    }
+
+    public void setPostArea(String postArea) {
+        this.postArea = postArea;
+    }
+
+    public String getNoPostArea() {
+        return noPostArea;
+    }
+
+    public void setNoPostArea(String noPostArea) {
+        this.noPostArea = noPostArea;
+    }
+
+    public Long getRegimentalPromotionRate() {
+        return regimentalPromotionRate;
+    }
+
+    public void setRegimentalPromotionRate(Long regimentalPromotionRate) {
+        this.regimentalPromotionRate = regimentalPromotionRate;
+    }
+
+    public Long getRegimentalPromotion() {
+        return regimentalPromotion;
+    }
+
+    public void setRegimentalPromotion(Long regimentalPromotion) {
+        this.regimentalPromotion = regimentalPromotion;
+    }
+
+    public Integer getSampleCount() {
+        return sampleCount;
+    }
+
+    public void setSampleCount(Integer sampleCount) {
+        this.sampleCount = sampleCount;
+    }
+
+    public String getSampleRequirement() {
+        return sampleRequirement;
+    }
+
+    public void setSampleRequirement(String sampleRequirement) {
+        this.sampleRequirement = sampleRequirement;
+    }
+
+    public String getDeliveryRate() {
+        return deliveryRate;
+    }
+
+    public void setDeliveryRate(String deliveryRate) {
+        this.deliveryRate = deliveryRate;
+    }
+
+    public String getPartnerRecommendText() {
+        return partnerRecommendText;
+    }
+
+    public void setPartnerRecommendText(String partnerRecommendText) {
+        this.partnerRecommendText = partnerRecommendText;
+    }
+
+    public String getDetailUrl() {
+        return detailUrl;
+    }
+
+    public void setDetailUrl(String detailUrl) {
+        this.detailUrl = detailUrl;
+    }
+
+    @Override
+    public String toString() {
+        return "KuaishouItemList{" +
+                "itemId=" + itemId +
+                ", itemTitle='" + itemTitle + '\'' +
+                ", itemPrice=" + itemPrice +
+                ", itemDesc='" + itemDesc + '\'' +
+                ", zkFinalPrice=" + zkFinalPrice +
+                ", itemMgUrl='" + itemMgUrl + '\'' +
+                ", itemDescUrls='" + itemDescUrls + '\'' +
+                ", shoStar='" + shoStar + '\'' +
+                ", mallLogisticsScore='" + mallLogisticsScore + '\'' +
+                ", activityItemStatus=" + activityItemStatus +
+                ", shopScore='" + shopScore + '\'' +
+                ", categoryId=" + categoryId +
+                ", categoryName='" + categoryName + '\'' +
+                ", itemGalleryUrls='" + itemGalleryUrls + '\'' +
+                ", identity=" + identity +
+                ", activityId=" + activityId +
+                ", shopTitle='" + shopTitle + '\'' +
+                ", commissionRate=" + commissionRate +
+                ", mallServiceScore='" + mallServiceScore + '\'' +
+                ", mallQualityScore='" + mallQualityScore + '\'' +
+                ", skuId=" + skuId +
+                ", specification='" + specification + '\'' +
+                ", skuStock=" + skuStock +
+                ", skuPrice=" + skuPrice +
+                ", userId=" + userId +
+                ", userName='" + userName + '\'' +
+                ", examineId=" + examineId +
+                ", examineName='" + examineName + '\'' +
+                ", examineStatus=" + examineStatus +
+                ", refuseDetail='" + refuseDetail + '\'' +
+                ", postArea='" + postArea + '\'' +
+                ", noPostArea='" + noPostArea + '\'' +
+                ", regimentalPromotionRate=" + regimentalPromotionRate +
+                ", regimentalPromotion=" + regimentalPromotion +
+                ", sampleCount=" + sampleCount +
+                ", sampleRequirement='" + sampleRequirement + '\'' +
+                ", deliveryRate='" + deliveryRate + '\'' +
+                ", partnerRecommendText='" + partnerRecommendText + '\'' +
+                ", detailUrl='" + detailUrl + '\'' +
+                '}';
+    }
+}

+ 5 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/AccessTokenMapper.java

@@ -0,0 +1,5 @@
+package com.ruixuan.isc.mapper;
+
+public interface AccessTokenMapper {
+    String getAccessToken();
+}

+ 77 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KuaishouItemCollectSamplesMapper.java

@@ -0,0 +1,77 @@
+package com.ruixuan.isc.mapper;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-02-08
+ */
+public interface KuaishouItemCollectSamplesMapper
+{
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    public KuaishouItemCollectSamples selectKuaishouItemCollectSamplesById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param requestMap 【请填写功能名称】
+     * @return 【请填写功能名称】集合
+     */
+    public List<KuaishouItemCollectSamples> selectKuaishouItemCollectSamplesList(Map<String,Object> requestMap);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param kuaishouItemCollectSamples 【请填写功能名称】
+     * @return 结果
+     */
+    public int insertKuaishouItemCollectSamples(KuaishouItemCollectSamples kuaishouItemCollectSamples);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param kuaishouItemCollectSamples 【请填写功能名称】
+     * @return 结果
+     */
+    public int updateKuaishouItemCollectSamples(KuaishouItemCollectSamples kuaishouItemCollectSamples);
+
+    /**
+     * 删除【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    public int deleteKuaishouItemCollectSamplesById(Long id);
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteKuaishouItemCollectSamplesByIds(Long[] ids);
+
+    List<JSONObject> getItemList(JSONArray itemIds);
+
+    List<JSONObject> promoterList(JSONArray promoterIds);
+
+    Integer check(@Param("itemId") Long itemId,@Param("promoterId") Long promoterId);
+
+    void batchAdd(@Param(value = "adds") List<KuaishouItemCollectSamples> adds);
+}
+

+ 28 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KuaishouItemListMapper.java

@@ -0,0 +1,28 @@
+package com.ruixuan.isc.mapper;
+
+
+import com.ruixuan.isc.entity.KuaishouItemList;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author ruoyi
+ * @date 2023-02-03
+ */
+public interface KuaishouItemListMapper {
+
+    List<KuaishouItemList> getItemList( Map<String, Object> requestMap);
+
+    KuaishouItemList getItemInfoByItemId(Long itemId);
+
+    void insertItem(KuaishouItemList kuaishouItemList);
+
+    int updateKuaishouItemList(KuaishouItemList kuaishouItemList);
+
+    int deleteKuaishouItemListByItemIds(Long[] itemIds);
+}
+

+ 8 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/IAccessTokenService.java

@@ -0,0 +1,8 @@
+package com.ruixuan.isc.service;
+
+public interface IAccessTokenService {
+
+    String getAccessToken();
+
+    void refreshAccessToken();
+}

+ 75 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/IKuaishouItemCollectSamplesService.java

@@ -0,0 +1,75 @@
+package com.ruixuan.isc.service;
+
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author ruoyi
+ * @date 2023-02-08
+ */
+public interface IKuaishouItemCollectSamplesService
+{
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    public KuaishouItemCollectSamples selectKuaishouItemCollectSamplesById(Long id);
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @return 【请填写功能名称】集合
+     */
+    public List<KuaishouItemCollectSamples> selectKuaishouItemCollectSamplesList(Map<String,Object> requestMap);
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param kuaishouItemCollectSamples 【请填写功能名称】
+     * @return 结果
+     */
+    public int insertKuaishouItemCollectSamples(KuaishouItemCollectSamples kuaishouItemCollectSamples);
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param kuaishouItemCollectSamples 【请填写功能名称】
+     * @return 结果
+     */
+    public int updateKuaishouItemCollectSamples(KuaishouItemCollectSamples kuaishouItemCollectSamples);
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的【请填写功能名称】主键集合
+     * @return 结果
+     */
+    public int deleteKuaishouItemCollectSamplesByIds(Long[] ids);
+
+    /**
+     * 删除【请填写功能名称】信息
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    public int deleteKuaishouItemCollectSamplesById(Long id);
+
+
+    JSONObject preview(Long userId, String nickName, JSONArray itemIds, JSONArray promoterIds);
+
+    void batchAdd(JSONArray temCollectSamples);
+
+    void subscribe(Long id, String courierNumber) throws Exception;
+}
+

+ 33 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/IKuaishouItemListService.java

@@ -0,0 +1,33 @@
+package com.ruixuan.isc.service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.kuaishou.merchant.open.api.KsMerchantApiException;
+import com.ruixuan.isc.entity.KuaishouItemList;
+
+import java.util.List;
+import java.util.Map;
+
+public interface IKuaishouItemListService {
+
+    List<KuaishouItemList> getItemList(Map<String, Object> requestMap);
+
+    /**
+     * 获取商品详情信息
+     *
+     * @param activityId
+     * @param itemId
+     * @param accessToken
+     * @return
+     */
+    JSONObject getItemDetail(Long activityId, Long itemId, String accessToken) throws Exception;
+
+    KuaishouItemList getItemInfoByItemId(Long itemId);
+
+    void insertItem(KuaishouItemList kuaishouItemList);
+
+
+    int updateKuaishouItemList(KuaishouItemList kuaishouItemList);
+
+    int deleteKuaishouItemListByItemIds(Long[] itemIds);
+}
+

+ 60 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/AccessTokenServiceImpl.java

@@ -0,0 +1,60 @@
+package com.ruixuan.isc.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.kuaishou.merchant.open.api.KsMerchantApiException;
+import com.kuaishou.merchant.open.api.client.oauth.OauthAccessTokenKsClient;
+import com.kuaishou.merchant.open.api.client.oauth.OauthCredentialKsClient;
+import com.kuaishou.merchant.open.api.response.oauth.KsAccessTokenResponse;
+import com.kuaishou.merchant.open.api.response.oauth.KsCredentialResponse;
+import com.ruixuan.common.utils.RedisUtil;
+import com.ruixuan.isc.mapper.AccessTokenMapper;
+import com.ruixuan.isc.service.IAccessTokenService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class AccessTokenServiceImpl implements IAccessTokenService {
+    @Autowired
+    private AccessTokenMapper accessTokenMapper;
+
+
+    @Override
+    public String getAccessToken() {
+        return accessTokenMapper.getAccessToken();
+    }
+
+    @Override
+    public void refreshAccessToken() {
+        String appKey = "ks665688320292774929";
+        String appSecret = "3qAsvwcUYuHFVpxJ_OTSFg";
+        String grantCode = "86e73c07a93aa4434335c4d3e9a1773d6bcb573ec65b965a7251749c8b856990f845a095";
+        //    String serverRestUrl = "open.distribution.investment.activity.item.detail";
+
+/*        OauthAccessTokenKsClient oauthAccessTokenKsClient
+                = new OauthAccessTokenKsClient(appKey, appSecret, serverRestUrl);*/
+
+        OauthAccessTokenKsClient oauthAccessTokenKsClient
+                = new OauthAccessTokenKsClient(appKey, appSecret);
+
+// 生成AccessToken
+        try {
+            KsAccessTokenResponse response
+                    = oauthAccessTokenKsClient.getAccessToken(grantCode);
+            System.out.println(JSON.toJSONString(response));
+        } catch (KsMerchantApiException e) {
+            e.printStackTrace();
+        }
+
+        String refreshToken = "your app refreshToken";
+
+// 刷新AccessToken
+      /*  try {
+            KsAccessTokenResponse response
+                    = oauthAccessTokenKsClient.refreshAccessToken(refreshToken);
+            System.out.println(JSON.toJSONString(response));
+        } catch (KsMerchantApiException e) {
+            e.printStackTrace();
+        }*/
+    }
+}

+ 224 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KuaishouItemCollectSamplesServiceImpl.java

@@ -0,0 +1,224 @@
+package com.ruixuan.isc.service.impl;
+
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
+import com.kuaidi100.sdk.api.Subscribe;
+import com.kuaidi100.sdk.contant.ApiInfoConstant;
+import com.kuaidi100.sdk.contant.CompanyConstant;
+import com.kuaidi100.sdk.core.IBaseClient;
+import com.kuaidi100.sdk.request.SubscribeParam;
+import com.kuaidi100.sdk.request.SubscribeParameters;
+import com.kuaidi100.sdk.request.SubscribeReq;
+import com.ruixuan.common.utils.Check;
+import com.ruixuan.common.utils.DateUtils;
+import com.ruixuan.isc.entity.KuaishouItemCollectSamples;
+import com.ruixuan.isc.mapper.KuaishouItemCollectSamplesMapper;
+import com.ruixuan.isc.service.IKuaishouItemCollectSamplesService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-02-08
+ */
+@Service
+public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemCollectSamplesService {
+    @Autowired
+    private KuaishouItemCollectSamplesMapper kuaishouItemCollectSamplesMapper;
+
+    /**
+     * 查询【请填写功能名称】
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public KuaishouItemCollectSamples selectKuaishouItemCollectSamplesById(Long id) {
+        return kuaishouItemCollectSamplesMapper.selectKuaishouItemCollectSamplesById(id);
+    }
+
+    /**
+     * 查询【请填写功能名称】列表
+     *
+     * @param requestMap 【请填写功能名称】
+     * @return 【请填写功能名称】
+     */
+    @Override
+    public List<KuaishouItemCollectSamples> selectKuaishouItemCollectSamplesList(Map<String, Object> requestMap) {
+        return kuaishouItemCollectSamplesMapper.selectKuaishouItemCollectSamplesList(requestMap);
+    }
+
+    /**
+     * 新增【请填写功能名称】
+     *
+     * @param kuaishouItemCollectSamples 【请填写功能名称】
+     * @return 结果
+     */
+    @Override
+    public int insertKuaishouItemCollectSamples(KuaishouItemCollectSamples kuaishouItemCollectSamples) {
+        kuaishouItemCollectSamples.setCreateTime(DateUtils.getNowDate());
+        return kuaishouItemCollectSamplesMapper.insertKuaishouItemCollectSamples(kuaishouItemCollectSamples);
+    }
+
+    /**
+     * 修改【请填写功能名称】
+     *
+     * @param kuaishouItemCollectSamples 【请填写功能名称】
+     * @return 结果
+     */
+    @Override
+    public int updateKuaishouItemCollectSamples(KuaishouItemCollectSamples kuaishouItemCollectSamples) {
+        kuaishouItemCollectSamples.setUpdateTime(DateUtils.getNowDate());
+        return kuaishouItemCollectSamplesMapper.updateKuaishouItemCollectSamples(kuaishouItemCollectSamples);
+    }
+
+    /**
+     * 批量删除【请填写功能名称】
+     *
+     * @param ids 需要删除的【请填写功能名称】主键
+     * @return 结果
+     */
+    @Override
+    public int deleteKuaishouItemCollectSamplesByIds(Long[] ids) {
+        return kuaishouItemCollectSamplesMapper.deleteKuaishouItemCollectSamplesByIds(ids);
+    }
+
+    /**
+     * 删除【请填写功能名称】信息
+     *
+     * @param id 【请填写功能名称】主键
+     * @return 结果
+     */
+    @Override
+    public int deleteKuaishouItemCollectSamplesById(Long id) {
+        return kuaishouItemCollectSamplesMapper.deleteKuaishouItemCollectSamplesById(id);
+    }
+
+    @Override
+    public JSONObject preview(Long userId, String nickName, JSONArray itemIds, JSONArray promoterIds) {
+        JSONObject previewJson = new JSONObject();
+        List<JSONObject> itemList = kuaishouItemCollectSamplesMapper.getItemList(itemIds);
+        Map<Long, JSONObject> itemMap = new HashMap<>();
+        for (int i = 0; i < itemList.size(); i++) {
+            JSONObject itemJson = itemList.get(i);
+            itemMap.put(itemJson.getLong("itemId"), itemJson);
+        }
+        Map<Long, JSONObject> promoterMap = new HashMap<>();
+        List<JSONObject> promoterList = kuaishouItemCollectSamplesMapper.promoterList(promoterIds);
+        for (int i = 0; i < promoterList.size(); i++) {
+            JSONObject promoterJson = promoterList.get(i);
+            promoterMap.put(promoterJson.getLong("promoterId"), promoterJson);
+        }
+        Integer sampleReceivedCount = 0;
+        List<JSONObject> samples = new ArrayList<>();
+        for (int i = 0; i < itemIds.size(); i++) {
+            Long itemId = itemIds.getLong(i);
+            JSONObject itemJson = itemMap.get(itemId);
+            for (int j = 0; j < promoterIds.size(); j++) {
+                Long promoterId = promoterIds.getLong(j);
+                Integer count = kuaishouItemCollectSamplesMapper.check(itemId, promoterId);
+                if (count > 0) {
+                    sampleReceivedCount++;
+                    continue;
+                }
+                JSONObject sampleJson = new JSONObject();
+                sampleJson.put("itemId", itemJson.getLong("itemId"));
+                sampleJson.put("itemTitle", itemJson.getLong("itemTitle"));
+                sampleJson.put("itemPrice", itemJson.getLong("itemPrice"));
+                sampleJson.put("itemMgUrl", itemJson.getString("itemMgUrl"));
+                sampleJson.put("commissionRate", itemJson.getLong("commissionRate"));
+                sampleJson.put("regimentalPromotion", itemJson.getLong("regimentalPromotion"));
+                sampleJson.put("itemCreateId", itemJson.getLong("userId"));
+                sampleJson.put("itemCreateName", itemJson.getString("userName"));
+                sampleJson.put("collectSampleId", userId);
+                sampleJson.put("collectSampleName", nickName);
+                JSONObject promoterJson = promoterMap.get(promoterId);
+                sampleJson.put("promoterId", promoterJson.getLong("promoterId"));
+                sampleJson.put("promoterNickName", promoterJson.getString("promoterNickName"));
+                sampleJson.put("promoterPhone", promoterJson.getString("promoterPhone"));
+                sampleJson.put("promoterAddress", promoterJson.getString("promoterAddress"));
+                sampleJson.put("promoterUrl", promoterJson.getString("promoterUrl"));
+                sampleJson.put("collectSampleStatus", 1);
+                sampleJson.put("collectSampleDesc", "待招商审核");
+                samples.add(sampleJson);
+            }
+            previewJson.put("sampleReceivedCount", sampleReceivedCount);
+            previewJson.put("samples", samples);
+        }
+
+
+        return previewJson;
+    }
+
+    @Override
+    public void batchAdd(JSONArray temCollectSamples) {
+
+        List<KuaishouItemCollectSamples> adds = new ArrayList<>();
+        for (int i = 0; i < temCollectSamples.size(); i++) {
+            JSONObject sampleJson = temCollectSamples.getJSONObject(i);
+            KuaishouItemCollectSamples sample = new KuaishouItemCollectSamples();
+            sample.setItemId(sampleJson.getLong("item_id"));
+            sample.setItemTitle(sampleJson.getString("item_title"));
+            sample.setItemPrice(sampleJson.getLong("item_price"));
+            sample.setItemMgUrl(sampleJson.getString("item_mg_url"));
+            sample.setItemDesc(sampleJson.getString("item_desc"));
+            sample.setCommissionRate(sampleJson.getLong("commission_rate"));
+            sample.setRegimentalPromotion(sampleJson.getLong("regimental_promotion"));
+            sample.setSampleCount(sampleJson.getInteger("sample_count"));
+            sample.setSampleRequirement(sampleJson.getString("sample_requirement"));
+            sample.setItemId(sampleJson.getLong("item_create_id"));
+            sample.setItemCreateName(sampleJson.getString("item_create_name"));
+            sample.setCollectSampleId(sampleJson.getLong("collect_sample_id"));
+            sample.setCollectSampleName(sampleJson.getString("collect_sample_name"));
+            sample.setPartnerRecommendText(sampleJson.getString("partner_recommend_text"));
+            sample.setPromoterId(sampleJson.getLong("promoter_id"));
+            sample.setPromoterPhone(sampleJson.getString("promoter_phone"));
+            sample.setPromoterAddress(sampleJson.getString("promoter_address"));
+            sample.setCollectSampleStatus(sampleJson.getInteger("collect_sample_status"));
+            sample.setCollectSampleDesc(sampleJson.getString("collect_sample_desc"));
+            adds.add(sample);
+        }
+        if(!Check.isNull(adds)){
+            kuaishouItemCollectSamplesMapper.batchAdd(adds);
+        }
+
+    }
+
+    @Override
+    public void subscribe(Long id, String courierNumber) throws Exception {
+
+        KuaishouItemCollectSamples samples = kuaishouItemCollectSamplesMapper.selectKuaishouItemCollectSamplesById(id);
+
+        SubscribeParameters subscribeParameters = new SubscribeParameters();
+        subscribeParameters.setCallbackurl("http://ruixuan.api.tjyourong.com.cn/itemCollectSamples/callback");
+        subscribeParameters.setPhone(samples.getPromoterPhone());
+
+        SubscribeParam subscribeParam = new SubscribeParam();
+        subscribeParam.setParameters(subscribeParameters);
+        subscribeParam.setCompany(CompanyConstant.ST);
+        subscribeParam.setNumber(courierNumber);
+        subscribeParam.setKey("BPEQUJxB9244");
+
+        SubscribeReq subscribeReq = new SubscribeReq();
+        subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
+        subscribeReq.setParam(new Gson().toJson(subscribeParam));
+
+        IBaseClient subscribe = new Subscribe();
+        System.out.println(subscribe.execute(subscribeReq));
+    }
+
+
+
+
+}
+

+ 142 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KuaishouItemListServiceImpl.java

@@ -0,0 +1,142 @@
+package com.ruixuan.isc.service.impl;
+
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.kuaishou.merchant.open.api.KsMerchantApiException;
+import com.kuaishou.merchant.open.api.client.AccessTokenKsMerchantClient;
+import com.kuaishou.merchant.open.api.common.utils.GsonUtils;
+import com.kuaishou.merchant.open.api.request.distribution.OpenDistributionInvestmentActivityInvalidItemListRequest;
+import com.kuaishou.merchant.open.api.request.distribution.OpenDistributionInvestmentActivityItemDetailRequest;
+import com.kuaishou.merchant.open.api.response.distribution.OpenDistributionInvestmentActivityInvalidItemListResponse;
+import com.kuaishou.merchant.open.api.response.distribution.OpenDistributionInvestmentActivityItemDetailResponse;
+import com.ruixuan.common.utils.Check;
+import com.ruixuan.isc.constants.KuaiShouConstants;
+import com.ruixuan.isc.entity.KuaishouItemList;
+import com.ruixuan.isc.mapper.KuaishouItemListMapper;
+import com.ruixuan.isc.service.IKuaishouItemListService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2023-02-03
+ */
+@Service
+public class KuaishouItemListServiceImpl implements IKuaishouItemListService {
+    @Autowired
+    private KuaishouItemListMapper kuaishouItemListMapper;
+
+
+    @Override
+    public List<KuaishouItemList> getItemList(Map<String, Object> requestMap) {
+        return kuaishouItemListMapper.getItemList(requestMap);
+    }
+
+    @Override
+    public JSONObject getItemDetail(Long activityId, Long itemId, String accessToken) throws Exception {
+        JSONObject returnJson = new JSONObject();
+        AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(KuaiShouConstants.KFX_URL, KuaiShouConstants.APP_KEY, KuaiShouConstants.SIGN_SECRET);
+        OpenDistributionInvestmentActivityItemDetailRequest request = new OpenDistributionInvestmentActivityItemDetailRequest();
+        request.setAccessToken(accessToken);
+        request.setApiMethodVersion(1L);
+        request.setActivityId(activityId);
+        List<Long> item = new ArrayList<>();
+        item.add(itemId);
+        request.setItemId(item);
+        OpenDistributionInvestmentActivityItemDetailResponse response = client.execute(request);
+        JSONObject itemJson = JSONObject.parseObject(GsonUtils.toJSON(response));
+        if (Check.isNull(itemJson)) {
+            throw new Exception("获取商品信息出错,请重新提交");
+        }
+        Integer code = itemJson.getInteger("code");
+        Integer subCode = itemJson.getInteger("sub_code");
+        if (code == 1 && subCode == 1) {
+            JSONArray data = itemJson.getJSONArray("data");
+            if (Check.isNull(data)) {
+                returnJson.put("code", -1);
+                returnJson.put("message", "数据查询失败");
+                return returnJson;
+            }
+            JSONObject itemJSon = data.getJSONObject(0);
+            returnJson.put("judgeStatus", 1);
+            returnJson.put("itemJSon", itemJSon);
+            returnJson.put("code", 0);
+            returnJson.put("message", "查询成功");
+        } else if (code == 807000 && (subCode == 24101 || subCode == 24214)) { // 商品下线
+            returnJson = getInvaliItemDetail(activityId, itemId, accessToken);
+        } else {
+            returnJson.put("code", -1);
+            returnJson.put("message", "数据查询失败");
+        }
+        return returnJson;
+    }
+
+    @Override
+    public KuaishouItemList getItemInfoByItemId(Long itemId) {
+        return kuaishouItemListMapper.getItemInfoByItemId(itemId);
+    }
+
+    @Override
+    public void insertItem(KuaishouItemList kuaishouItemList) {
+        kuaishouItemListMapper.insertItem(kuaishouItemList);
+    }
+
+    @Override
+    public int updateKuaishouItemList(KuaishouItemList kuaishouItemList) {
+        return kuaishouItemListMapper.updateKuaishouItemList(kuaishouItemList);
+    }
+
+    @Override
+    public int deleteKuaishouItemListByItemIds(Long[] itemIds) {
+        return kuaishouItemListMapper.deleteKuaishouItemListByItemIds(itemIds);
+    }
+
+
+    private JSONObject getInvaliItemDetail(Long activityId, Long itemId, String accessToken) throws Exception {
+        JSONObject returnJson = new JSONObject();
+        AccessTokenKsMerchantClient client = new AccessTokenKsMerchantClient(KuaiShouConstants.KFX_URL, KuaiShouConstants.APP_KEY, KuaiShouConstants.SIGN_SECRET);
+        OpenDistributionInvestmentActivityInvalidItemListRequest request = new OpenDistributionInvestmentActivityInvalidItemListRequest();
+        request.setAccessToken(accessToken);
+        request.setApiMethodVersion(1L);
+        request.setOffset("0");
+        request.setItemId(itemId);
+        request.setActivityId(activityId);
+        request.setLimit(10);
+        request.setCloseType(0);
+        OpenDistributionInvestmentActivityInvalidItemListResponse response = client.execute(request);
+        JSONObject itemJson = JSONObject.parseObject(GsonUtils.toJSON(response));
+        if (Check.isNull(itemJson)) {
+            returnJson.put("code", -1);
+            returnJson.put("message", "获取商品信息出错,请重新提交");
+            return returnJson;
+        }
+        Integer code = itemJson.getInteger("code");
+        Integer subCode = itemJson.getInteger("sub_code");
+
+        if (code == 1 && subCode == 1) {
+            JSONObject data = itemJson.getJSONObject("data");
+            JSONArray array = data.getJSONArray("item");
+            if (!Check.isNull(array)) {
+                returnJson = array.getJSONObject(0);
+                returnJson.put("judgeStatus", 2);
+                returnJson.put("code", 0);
+                returnJson.put("message", "查询成功");
+            }
+
+        } else {
+            returnJson.put("code", 0);
+            returnJson.put("message", "查询失败");
+        }
+        return returnJson;
+    }
+
+}
+

二進制
ruixuan-live/src/main/resources/lib/kuaishou-merchant-open-sdk-release_open_kwaishop_sdk-1.0.2546.jar


+ 11 - 0
ruixuan-live/src/main/resources/mapper/isc/AccessTokenMapper.xml

@@ -0,0 +1,11 @@
+<?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.ruixuan.isc.mapper.AccessTokenMapper">
+
+
+    <select id="getAccessToken" resultType="java.lang.String">
+        select  access_token from kuaishou_access_token limit 1
+    </select>
+</mapper>

+ 282 - 0
ruixuan-live/src/main/resources/mapper/isc/KuaishouItemCollectSamplesMapper.xml

@@ -0,0 +1,282 @@
+<?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.ruixuan.isc.mapper.KuaishouItemCollectSamplesMapper">
+
+    <resultMap type="com.ruixuan.isc.entity.KuaishouItemCollectSamples" id="KuaishouItemCollectSamplesResult">
+        <result property="id" column="id"/>
+        <result property="itemId" column="item_id"/>
+        <result property="itemTitle" column="item_title"/>
+        <result property="itemPrice" column="item_price"/>
+        <result property="itemMgUrl" column="item_mg_url"/>
+        <result property="itemDesc" column="item_desc"/>
+        <result property="commissionRate" column="commission_rate"/>
+        <result property="regimentalPromotion" column="regimental_promotion"/>
+        <result property="sampleCount" column="sample_count"/>
+        <result property="sampleRequirement" column="sample_requirement"/>
+        <result property="itemCreateId" column="item_create_id"/>
+        <result property="itemCreateName" column="item_create_name"/>
+        <result property="collectSampleId" column="collect_sample_id"/>
+        <result property="collectSampleName" column="collect_sample_name"/>
+        <result property="partnerRecommendText" column="partner_recommend_text"/>
+        <result property="promoterId" column="promoter_id"/>
+        <result property="promoterNickName" column="promoter_nick_name"/>
+        <result property="promoterUrl" column="promoter_url"/>
+        <result property="promoterPhone" column="promoter_phone"/>
+        <result property="promoterAddress" column="promoter_address"/>
+        <result property="courierNumber" column="courier_number"/>
+        <result property="taskFileUrl" column="task_file_url"/>
+        <result property="collectSampleStatus" column="collect_sample_status"/>
+        <result property="collectSampleDesc" column="collect_sample_desc"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateTime" column="update_time"/>
+    </resultMap>
+
+    <sql id="selectKuaishouItemCollectSamplesVo">
+        select id, item_id, item_title, item_price, item_mg_url, item_desc, commission_rate, regimental_promotion, sample_count, sample_requirement, item_create_id, item_create_name, collect_sample_id, collect_sample_name, partner_recommend_text, promoter_id, promoter_nick_name,promoter_url, promoter_phone, promoter_address, courier_number, task_file_url, collect_sample_status, collect_sample_desc, create_time, update_time from kuaishou_item_collect_samples
+    </sql>
+
+    <select id="selectKuaishouItemCollectSamplesList" parameterType="com.ruixuan.isc.entity.KuaishouItemCollectSamples"
+            resultMap="KuaishouItemCollectSamplesResult">
+        <include refid="selectKuaishouItemCollectSamplesVo"/>
+        <where>
+            <if test="itemId != null ">and item_id = #{itemId}</if>
+            <if test="promoterId != null ">and promoter_id = #{promoterId}</if>
+            <if test="collectSampleStatus != null ">and collect_sample_status = #{collectSampleStatus}</if>
+            <if test="itemCreateId != null and itemCreateId != ''">
+                and item_create_id = #{itemCreateId}
+            </if>
+            <if test='itemCreateIds != null and itemCreateIds.size() > 0'>
+                AND item_create_id in
+                <foreach collection="itemCreateId" item="item" separator=","
+                         open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="collectSampleId != null and collectSampleId != ''">
+                and collect_sample_id = #{collectSampleId}
+            </if>
+            <if test='collectSampleIds != null and collectSampleIds.size() > 0'>
+                AND collect_sample_id in
+                <foreach collection="collectSampleIds" item="item" separator=","
+                         open="(" close=")">
+                    #{item}
+                </foreach>
+            </if>
+
+
+        </where>
+    </select>
+
+    <select id="selectKuaishouItemCollectSamplesById" parameterType="java.lang.Long"
+            resultMap="KuaishouItemCollectSamplesResult">
+        <include refid="selectKuaishouItemCollectSamplesVo"/>
+        where id = #{id}
+    </select>
+    <select id="getItemList" resultType="com.alibaba.fastjson.JSONObject"
+            parameterType="com.alibaba.fastjson.JSONArray">
+        select
+        item_id as 'itemId',
+        item_title as 'itemTitle',
+        item_price as 'itemPrice',
+        item_mg_url as 'itemMgUrl',
+        regimental_promotion as 'regimentalPromotion',
+        user_id as 'userId',
+        user_name as 'userName'
+        from kuaishou_item_list
+        where 1 =1
+        <if test='itemIds != null and itemIds.size() > 0'>
+            AND item_id in
+            <foreach collection="itemIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        group item_id
+
+    </select>
+    <select id="promoterList" resultType="com.alibaba.fastjson.JSONObject"
+            parameterType="com.alibaba.fastjson.JSONArray">
+        select
+        promoter_id as 'promoterId',
+        promoter_nick_name as 'promoterNickName',
+        promoter_url as 'promoterUrl',
+        promoter_address as 'promoterAddress',
+        from kuaishou_promoter
+        where 1 =1
+        <if test='itemIds != null and itemIds.size() > 0'>
+            AND promoter_id in
+            <foreach collection="promoterIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        group promoter_id
+    </select>
+    <select id="check" resultType="java.lang.Integer">
+        select count(1)  from kuaishou_item_collect_samples
+        where item_id = #{itemId}
+        and promoter_id = #{promoterId}
+
+    </select>
+
+
+    <insert id="insertKuaishouItemCollectSamples" parameterType="com.ruixuan.isc.entity.KuaishouItemCollectSamples">
+        insert into kuaishou_item_collect_samples
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="itemId != null">item_id,</if>
+            <if test="itemTitle != null">item_title,</if>
+            <if test="itemPrice != null">item_price,</if>
+            <if test="itemMgUrl != null">item_mg_url,</if>
+            <if test="itemDesc != null">item_desc,</if>
+            <if test="commissionRate != null">commission_rate,</if>
+            <if test="regimentalPromotion != null">regimental_promotion,</if>
+            <if test="sampleCount != null">sample_count,</if>
+            <if test="sampleRequirement != null">sample_requirement,</if>
+            <if test="itemCreateId != null">item_create_id,</if>
+            <if test="itemCreateName != null">item_create_name,</if>
+            <if test="collectSampleId != null">collect_sample_id,</if>
+            <if test="collectSampleName != null">collect_sample_name,</if>
+            <if test="partnerRecommendText != null">partner_recommend_text,</if>
+            <if test="promoterId != null">promoter_id,</if>
+            <if test="promoterNickName != null">promoter_nick_name,</if>
+            <if test="promoterUrl != null">promoter_url,</if>
+            <if test="promoterPhone != null">promoter_phone,</if>
+            <if test="promoterAddress != null">promoter_address,</if>
+            <if test="courierNumber != null">courier_number,</if>
+            <if test="taskFileUrl != null">task_file_url,</if>
+            <if test="collectSampleStatus != null">collect_sample_status,</if>
+            <if test="collectSampleDesc != null">collect_sample_desc,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateTime != null">update_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="itemId != null">#{itemId},</if>
+            <if test="itemTitle != null">#{itemTitle},</if>
+            <if test="itemPrice != null">#{itemPrice},</if>
+            <if test="itemMgUrl != null">#{itemMgUrl},</if>
+            <if test="itemDesc != null">#{itemDesc},</if>
+            <if test="commissionRate != null">#{commissionRate},</if>
+            <if test="regimentalPromotion != null">#{regimentalPromotion},</if>
+            <if test="sampleCount != null">#{sampleCount},</if>
+            <if test="sampleRequirement != null">#{sampleRequirement},</if>
+            <if test="itemCreateId != null">#{itemCreateId},</if>
+            <if test="itemCreateName != null">#{itemCreateName},</if>
+            <if test="collectSampleId != null">#{collectSampleId},</if>
+            <if test="collectSampleName != null">#{collectSampleName},</if>
+            <if test="partnerRecommendText != null">#{partnerRecommendText},</if>
+            <if test="promoterId != null">#{promoterId},</if>
+            <if test="promoterNickName != null">#{promoterNickName},</if>
+            <if test="promoterUrl != null">#{promoterUrl},</if>
+            <if test="promoterPhone != null">#{promoterPhone},</if>
+            <if test="promoterAddress != null">#{promoterAddress},</if>
+            <if test="courierNumber != null">#{courierNumber},</if>
+            <if test="taskFileUrl != null">#{taskFileUrl},</if>
+            <if test="collectSampleStatus != null">#{collectSampleStatus},</if>
+            <if test="collectSampleDesc != null">#{collectSampleDesc},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+        </trim>
+    </insert>
+    <insert id="batchAdd">
+        insert into kuaishou_item_collect_samples(
+        id,
+        item_id,
+        item_title,
+        item_price,
+        item_mg_url,
+        item_desc,
+        commission_rate,
+        regimental_promotion,
+        sample_count,
+        sample_requirement,
+        item_create_id,
+        item_create_name,
+        collect_sample_id,
+        collect_sample_name,
+        partner_recommend_text,
+        promoter_id,
+        promoter_nick_name,
+        promoter_phone,
+        promoter_address,
+        courier_number,
+        task_file_url,
+        collect_sample_status,
+        collect_sample_desc
+        )
+        values
+        <foreach collection="adds" item="add" separator=",">
+            (
+            #{add.itemId},
+            #{add.itemTitle},
+            #{add.itemPrice},
+            #{add.itemMgUrl},
+            #{add.itemDesc},
+            #{add.commissionRate},
+            #{add.regimentalOromotion},
+            #{add.sampleCount},
+            #{add.sampleRequirement},
+            #{add.itemCreateId},
+            #{add.itemCreateName},
+            #{add.collectSampleId},
+            #{add.collectSampleName},
+            #{add.partnerRecommendText},
+            #{add.promoterId},
+            #{add.promoterNickName},
+            #{add.promoterPhone},
+            #{add.promoterAddress},
+            #{add.courierNumber},
+            #{add.taskFileUrl},
+            #{add.collectSampleStatus},
+            #{add.collectSampleDesc}
+            )
+        </foreach>
+
+    </insert>
+
+    <update id="updateKuaishouItemCollectSamples" parameterType="com.ruixuan.isc.entity.KuaishouItemCollectSamples">
+        update kuaishou_item_collect_samples
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="itemId != null">item_id = #{itemId},</if>
+            <if test="itemTitle != null">item_title = #{itemTitle},</if>
+            <if test="itemPrice != null">item_price = #{itemPrice},</if>
+            <if test="itemMgUrl != null">item_mg_url = #{itemMgUrl},</if>
+            <if test="itemDesc != null">item_desc = #{itemDesc},</if>
+            <if test="commissionRate != null">commission_rate = #{commissionRate},</if>
+            <if test="regimentalPromotion != null">regimental_promotion = #{regimentalPromotion},</if>
+            <if test="sampleCount != null">sample_count = #{sampleCount},</if>
+            <if test="sampleRequirement != null">sample_requirement = #{sampleRequirement},</if>
+            <if test="itemCreateId != null">item_create_id = #{itemCreateId},</if>
+            <if test="itemCreateName != null">item_create_name = #{itemCreateName},</if>
+            <if test="collectSampleId != null">collect_sample_id = #{collectSampleId},</if>
+            <if test="collectSampleName != null">collect_sample_name = #{collectSampleName},</if>
+            <if test="partnerRecommendText != null">partner_recommend_text = #{partnerRecommendText},</if>
+            <if test="promoterId != null">promoter_id = #{promoterId},</if>
+            <if test="promoterNickName != null">promoter_nick_name = #{promoterNickName},</if>
+            <if test="promoterUrl != null">promoter_url = #{promoterUrl},</if>
+            <if test="promoterPhone != null">promoter_phone = #{promoterPhone},</if>
+            <if test="promoterAddress != null">promoter_address = #{promoterAddress},</if>
+            <if test="courierNumber != null">courier_number = #{courierNumber},</if>
+            <if test="taskFileUrl != null">task_file_url = #{taskFileUrl},</if>
+            <if test="collectSampleStatus != null">collect_sample_status = #{collectSampleStatus},</if>
+            <if test="collectSampleDesc != null">collect_sample_desc = #{collectSampleDesc},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteKuaishouItemCollectSamplesById" parameterType="java.lang.Long">
+        delete from kuaishou_item_collect_samples where id = #{id}
+    </delete>
+
+    <delete id="deleteKuaishouItemCollectSamplesByIds" parameterType="java.lang.String">
+        delete from kuaishou_item_collect_samples where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

文件差異過大導致無法顯示
+ 222 - 0
ruixuan-live/src/main/resources/mapper/isc/KuaishouItemListMapper.xml