ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MerBaseDto.java
@@ -19,4 +19,7 @@ @ApiModelProperty(value = "商户id") private Long shopId; @ApiModelProperty(value = "userIds") private Long userIds; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MgtShopIdByCodeDto.java
@@ -27,5 +27,8 @@ @ApiModelProperty(value = "店铺名称") private String shopName; @ApiModelProperty(value = "归属员工di") private Long belongUserId; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MerHomeShopTotalVo.java
@@ -5,6 +5,7 @@ import lombok.Data; import java.math.BigDecimal; import java.util.List; /** * @author jqs34 @@ -40,4 +41,7 @@ @ApiModelProperty(value = "剩余体验人数") private Integer explorationSurp; @ApiModelProperty(value = "多个商户id") private List<Long> shopIds; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/OrderMapper.java
@@ -421,6 +421,14 @@ MerHomeShopTotalVo getMerHomeShopTotalVo(Long shopId); /** * @description * @author cheny * @param shopIds * @return MerHomeShopTotalVo */ MerHomeShopTotalVo getMerHomeShopsTotalVo(List<Long> shopIds); /** * @description 统计商户营业额 * @author jqs * @date 2023/6/27 19:13 @@ -505,4 +513,6 @@ * @return List<MgtShopAllOrderPageVo> */ List<MgtShopAllOrderPageVo> pageMgtShopAllOrder(Page page, @Param("param")MgtShopAllOrderPageDto mgtShopAllOrderPageDto); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/mapper/order/UserServiceRecordMapper.java
@@ -63,4 +63,11 @@ * @return Integer */ Integer countShopServicePerson(@Param("shopId")Long shopId); /** * @description 商户端统计商户到店人数 * @author cheny * @param shopIds * @return Integer */ Integer countShopServicePersons(List<Long> shopIds); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -16,6 +16,7 @@ import com.ruoyi.order.domain.pojo.order.OrderGoods; import com.ruoyi.order.domain.vo.*; import com.ruoyi.order.mapper.order.OrderMapper; import com.ruoyi.order.mapper.order.UserServiceRecordMapper; import com.ruoyi.order.service.order.ConsumerGoodsService; import com.ruoyi.order.service.order.OrderGoodsService; import com.ruoyi.order.service.order.OrderService; @@ -85,6 +86,9 @@ @Resource private RemoteActivityService remoteActivityService; @Resource private UserServiceRecordMapper userServiceRecordMapper; /** * @description: buyGoods @@ -764,10 +768,18 @@ */ @Override public MerHomeShopTotalVo getMerHomeTotal(MerHomeShopTotalVo merHomeShopTotalVo) { Long shopId = merHomeShopTotalVo.getShopId(); Integer todayShop = userServiceRecordService.countShopServicePerson(shopId); merHomeShopTotalVo.setTodayShop(todayShop); merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId); List<Long> shopIds = merHomeShopTotalVo.getShopIds(); if (null != shopIds && shopIds.size() != 0) { Integer todayShop = userServiceRecordMapper.countShopServicePersons(shopIds); merHomeShopTotalVo = orderMapper.getMerHomeShopsTotalVo(shopIds); merHomeShopTotalVo.setTodayShop(todayShop); }else{ Long shopId = merHomeShopTotalVo.getShopId(); Integer todayShop = userServiceRecordService.countShopServicePerson(shopId); merHomeShopTotalVo.setTodayShop(todayShop); merHomeShopTotalVo = orderMapper.getMerHomeShopTotalVo(shopId); } return merHomeShopTotalVo; } ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -1239,6 +1239,20 @@ WHERE del_flag = 0 AND shopId = #{shopId} </select> <select id="getMerHomeShopsTotalVo" resultType="com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo"> SELECT SUM(CASE WHEN order_status = 2 THEN 1 ELSE 0 END) unHandleOrder, SUM(pay_money) shopTurnover FROM t_order WHERE del_flag = 0 <if test="list != null and list.size() > 0"> AND shop_id IN <foreach collection="list" item="item" open="(" separator="," close=")"> #{item} </foreach> </if> </select> <select id="getMemberUnpaidOrder" resultType="java.math.BigDecimal"> SELECT IFNULL(SUM(receivable_money-pay_money),0) FROM t_order ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/UserServiceRecordMapper.xml
@@ -141,4 +141,14 @@ FROM t_user_service_record WHERE shop_id = #{shopId} AND DATE(create_time) = CURDATE() </select> <select id="countShopServicePersons" resultType="java.lang.Integer"> SELECT COUNT(DISTINCT user_id) FROM t_user_service_record WHERE shop_id in <foreach item="id" collection="list" open="(" separator="," close=")"> #{id} </foreach> AND DATE(create_time) = CURDATE() </select> </mapper> ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/staff/StaffController.java
New file @@ -0,0 +1,67 @@ package com.ruoyi.shop.controller.staff; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.shop.domain.dto.MgtShopPageDto; import com.ruoyi.shop.domain.vo.MgtShopPageVo; import com.ruoyi.shop.service.shop.ShopService; import com.ruoyi.system.api.domain.vo.MerHomeShopTotalVo; import com.ruoyi.system.api.service.RemoteSysStaffService; import com.ruoyi.system.api.service.RemoteUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; @Api(value = "员工端商户接口", tags = "员工端商户接口", description = "员工端商户接口") @RestController @RequestMapping("/staff/shop") public class StaffController { @Resource private ShopService shopService; @Resource private RemoteUserService sysUserService; @Resource private RemoteSysStaffService remoteSysStaffService; /** * 未完成实际统计 * @return */ @RequestMapping(value = "/getStaffHomeTotal", method = RequestMethod.POST) @ApiOperation(value = "获取员工端商铺统计") public R<MerHomeShopTotalVo> getStaffHomeTotal() { Long userId = SecurityUtils.getUserId(); MerHomeShopTotalVo merHomeShopTotalVo = shopService.getStaffHomeTotal(userId); return R.ok(merHomeShopTotalVo); } @RequestMapping(value = "/list", method = RequestMethod.POST) @ApiOperation(value = "获取商户端商业统计") public R getShopByUserId(@RequestBody MgtShopPageDto mgtShopPageDto) { Long userId = SecurityUtils.getUserId(); if (remoteSysStaffService.isLeader()) { Long deptId = sysUserService.getSysUser(userId).getData().getDeptId(); List<Long> userIds = remoteSysStaffService.getUserIds(deptId).getData(); if(userIds.size()==0){ return R.ok("未关联商户"); } mgtShopPageDto.setIds(userIds); } else { mgtShopPageDto.setBelongUserId(userId); } Page<MgtShopPageVo> page = new Page<>(); page.setSize(mgtShopPageDto.getPageSize()); page.setCurrent(mgtShopPageDto.getPageNum()); List<MgtShopPageVo> mgtShopPageVoList = shopService.pageMgtShop(page,mgtShopPageDto); return R.ok(page.setRecords(mgtShopPageVoList)); } } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/domain/dto/MgtShopPageDto.java
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; /** * @author jqs34 * @ClassName MgtShopPageDto @@ -86,6 +88,9 @@ @ApiModelProperty(value = "与合作商关系1.好2.差") private Integer relationPartner; @ApiModelProperty(value = "商铺id") private Integer shopId; @ApiModelProperty(value = "多个用户的id") private List<Long> ids; } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopTotalMapper.java
@@ -3,6 +3,8 @@ import com.ruoyi.shop.domain.pojo.shop.ShopTotal; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import java.util.List; /** * <p> * 商户统计 Mapper 接口 @@ -13,4 +15,5 @@ */ public interface ShopTotalMapper extends BaseMapper<ShopTotal> { ShopTotal shopsTotalByIds(List<Long> shopIds); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/task/MemberTaskMapper.java
@@ -47,4 +47,6 @@ * @return MemberTaskSimpleVo */ MemberTaskSimpleVo getLastMemberTask(@Param("userId")Long userId); Integer getMembersIngTotal(List<Long> shopIds); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopServiceImpl.java
@@ -25,10 +25,7 @@ import com.ruoyi.system.api.domain.poji.shop.Shop; import com.ruoyi.system.api.domain.poji.sys.SysUser; import com.ruoyi.system.api.domain.vo.*; import com.ruoyi.system.api.service.RemoteConfigService; import com.ruoyi.system.api.service.RemoteMemberService; import com.ruoyi.system.api.service.RemoteOrderService; import com.ruoyi.system.api.service.RemoteUserService; import com.ruoyi.system.api.service.*; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -103,6 +100,8 @@ @Resource private RemoteUserService remoteUserService; @Resource private RemoteSysStaffService remoteSysStaffService; /** * 获取商户详情 @@ -639,6 +638,43 @@ } /** * 获取获取员工端首页统计 * @param userId * @return */ @Override public MerHomeShopTotalVo getStaffHomeTotal(Long userId){ List<Long> userIds = null; List<Long> shopIds = null; //如果是leader 查询leader下面所有的员工下的所有shopId if(remoteSysStaffService.isLeader()){ Long deptId = sysUserService.getSysUser(userId).getData().getDeptId(); userIds = remoteSysStaffService.getUserIds(deptId).getData(); //根据用户所有id查询关联的商户id MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto(); mgtBasePlatformDto.setUserIdList(userIds); shopIds = shopMapper.listShopIdByTotal(mgtBasePlatformDto); }else { //普通员工查询商户归属的shopId MgtShopIdByCodeDto mgtShopIdByCodeDto = new MgtShopIdByCodeDto(); mgtShopIdByCodeDto.setBelongUserId(userId); shopIds = shopMapper.getShopIdByCode(mgtShopIdByCodeDto); } //分别查询 MerHomeShopTotalVo merHomeShopTotalVo = new MerHomeShopTotalVo(); merHomeShopTotalVo.setShopIds(shopIds); MerHomeShopTotalVo orderVo = remoteOrderService.getMerHomeTotal(merHomeShopTotalVo).getData(); merHomeShopTotalVo.setTodayShop(orderVo.getTodayShop()); merHomeShopTotalVo.setUnHandleOrder(orderVo.getUnHandleOrder()); merHomeShopTotalVo.setShopTurnover(orderVo.getShopTurnover()); ShopTotal shopTotal = shopTotalService.shopsTotalByIds(shopIds); merHomeShopTotalVo.setCycleSurp(shopTotal.getUseableCyclePerson()); merHomeShopTotalVo.setExplorationSurp(shopTotal.getUseableExperiencePerson()); Integer taskCount = memberTaskService.getMembersIngTotal(shopIds); merHomeShopTotalVo.setTask(taskCount); return merHomeShopTotalVo; } /** * 获取商户端 * @param userId * @return ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopTotalServiceImpl.java
@@ -7,7 +7,9 @@ import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.Lock; @@ -26,6 +28,9 @@ private Lock lock = new ReentrantLock(); private ExecutorService executor = Executors.newSingleThreadExecutor(); @Resource private ShopTotalMapper shopTotalMapper; /** * @param shopTotalChangeDto @@ -44,6 +49,11 @@ }); } @Override public ShopTotal shopsTotalByIds(List<Long> shopIds) { return shopTotalMapper.shopsTotalByIds(shopIds); } //更新商户统计实现 private void handleShopTotal(ShopTotalChangeDto shopTotalChangeDto){ ShopTotal shopTotal = this.getById(shopTotalChangeDto.getShopId()); ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/task/MemberTaskServiceImpl.java
@@ -213,6 +213,11 @@ return memberTaskMapper.getMemberIngTotal(shopId); } @Override public Integer getMembersIngTotal(List<Long> shopIds) { return memberTaskMapper.getMembersIngTotal(shopIds); } /** * @description 获取最近任务 * @author jqs ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopService.java
@@ -98,6 +98,7 @@ Shop getByShopId(Long shopId); MerHomeShopTotalVo getStaffHomeTotal(Long userId); /** * 获取商户端首页统计 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopTotalService.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.dto.ShopTotalChangeDto; import java.util.List; /** * <p> * 商户统计 服务类 @@ -22,4 +24,6 @@ * @return void */ void changeShopTotal(ShopTotalChangeDto shopTotalChangeDto); ShopTotal shopsTotalByIds(List<Long> shopIds); } ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/task/MemberTaskService.java
@@ -62,5 +62,11 @@ */ MemberTaskSimpleVo getLastMemberTask(Long userId); /** * @description 员工端获取进行中任务数 * @author jqs * @param shopIds * @return Integer */ Integer getMembersIngTotal(List<Long> shopIds); } ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -309,6 +309,14 @@ FROM t_shop ts LEFT JOIN t_shop_marketing tsm ON tsm.shop_id = ts.shop_id WHERE ts.del_flag = 0 <if test="param.ids != null and !param.ids.isEmpty()"> AND ts.belong_user_id in <foreach item="id" collection="param.ids" open="(" separator="," close=")"> #{id} </foreach> </if> <if test="param.shopType!=null and param.shopType!=''"> AND ts.shop_type = #{param.shopType} </if> @@ -460,6 +468,9 @@ <if test="param.shopAreaCode!=null and param.shopAreaCode!=''"> AND ts.shop_area_code = #{param.shopAreaCode} </if> <if test="param.belongUserId!=null and param.belongUserId!=''"> AND ts.belong_user_id = #{param.belongUserId} </if> </select> <select id="listMgtShopSimpleVo" resultType="com.ruoyi.shop.domain.vo.MgtShopListSimpleVo"> @@ -474,6 +485,7 @@ <if test="param.keyword!=null and param.keyword!=''"> AND shop_name LIKE CONCAT('%',#{param.keyword},'%') </if> </select> <select id="listShopSimpleVoByIds" resultType="com.ruoyi.system.api.domain.vo.MgtSimpleShopVo"> ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopTotalMapper.xml
@@ -1,6 +1,47 @@ <?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.ruoyi.shop.mapper.shop.ShopTotalMapper"> <select id="shopsTotalByIds" parameterType="java.util.List" resultType="com.ruoyi.shop.domain.pojo.shop.ShopTotal"> SELECT sum(last_pay_money) lastPayMoney , sum(total_activity_count) totalActivityCount, sum(total_order) totalOrder, sum(total_cycle_order) totalCycleOrder, sum(total_experience_order) totalExperienceOrder, sum(total_service_order) totalServiceOrder, sum(total_goods_order) totalGoodsOrder, sum(total_service_count) totalServiceCount, sum(used_service_count) usedServiceCount, sum(useable_service_count) useableServiceCount, sum(total_cycle_service) totalCycleService, sum(used_cycle_service) usedCycleService, sum(useable_cycle_service) useableCycleService, sum(total_cycle_person) totalCyclePerson, sum(useable_cycle_person) useable_cycle_person, sum(total_service_service) totalServiceService, sum(used_service_service) usedServiceService, sum(useable_service_service) useableServiceService, sum(total_service_person) totalServicePerson, sum(useable_service_person) useableServicePerson, sum(total_experience_service) totalExperienceService, sum(used_experience_service) usedExperienceService, sum(useable_experience_service) useableExperienceService, sum(total_experience_person) totalExperiencePerson, sum(useable_experience_person) useableExperiencePerson, sum(total_order_money) totalOrderMoney, sum(total_cycle_money) totalCycleMoney, sum(total_experience_money) totalExperienceMoney, sum(total_service_money) totalServiceMoney, sum(total_goods_money) totalGoodsMoney FROM t_shop_total <if test="list!=null and list!=''"> where shop_id IN <foreach collection="list" item="id" open="(" separator="," close=")"> #{id} </foreach> </if> </select> </mapper> ruoyi-modules/ruoyi-shop/src/main/resources/mapper/task/MemberTaskMapper.xml
@@ -99,6 +99,19 @@ WHERE del_flag = 0 AND task_status = 1 AND shop_id = #{shopId} AND task_date = DATE(NOW()) </select> <select id="getMembersIngTotal" resultType="java.lang.Integer"> SELECT COUNT(task_id) FROM t_member_task WHERE del_flag = 0 AND task_status = 1 <if test="list!=null and list!=''"> AND shop_id IN <foreach collection="list" item="id" open="(" separator="," close=")"> #{id} </foreach> </if> AND task_date = DATE(NOW()) </select> <select id="getLastMemberTask" resultType="com.ruoyi.system.api.domain.vo.MemberTaskSimpleVo"> SELECT task_date taskDate, ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/sys/SysUserController.java
@@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -58,6 +59,25 @@ @Autowired private ISysConfigService configService; /** * 根据部门获取所有员工id * @param deptId * @return */ @GetMapping("/dept/{deptId}") public R<List<Long>> getUserIds(@PathVariable("deptId") Long deptId) { SysUser sysUser = new SysUser(); sysUser.setDeptId(deptId); List<SysUser> userList = userService.selectUserList(sysUser); List<Long> userIds = new ArrayList<>(); for (int i = 0; i < userList.size(); i++) { userIds.add(userList.get(i).getUserId()); } return R.ok(userIds); } /** * 获取用户列表 */