Browse Source

供应链

yumeng 11 months ago
parent
commit
cd05db3da6

+ 272 - 19
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KwaixiaodianItemGetController.java

@@ -4,9 +4,12 @@ import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageInfo;
 import com.ruixuan.common.constant.HttpStatus;
 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.utils.Check;
 import com.ruixuan.common.utils.DateUtils;
+import com.ruixuan.data.utils.ExportExcelUtils;
 import com.ruixuan.isc.entity.KuaishouAccessToken;
 import com.ruixuan.isc.entity.KuaishouRewardBaseInfo;
 import com.ruixuan.isc.entity.KwaixiaodianItemGet;
@@ -21,12 +24,18 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 /**
@@ -91,8 +100,6 @@ public class KwaixiaodianItemGetController extends BaseController {
             if (!Check.isNull(itemType)) {
                 requestMap.put("itemType", itemType);
             }
-
-
             startPage();
             List<KwaixiaodianItemGet> list = kwaixiaodianItemGetService.getItemList(requestMap);
             rspData.setCode(HttpStatus.SUCCESS);
@@ -108,16 +115,67 @@ public class KwaixiaodianItemGetController extends BaseController {
     }
 
 
+    @GetMapping("/getShopList")
+    public JSONObject getShopList(Long userId) {
+
+        JSONObject returnJson = new JSONObject();
+        try {
+            if (Check.isNull(userId)) {
+                throw new Exception("请传入用户ID");
+            }
+            String roleId = sysRoleService.getRoleBYUserId(userId);
+            Long companyId = null;
+            if ("admin".equals(roleId)) { // 管理员查看所有
+                companyId = null;
+            } else {
+                companyId = kwaixiaodianItemGetService.getCompanyId(userId);
+            }
+            List<JSONObject> shopList = kwaixiaodianItemGetService.getShopList(companyId);
+            returnJson.put("code", 200);
+            returnJson.put("success", true);
+            returnJson.put("data", shopList);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            returnJson.put("code", 500);
+            returnJson.put("success", false);
+            returnJson.put("message", e.getMessage());
+        }
+        return returnJson;
+    }
+
+
     /**
      * 获取商品详情(open.item.get)
      * https://open.kwaixiaodian.com/zone/new/docs/api?name=open.item.get&version=1
      */
-    @GetMapping("/querykwaiItmInfo")
+    @PostMapping("/querykwaiItmInfo")
     @ApiOperation(value = "获kwai商品详情")
-    public JSONObject querykwaiItmInfo(@ApiParam("商品ID") @RequestParam(value = "itemId", required = false) Long itemId, @ApiParam("店铺ID") @RequestParam(value = "shopId", required = false) String shopId, @ApiParam("用户ID") @RequestParam(value = "userId", required = false) Long userId, @ApiParam("用户") @RequestParam(value = "userName", required = false) String userName, @ApiParam("用户") @RequestParam(value = "itemType", required = false) Integer itemType) {
+    public JSONObject querykwaiItmInfo(@RequestBody JSONObject requestJson) {
 
         JSONObject returnJson = new JSONObject();
         try {
+            Long itemId = requestJson.getLong("itemId");
+            if (Check.isNull(itemId)) {
+                throw new Exception("未传入商品ID");
+            }
+
+            String shopId = requestJson.getString("shopId");
+            if (Check.isNull(shopId)) {
+                throw new Exception("未传入小店ID");
+            }
+            Long userId = requestJson.getLong("userId");
+            if (Check.isNull(userId)) {
+                throw new Exception("未传入用户ID");
+            }
+            Integer itemType = requestJson.getInteger("itemType");
+            if (Check.isNull(itemType)) {
+                throw new Exception("未选择选品方式");
+            }
+            SysUser sysUser = sysUserService.selectUserById(userId);
+            if (Check.isNull(sysUser)) {
+                throw new Exception("用户信息为空");
+            }
             KuaishouAccessToken token = accessTokenService.getKWaiAccessToken(shopId);
             if (Check.isNull(token)) {
                 throw new Exception("未获取到授权信息,请联系管理员");
@@ -128,27 +186,214 @@ public class KwaixiaodianItemGetController extends BaseController {
                 throw new Exception("此商品已绑定");
             }
 
-            JSONObject jsonObject = kwaixiaodianItemGetService.querykwaiItmInfo(token, itemId, shopId, userId, userName, itemType);
+            JSONObject jsonObject = kwaixiaodianItemGetService.querykwaiItmInfo(token, itemId, shopId, userId, sysUser.getNickName(), itemType);
             if (jsonObject.getBoolean("success")) {
                 returnJson.put("code", 200);
+                returnJson.put("success", true);
                 returnJson.put("message", "新增商品成功");
             } else {
                 returnJson.put("code", 500);
+                returnJson.put("success", false);
                 returnJson.put("message", jsonObject.getString("message"));
             }
 
         } catch (Exception e) {
             e.printStackTrace();
             returnJson.put("code", 500);
+            returnJson.put("success", false);
             returnJson.put("message", e.getMessage());
         }
         return returnJson;
     }
 
-    /**
-     * 获取订单列表(open.order.cursor.list)
-     * https://open.kwaixiaodian.com/zone/new/docs/api?name=open.order.cursor.list&version=1
-     */
+
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
+        return toAjax(kwaixiaodianItemGetService.deleteById(ids));
+    }
+
+
+    @GetMapping("/queryItemReport")
+    public TableDataInfo getDingPanMentorBusinessList(Long userId, String startDate, String endDate, String shopId, Long itemId, String itemTitle) {
+
+        TableDataInfo rspData = new TableDataInfo();
+        try {
+            Map<String, Object> requestMap = new HashMap<>();
+            if (Check.isNull(userId)) {
+                throw new Exception("请传入用户id");
+            }
+            if (Check.isNull(startDate)) {
+                throw new Exception("请传入开始日期");
+            }
+            if (Check.isNull(endDate)) {
+                throw new Exception("请传入结束日期");
+            }
+
+            String roleId = sysRoleService.getRoleBYUserId(userId);
+            if ("admin".equals(roleId)) { // 管理员查看所有
+
+            } else if ("industry_admin".equals(roleId)) { // 供应链管理员查看所属公司
+                Long companyId = kwaixiaodianItemGetService.getCompanyId(userId);
+                if (Check.isNull(companyId)) {
+                    throw new Exception("此用户未查询到归属公司");
+                }
+                requestMap.put("companyId", companyId);
+            } else if ("industry_sale_manager".equals(roleId) || "industry_courtship_manager".equals(roleId) || "industry_purchase_manager".equals(roleId)) { // 经理角色查看部门下所有成员数据
+                List<Long> userIds = kwaixiaodianItemGetService.getUserIds(userId);
+                if (Check.isNull(userIds)) {
+                    throw new Exception("此用户未查询到部门成员信息");
+                }
+                requestMap.put("userIds", userIds);
+            } else if ("industry_sale".equals(roleId) || "industry_purchase".equals(roleId) || "industry_courtship".equals(roleId)) { // 销售  采购 招商 查看自己的数据
+                List<Long> userIds = new ArrayList<>();
+                userIds.add(userId);
+                requestMap.put("userIds", userIds);
+            }
+
+            if (!Check.isNull(shopId)) {
+                requestMap.put("shopId", shopId);
+            }
+
+            if (!Check.isNull(itemId)) {
+                requestMap.put("itemId", itemId);
+            }
+
+            if (!Check.isNull(itemTitle)) {
+                requestMap.put("itemTitle", itemTitle);
+            }
+
+
+            Long start = DateUtils.strDateToInt(startDate);
+            Long end = DateUtils.strDateToInt(endDate);
+            requestMap.put("start", start);
+            requestMap.put("end", end);
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+            int differDay = DateUtils.differentDaysByMillisecond(simpleDateFormat.parse(startDate), simpleDateFormat.parse(endDate));
+            String lastEndStr = DateUtils.getAnotherDay("yyyy-MM-dd", startDate, -1); // 上一时段结束日期
+            String lastStartStr = DateUtils.getAnotherDay("yyyy-MM-dd", lastEndStr, -differDay); // 上一时段开始日期
+            requestMap.put("lastEnd", DateUtils.strDateToInt(lastEndStr));
+            requestMap.put("lastStart", DateUtils.strDateToInt(lastStartStr));
+            Long nowDate = Long.valueOf(DateUtils.getNowDate("yyyyMMdd"));
+            if (start.equals(nowDate) && end.equals(nowDate)) {
+                Integer nowHour = DateUtils.getNowHour();
+                requestMap.put("nowHour", nowHour);
+            }
+            startPage();
+            List<JSONObject> data = orderCursorListService.queryItemReport(requestMap);
+            rspData.setCode(HttpStatus.SUCCESS);
+            rspData.setMsg("查询成功");
+            rspData.setRows(data);
+            rspData.setTotal(new PageInfo(data).getTotal());
+        } catch (Exception e) {
+            e.printStackTrace();
+            rspData.setCode(HttpStatus.ERROR);
+            rspData.setMsg(e.getMessage());
+        }
+        return rspData;
+    }
+
+
+    @GetMapping("/exportItemReport")
+    public void exportItemReport(HttpServletRequest request, HttpServletResponse response, Long userId, String startDate, String endDate, String shopId, Long itemId, String itemTitle) throws IOException, ParseException {
+        Map<String, Object> requestMap = new HashMap<>();
+
+        if (Check.isNull(userId)) {
+            return;
+        }
+        if (Check.isNull(startDate)) {
+            return;
+        }
+        if (Check.isNull(endDate)) {
+            return;
+        }
+
+        String roleId = sysRoleService.getRoleBYUserId(userId);
+        if ("admin".equals(roleId)) { // 管理员查看所有
+
+        } else if ("industry_admin".equals(roleId)) { // 供应链管理员查看所属公司
+            Long companyId = kwaixiaodianItemGetService.getCompanyId(userId);
+            if (Check.isNull(companyId)) {
+                return;
+            }
+            requestMap.put("companyId", companyId);
+        } else if ("industry_sale_manager".equals(roleId) || "industry_courtship_manager".equals(roleId) || "industry_purchase_manager".equals(roleId)) { // 经理角色查看部门下所有成员数据
+            List<Long> userIds = kwaixiaodianItemGetService.getUserIds(userId);
+            if (Check.isNull(userIds)) {
+                return;
+            }
+            requestMap.put("userIds", userIds);
+        } else if ("industry_sale".equals(roleId) || "industry_purchase".equals(roleId) || "industry_courtship".equals(roleId)) { // 销售  采购 招商 查看自己的数据
+            List<Long> userIds = new ArrayList<>();
+            userIds.add(userId);
+            requestMap.put("userIds", userIds);
+        }
+
+        if (!Check.isNull(shopId)) {
+            requestMap.put("shopId", shopId);
+        }
+        if (!Check.isNull(itemId)) {
+            requestMap.put("itemId", itemId);
+        }
+
+        if (!Check.isNull(itemTitle)) {
+            requestMap.put("itemTitle", itemTitle);
+        }
+
+        Long start = DateUtils.strDateToInt(startDate);
+        Long end = DateUtils.strDateToInt(endDate);
+        requestMap.put("start", start);
+        requestMap.put("end", end);
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        int differDay = DateUtils.differentDaysByMillisecond(simpleDateFormat.parse(startDate), simpleDateFormat.parse(endDate));
+        String lastEndStr = DateUtils.getAnotherDay("yyyy-MM-dd", startDate, -1); // 上一时段结束日期
+        String lastStartStr = DateUtils.getAnotherDay("yyyy-MM-dd", lastEndStr, -differDay); // 上一时段开始日期
+        requestMap.put("lastEnd", DateUtils.strDateToInt(lastEndStr));
+        requestMap.put("lastStart", DateUtils.strDateToInt(lastStartStr));
+        Long nowDate = Long.valueOf(DateUtils.getNowDate("yyyyMMdd"));
+        if (start.equals(nowDate) && end.equals(nowDate)) {
+            Integer nowHour = DateUtils.getNowHour();
+            requestMap.put("nowHour", nowHour);
+        }
+        List<JSONObject> list = orderCursorListService.queryItemReport(requestMap);
+        List<List<Object>> exportList = new ArrayList<>();
+        if (!Check.isNull(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                JSONObject data = list.get(i);
+                List<Object> export = new ArrayList();
+                export.add(data.getString("itemId"));
+                export.add(data.getString("itemTitle"));
+                export.add(data.getString("price"));
+                export.add(data.getString("orderNum"));
+                export.add(data.getString("orderNumRate"));
+                export.add(data.getString("validOrderNum"));
+                export.add(data.getString("validRadio"));
+                export.add(data.getString("totalFee"));
+                export.add(data.getString("validTotalFee"));
+                export.add(data.getString("deliveryNum"));
+                export.add(data.getString("deliveryRate"));
+                export.add(data.getString("notDeliveryNum"));
+                export.add(data.getString("expressFee"));
+                export.add(data.getString("userName"));
+                export.add(data.getString("itemPicUrl"));
+                exportList.add(export);
+            }
+        }
+        String[] headers = {"商品ID", "商品标题", "商品价格", "单量", "单量环比", "有效单量", "有效率", "GVM", "有效GMV", "发货数", "发货率", "未发货数", "运费", "绑定人", "商品图片"};
+        OutputStream os = response.getOutputStream();
+        ExportExcelUtils eeu = new ExportExcelUtils();
+        XSSFWorkbook workbook = new XSSFWorkbook();
+        eeu.exportExcel(workbook, 0, "商品数据", headers, exportList);
+        this.setResponseHeader(response, "商品数据.xls");
+        try {
+            workbook.write(os);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        os.flush();
+        os.close();
+    }
+
+
     @GetMapping("/querykwaiOrderList")
     @ApiOperation(value = "获kwai订单列表")
     public void querykwaiOrderList(@ApiParam("店铺ID") @RequestParam(value = "shopId", required = false) String shopId, @ApiParam("1按创建时间查找 2按更新时间查找") @RequestParam(value = "queryType", required = false) Integer queryType, @ApiParam("开始日期") @RequestParam(value = "beginDate", required = false) String beginDate, @ApiParam("结束日期(间隔不大于7天)") @RequestParam(value = "endDate", required = false) String endDate
@@ -207,11 +452,19 @@ public class KwaixiaodianItemGetController extends BaseController {
         orderCursorListService.queryShop(shopId);
     }
 
-    public static void main(String[] args) {
-        String date0 = DateUtils.getDate();
-        String date1 = DateUtils.getSubtractTime(new Date(), 30);
-
-        System.out.println(date0);
-        System.out.println(date1);
+    public void setResponseHeader(HttpServletResponse response, String fileName) {
+        try {
+            try {
+                fileName = new String(fileName.getBytes(), "ISO8859-1");
+            } catch (UnsupportedEncodingException e) {
+                e.printStackTrace();
+            }
+            response.setContentType("application/octet-stream;charset=ISO8859-1");
+            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+            response.addHeader("Pargam", "no-cache");
+            response.addHeader("Cache-Control", "no-cache");
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
     }
 }

+ 5 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/entity/KwaixiaodianItemGet.java

@@ -1,6 +1,7 @@
 package com.ruixuan.isc.entity;
 
 import lombok.Data;
+import org.springframework.data.annotation.Transient;
 
 /**
  * kwaixiaodian商品详情对象 kwaixiaodian_item_get
@@ -252,6 +253,7 @@ public class KwaixiaodianItemGet {
      * 下架原因
      */
     private String itemQualification;
+    private String dataCreateTime;
 
     /**
      * 标品ID
@@ -261,5 +263,8 @@ public class KwaixiaodianItemGet {
      * 商品价格 单位:分
      */
     private Long price;
+    @Transient
+    private String skuPrice;
+
 
 }

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

@@ -1,5 +1,6 @@
 package com.ruixuan.isc.mapper;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ruixuan.isc.entity.KwaixiaodianItemGet;
 import com.ruixuan.isc.entity.KwaixiaodianItemGetSku;
 import org.apache.ibatis.annotations.Param;
@@ -23,4 +24,8 @@ public interface KwaixiaodianItemGetMapper {
     Integer checkItem(@Param("companyId") Long companyId, @Param("itemId") Long itemId);
 
     List<KwaixiaodianItemGet> getItemList(Map<String, Object> requestMap);
+
+    List<JSONObject> getShopList(@Param("companyId") Long companyId);
+
+    int deleteById(Long[] ids);
 }

+ 4 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KwaixiaodianOrderCursorListMapper.java

@@ -1,10 +1,12 @@
 package com.ruixuan.isc.mapper;
 
+import com.alibaba.fastjson.JSONObject;
 import com.ruixuan.isc.entity.KwaixiaodianOrderCursorList;
 import com.ruixuan.isc.entity.KwaixiaodianShopScore;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * kwaixiaodian商品详情Mapper接口
@@ -25,4 +27,6 @@ public interface KwaixiaodianOrderCursorListMapper {
     void insertKwaixiaodianShopScore(@Param("shopScore") KwaixiaodianShopScore shopScore);
 
     void updateKwaixiaodianShopScore(KwaixiaodianShopScore shopScore);
+
+    List<JSONObject> queryItemReport(Map<String, Object> requestMap);
 }

+ 4 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/IKwaixiaodianItemGetService.java

@@ -27,4 +27,8 @@ public interface IKwaixiaodianItemGetService {
     List<Long> getUserIds(Long userId);
 
     List<KwaixiaodianItemGet> getItemList(Map<String, Object> requestMap);
+
+    List<JSONObject> getShopList(Long companyId);
+
+    int deleteById(Long[] ids);
 }

+ 5 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/IKwaixiaodianOrderCursorListService.java

@@ -2,6 +2,9 @@ package com.ruixuan.isc.service;
 
 import com.alibaba.fastjson.JSONObject;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * kwaixiaodian商品详情Service接口
  *
@@ -22,4 +25,6 @@ public interface IKwaixiaodianOrderCursorListService {
     void queryMaster(String shopId);
 
     void queryShop(String shopId);
+
+    List<JSONObject> queryItemReport(Map<String, Object> requestMap);
 }

+ 10 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KwaixiaodianItemGetServiceImpl.java

@@ -188,6 +188,16 @@ public class KwaixiaodianItemGetServiceImpl implements IKwaixiaodianItemGetServi
         return mapper.getItemList(requestMap);
     }
 
+    @Override
+    public List<JSONObject> getShopList(Long companyId) {
+        return mapper.getShopList(companyId);
+    }
+
+    @Override
+    public int deleteById(Long[] ids) {
+         return  mapper.deleteById(ids);
+    }
+
 
     private void replaceItemGetSku(JSONArray skuInfos) {
         try {

+ 6 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KwaixiaodianOrderCursorListServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * kwaixiaodian商品详情Service业务层处理
@@ -320,4 +321,9 @@ public class KwaixiaodianOrderCursorListServiceImpl implements IKwaixiaodianOrde
         }
     }
 
+    @Override
+    public List<JSONObject> queryItemReport(Map<String, Object> requestMap) {
+        return mapper.queryItemReport(requestMap);
+    }
+
 }

+ 94 - 60
ruixuan-live/src/main/resources/mapper/isc/KwaixiaodianItemGetMapper.xml

@@ -7,6 +7,7 @@
     <insert id="replaceBatchKWaixiaodianItems">
         replace into `ruixuan`.kwaixiaodian_item_get(
         item_id,
+        item_type,
         user_id,
         user_name,
         shop_id,
@@ -59,6 +60,7 @@
         <foreach collection="list" item="li" separator=",">
             (
             #{li.itemId},
+            #{li.itemType},
             #{li.userId},
             #{li.userName},
             #{li.shopId},
@@ -112,8 +114,9 @@
 
     <insert id="replaceKWaixiaodianItems">
         replace
-        into `ruixuan`.kwaixiaodian_item_get(
+        INTO `ruixuan`.kwaixiaodian_item_get(
         item_id,
+        item_type,
         user_id,
         user_name,
         shop_id,
@@ -164,9 +167,10 @@
         spu_id,
         price
         )
-        values
+        VALUES
             (
         #{itemGet.itemId},
+        #{itemGet.itemType},
         #{itemGet.userId},
         #{itemGet.userName},
         #{itemGet.shopId},
@@ -273,6 +277,14 @@
             )
         </foreach>
     </insert>
+    <delete id="deleteById" parameterType="java.lang.Long">
+        DELETE
+        FROM kwaixiaodian_item_get
+        WHERE id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
     <select id="checkItem" resultType="java.lang.Integer">
         SELECT COUNT(1)
         FROM kwaixiaodian_item_get
@@ -280,80 +292,102 @@
           AND item_id = #{itemId}
     </select>
     <select id="getItemList" resultType="com.ruixuan.isc.entity.KwaixiaodianItemGet">
-        SELECT id,
-        item_id,
-        item_type,
-        user_id,
-        user_name,
-        shop_id,
-        shop_name,
-        company_id,
-        company_name,
-        leader_name,
-        rel_item_id,
-        category_id,
-        category_name,
-        parent_category_id,
-        parent_category_name,
-        root_category_Id,
-        root_category_name,
-        title,
-        details,
-        image_urls,
-        detail_image_urls,
-        service_rule,
-        audit_status,
-        audit_reason,
-        created_time_ms,
-        created_time,
-        update_time_ms,
-        update_time,
-        on_offline_status,
-        parent_category_list,
-        item_prop_values,
-        express_template_id,
-        purchase_limit,
-        limit_count,
-        link_url,
-        time_of_sale,
-        item_remark,
-        duplication_status,
-        duplication_reason,
-        multiple_stock,
-        poi_ids,
-        white_base_image_url,
-        transparent_image_url,
-        short_title,
-        selling_point,
-        instructions,
-        contract_phone,
-        offline_reason,
-        item_qualification,
-        spu_id,
-        data_create_time
-        from kwaixiaodian_item_get
+        SELECT t1.id,
+        t1.item_id,
+        t1.item_type,
+        t1.price,
+        t1.user_id,
+        t1.user_name,
+        t1.shop_id,
+        t1.shop_name,
+        t1.company_id,
+        t1.company_name,
+        t1.leader_name,
+        t1.rel_item_id,
+        t1.category_id,
+        t1.category_name,
+        t1.parent_category_id,
+        t1.parent_category_name,
+        t1.root_category_Id,
+        t1.root_category_name,
+        t1.title,
+        t1.details,
+        t1.image_urls,
+        t1.image_url,
+        t1.detail_image_urls,
+        t1.service_rule,
+        t1.audit_status,
+        t1.audit_reason,
+        t1.created_time_ms,
+        t1.created_time,
+        t1.update_time_ms,
+        t1.update_time,
+        t1.on_offline_status,
+        t1.parent_category_list,
+        t1.item_prop_values,
+        t1.express_template_id,
+        t1.purchase_limit,
+        t1.limit_count,
+        t1.link_url,
+        t1.time_of_sale,
+        t1.item_remark,
+        t1.duplication_status,
+        t1.duplication_reason,
+        t1.multiple_stock,
+        t1.poi_ids,
+        t1.white_base_image_url,
+        t1.transparent_image_url,
+        t1.short_title,
+        t1.selling_point,
+        t1.instructions,
+        t1.contract_phone,
+        t1.offline_reason,
+        t1.item_qualification,
+        t1.spu_id,
+        date_format(t1.data_create_time,'%Y-%m-%d') as 'dataCreateTime',
+        (
+        select (case
+        when min(sku_sale_price) = max(sku_sale_price)
+        then concat(round(min(sku_sale_price) / 100, 2), '元')
+        else concat(round(min(sku_sale_price) / 100, 2), '~', round(max(sku_sale_price) / 100, 2), '元')
+        end
+        )
+        from kwaixiaodian_item_get_sku WHERE kwai_item_id = t1.item_id
+        ) as 'skuPrice'
+        from kwaixiaodian_item_get t1
         where 1 = 1
         <if test="companyId != null and companyId != ''">
-            and company_id = #{companyId}
+            and t1.company_id = #{companyId}
         </if>
         <if test='userIds != null and userIds.size() > 0'>
-            AND user_id in
+            AND t1.user_id in
             <foreach collection="userIds" item="item" separator=","
                      open="(" close=")">
                 #{item}
             </foreach>
         </if>
         <if test="itemId != null and itemId != ''">
-            and item_id = #{itemId}
+            and t1.item_id = #{itemId}
         </if>
         <if test="itemType != null and itemType != ''">
-            and item_type = #{itemType}
+            and t1.item_type = #{itemType}
         </if>
         <if test="title != null and title != ''">
-            and title like concat('%', #{title}, '%')
+            and t1.title like concat('%', #{title}, '%')
         </if>
+        order by t1.data_create_time desc
 
-
+    </select>
+    <select id="getShopList" resultType="com.alibaba.fastjson.JSONObject" parameterType="java.lang.Long">
+        SELECT id AS 'shopId', shop_name AS 'shopName'
+        FROM kwaixiaodian_access_token
+        WHERE
+        1 = 1
+        <if test="companyId != null and companyId != ''">
+            and company_id = #{companyId}
+        </if>
+        AND shop_status = 1
+        ORDER BY create_time DESC
     </select>
 
 

+ 101 - 8
ruixuan-live/src/main/resources/mapper/isc/KwaixiaodianOrderCursorListMapper.xml

@@ -212,7 +212,7 @@
 
     <insert id="insertKWaixiaodianOrderCursorList">
         replace
-        into `ruixuan`.kwaixiaodian_order_cursor_list(
+        INTO `ruixuan`.kwaixiaodian_order_cursor_list(
         company_id,
         company_name,
         shop_id,
@@ -312,7 +312,7 @@
         stat_date,
         stat_hour
         )
-        values
+        VALUES
             (
         #{order.companyId},
         #{order.companyName},
@@ -422,15 +422,108 @@
     </update>
 
     <select id="getScore" resultType="com.ruixuan.isc.entity.KwaixiaodianShopScore" parameterType="java.lang.String">
-        select *
-        from ruixuan.kwaixiaodian_shop_score
-        where shop_id = #{shopId} limit 1
+        SELECT *
+        FROM ruixuan.kwaixiaodian_shop_score
+        WHERE shop_id = #{shopId} limit 1
+    </select>
+    <select id="queryItemReport" resultType="com.alibaba.fastjson.JSONObject">
+        select t1.*,
+        round((t1.orderNum - t2.orderNum) / t2.orderNum * 100, 2) as 'orderNumRate'
+        from (select t2.user_name as 'userName',
+        t1.item_id as itemId,
+        t1.item_title as 'itemTitle',
+        t1.item_pic_url as 'itemPicUrl',
+        (case
+        when min(t1.price) = max(t1.price)
+        then concat(round(min(t1.price) / 100, 2), '元')
+        else concat(round(min(t1.price) / 100, 2), '~', round(max(t1.price) / 100, 2), '元')
+        end
+        ) as price,
+        round(sum(t1.total_fee) / 100, 2) as 'totalFee',
+        IFNULL(round(SUM(CASE WHEN t1.status != 80 THEN t1.total_fee ELSE 0 END) / 100, 2), 0) as 'validTotalFee',
+        count(t1.oid) as 'orderNum',
+        IFNULL(SUM(CASE WHEN t1.status != 80 THEN 1 ELSE 0 END), 0) AS 'validOrderNum',
+        round(sum(case when t1.status != 80 then 1 else 0 end) / count(t1.oid) * 100,
+        2) as 'validRadio',
+        sum(case when t1.status >= 40 and t1.status &lt; 80 then 1 else 0 end) as 'deliveryNum',
+        round(sum(case when t1.status >= 40 and t1.status &lt; 80 then 1 else 0 end) /
+        sum(case when t1.status != 80 then 1 else 0 end) * 100, 2) as 'deliveryRate',
+        sum(case when t1.status = 30 then 1 else 0 end) as 'notDeliveryNum',
+        round(sum(t1.express_fee) / 100, 2) as 'expressFee'
+        from kwaixiaodian_order_cursor_list t1
+        left join kwaixiaodian_item_get t2
+        on t1.item_id = t2.item_id
+        and t1.company_id = t2.company_id
+        where t1.stat_date &gt;= #{start}
+        and t1.stat_date &lt;= #{end}
+        <if test='nowHour != null and nowHour != ""'>
+            and t1.stat_hour &lt;= #{nowHour}
+        </if>
+        <if test='companyId != null and companyId != ""'>
+            and t1.company_id = #{companyId}
+        </if>
+        <if test='shopId != null and shopId != ""'>
+            and t1.shop_id = #{shopId}
+        </if>
+        <if test='userIds != null and userIds.size() > 0'>
+            AND t2.user_id in
+            <foreach collection="userIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test='itemId != null and itemId != ""'>
+            and t1.item_id = #{itemId}
+        </if>
+
+        <if test='itemTitle != null and itemTitle != ""'>
+            and t1.item_title like concat('%',#{itemTitle},'%')
+        </if>
+
+
+        group by t1.item_id) t1
+        left join (
+        select t1.item_id as itemId,
+        count(t1.oid) as 'orderNum'
+        from kwaixiaodian_order_cursor_list t1 left join kwaixiaodian_item_get t2
+        on t1.item_id = t2.item_id
+        and t1.company_id = t2.company_id
+        where t1.stat_date &gt;= #{lastStart}
+        and t1.stat_date &lt;= #{lastEnd}
+        <if test='nowHour != null and nowHour != ""'>
+            and t1.stat_hour &lt;= #{nowHour}
+        </if>
+        <if test='companyId != null and companyId != ""'>
+            and t1.company_id = #{companyId}
+        </if>
+        <if test='shopId != null and shopId != ""'>
+            and t1.shop_id = #{shopId}
+        </if>
+
+        <if test='userIds != null and userIds.size() > 0'>
+            AND t2.user_id in
+            <foreach collection="userIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test='itemId != null and itemId != ""'>
+            and t1.item_id = #{itemId}
+        </if>
+
+        <if test='itemTitle != null and itemTitle != ""'>
+            and t1.item_title like concat('%',#{itemTitle},'%')
+        </if>
+        group by t1.item_id) t2 on t1.itemId = t2.itemId
+        order by t1.orderNum desc
+
+
     </select>
 
 
     <insert id="insertKwaixiaodianShopScore">
-        insert
-        into `ruixuan`.kwaixiaodian_shop_score
+        INSERT
+        INTO `ruixuan`.kwaixiaodian_shop_score
         (shop_id,
          shop_name,
          company_id,
@@ -439,7 +532,7 @@
          master_score,
          master_score_body,
          shop_score,
-         shop_score_body) value
+         shop_score_body) VALUE
             ( #{shopScore.shopId},
             #{shopScore.shopName},
             #{shopScore.companyId},