diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcCartController.java b/src/main/java/com/gxwebsoft/apps/controller/BcCartController.java index bd4e29a..adcfbdc 100644 --- a/src/main/java/com/gxwebsoft/apps/controller/BcCartController.java +++ b/src/main/java/com/gxwebsoft/apps/controller/BcCartController.java @@ -123,7 +123,7 @@ public class BcCartController extends BaseController { .eq(Order::getPayStatus,PAY_STATUS_SUCCESS) .eq(Order::getDeliveryTime, Date.valueOf(d.getDeliveryTime()))); if(one == null){ - order.setOrderNo(IdUtil.getSnowflakeNextId()); + order.setOrderNo(String.valueOf(IdUtil.getSnowflakeNextId())); order.setTotalPrice(d.getTotalPrice()); order.setOrderPrice(d.getTotalPrice()); order.setPayPrice(d.getTotalPrice()); diff --git a/src/main/java/com/gxwebsoft/apps/controller/EquipmentController.java b/src/main/java/com/gxwebsoft/apps/controller/EquipmentController.java index 9f59ca3..2d86ae7 100644 --- a/src/main/java/com/gxwebsoft/apps/controller/EquipmentController.java +++ b/src/main/java/com/gxwebsoft/apps/controller/EquipmentController.java @@ -151,7 +151,7 @@ public class EquipmentController extends BaseController { record.setEquipmentCode(one.getEquipmentCode()); record.setUserId(getLoginUserId()); record.setEventType(EVENT_TYPE_BIND); - record.setComments("订单号:".concat(Long.toString(order.getOrderNo()))); + record.setComments("订单号:".concat(order.getOrderNo())); record.setMerchantCode(one.getMerchantCode()); equipmentRecordService.save(record); // 订单发货 diff --git a/src/main/java/com/gxwebsoft/apps/entity/EquipmentGoods.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentGoods.java index c65c4eb..01f626a 100644 --- a/src/main/java/com/gxwebsoft/apps/entity/EquipmentGoods.java +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentGoods.java @@ -81,6 +81,30 @@ public class EquipmentGoods implements Serializable { @ApiModelProperty(value = "手续费") private BigDecimal serviceCharges; + @ApiModelProperty(value = "投资人收益") + private BigDecimal touziProfit; + + @ApiModelProperty(value = "投资人分期首期收益") + private BigDecimal touziFirstProfit; + + @ApiModelProperty(value = "推荐人收益") + private BigDecimal tuijianProfit; + + @ApiModelProperty(value = "推荐人分期首期收益") + private BigDecimal tuijianFirstProfit; + + @ApiModelProperty(value = "门店收益") + private BigDecimal mendianProfit; + + @ApiModelProperty(value = "门店分期首期收益") + private BigDecimal mendianFirstProfit; + + @ApiModelProperty(value = "区域经理收益") + private BigDecimal jingliProfit; + + @ApiModelProperty(value = "区域经理分期首期收益") + private BigDecimal jingliFirstProfit; + @ApiModelProperty(value = "分期方式") private Integer periodsType; diff --git a/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrderGoods.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrderGoods.java index 51f5889..67a90c8 100644 --- a/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrderGoods.java +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrderGoods.java @@ -67,6 +67,30 @@ public class EquipmentOrderGoods implements Serializable { @ApiModelProperty(value = "电池押金") private BigDecimal batteryDeposit; + @ApiModelProperty(value = "投资人收益") + private BigDecimal touziProfit; + + @ApiModelProperty(value = "投资人分期首期收益") + private BigDecimal touziFirstProfit; + + @ApiModelProperty(value = "推荐人收益") + private BigDecimal tuijianProfit; + + @ApiModelProperty(value = "推荐人分期首期收益") + private BigDecimal tuijianFirstProfit; + + @ApiModelProperty(value = "门店收益") + private BigDecimal mendianProfit; + + @ApiModelProperty(value = "门店分期首期收益") + private BigDecimal mendianFirstProfit; + + @ApiModelProperty(value = "区域经理收益") + private BigDecimal jingliProfit; + + @ApiModelProperty(value = "区域经理分期首期收益") + private BigDecimal jingliFirstProfit; + @ApiModelProperty(value = "电池保险") private BigDecimal batteryInsurance; diff --git a/src/main/java/com/gxwebsoft/apps/task/OrderTask.java b/src/main/java/com/gxwebsoft/apps/task/OrderTask.java index 23289f8..a3dae89 100644 --- a/src/main/java/com/gxwebsoft/apps/task/OrderTask.java +++ b/src/main/java/com/gxwebsoft/apps/task/OrderTask.java @@ -2,28 +2,41 @@ package com.gxwebsoft.apps.task; import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; import com.baomidou.mybatisplus.annotation.InterceptorIgnore; import com.baomidou.mybatisplus.annotation.SqlParser; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.apps.entity.EquipmentOrderGoods; import com.gxwebsoft.apps.service.EquipmentGoodsService; +import com.gxwebsoft.apps.service.EquipmentOrderGoodsService; import com.gxwebsoft.apps.service.EquipmentService; import com.gxwebsoft.common.core.config.MybatisPlusConfig; import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.service.UserService; import com.gxwebsoft.love.entity.UserPlanLog; import com.gxwebsoft.love.param.UserPlanLogParam; +import com.gxwebsoft.shop.entity.Manager; +import com.gxwebsoft.shop.entity.Merchant; import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.ProfitLog; import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.ManagerService; +import com.gxwebsoft.shop.service.MerchantService; import com.gxwebsoft.shop.service.OrderService; +import com.gxwebsoft.shop.service.ProfitLogService; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.NumberUtils; import javax.annotation.Resource; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -44,15 +57,28 @@ public class OrderTask { private EquipmentService equipmentService; @Resource - private EquipmentGoodsService goodsService; + private EquipmentGoodsService equipmentGoodsService; + + @Resource + private EquipmentOrderGoodsService orderGoodsService; @Resource private UserService userService; + + @Resource + private MerchantService merchantService; + + @Resource + private ProfitLogService profitLogService; + + @Resource + private ManagerService managerService; + /** * 删除30分钟未下单的订单 */ - @Scheduled(cron="0 0/30 * * * ? ") +// @Scheduled(cron="0 0/30 * * * ? ") public void removeTimeoutOrder() { Date newDate = DateUtil.offset(DateUtil.date(), DateField.MINUTE, -30); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(Order.class) @@ -66,7 +92,7 @@ public class OrderTask { /** * 计算分润 */ - @Scheduled(cron="0 0/30 * * * ? ") + @Scheduled(cron="0 0/1 * * * ? ") @Transactional public void CalcProfit() { log.info("开始计算分润"); @@ -77,30 +103,44 @@ public class OrderTask { .eq(Order::getOrderStatus, ORDER_STATUS_COMPLETED); List orderList = orderService.list(wrapper); + if(CollectionUtils.isEmpty(orderList)){ + return; + } + - // 查询所有关联的设备 Set equipmentIds = new HashSet<>(); + Set orderIds = new HashSet<>(); Set tuijianUserPhones = new HashSet<>(); + Set mendianCodes = new HashSet<>(); + for (Order order : orderList) { equipmentIds.add(order.getEquipmentId()); - if(order.getDealerPhone() != null){ + mendianCodes.add(order.getMerchantCode()); + orderIds.add(order.getOrderId()); + if (order.getDealerPhone() != null) { tuijianUserPhones.add(order.getDealerPhone()); } } + // 查询所有订单商品 + List orderGoodsList = orderGoodsService.list(Wrappers.lambdaQuery(EquipmentOrderGoods.class).in(EquipmentOrderGoods::getOrderId, orderIds)); + Map> orderGoodsMap = orderGoodsList.stream().collect(Collectors.groupingBy(EquipmentOrderGoods::getOrderId)); + + + // 查询所有关联的设备 List equipmentList = equipmentService.list(Wrappers.lambdaQuery(Equipment.class).in(Equipment::getEquipmentId, equipmentIds)); Map equipmentMap = new HashMap<>(); Set touziUserIds = new HashSet<>(); for (Equipment equipment : equipmentList) { - equipmentMap.put(equipment.getEquipmentId(),equipment); - if(equipment.getTouziUserId() != null) { + equipmentMap.put(equipment.getEquipmentId(), equipment); + if (equipment.getTouziUserId() != null) { touziUserIds.add(equipment.getTouziUserId()); } } // 查询所有投资人 Map touziUserMap = new HashMap<>(); - if(CollectionUtils.isNotEmpty(touziUserIds)){ + if (CollectionUtils.isNotEmpty(touziUserIds)) { List list = userService.list(Wrappers.lambdaQuery(User.class).in(User::getUserId, touziUserIds)); for (User user : list) { touziUserMap.put(user.getUserId(), user); @@ -109,33 +149,135 @@ public class OrderTask { // 查询所有推荐人 Map tuijianUserMap = new HashMap<>(); - if(CollectionUtils.isNotEmpty(tuijianUserPhones)){ + if (CollectionUtils.isNotEmpty(tuijianUserPhones)) { List tuijianUserList = userService.list(Wrappers.lambdaQuery(User.class).in(User::getPhone, tuijianUserPhones)); for (User user : tuijianUserList) { tuijianUserMap.put(user.getPhone(), user); } } + // 查询所有门店 + Map mendianMap = new HashMap<>(); + if (CollectionUtils.isNotEmpty(mendianCodes)) { + List merchantList = merchantService.list(Wrappers.lambdaQuery(Merchant.class).in(Merchant::getMerchantCode, mendianCodes)); + for (Merchant merchant : merchantList) { + mendianMap.put(merchant.getMerchantCode(), merchant); + } + } + + // 查询所有区域经理 +// Wrappers.lambdaQuery(Manager.class) + List jingliList = managerService.list(); + // 开始结算 for (Order order : orderList) { // 计算投资人收益 - Equipment equipment = equipmentMap.get(order.getEquipment()); - User touziUser = touziUserMap.get(equipment.getTouziUserId()); - if(touziUser != null){ + List equipmentOrderGoods = orderGoodsMap.get(order.getOrderId()); + if (CollectionUtils.isNotEmpty(equipmentOrderGoods)) { + EquipmentOrderGoods orderGoods = equipmentOrderGoods.get(0); + BigDecimal touziProfit; + BigDecimal tuijianProfit; + BigDecimal mendianProfit; + BigDecimal jingliProfit; + Merchant merchant = mendianMap.get(order.getMerchantCode()); + // 是否分期首期 + if ("20".equals(orderGoods.getEquipmentCategory()) && order.getIsRenew() == 0) { + touziProfit = orderGoods.getTouziFirstProfit(); + tuijianProfit = orderGoods.getTuijianFirstProfit(); + mendianProfit = orderGoods.getMendianFirstProfit(); + jingliProfit = orderGoods.getJingliFirstProfit(); + } else { + touziProfit = orderGoods.getTouziProfit(); + tuijianProfit = orderGoods.getTuijianProfit(); + mendianProfit = orderGoods.getMendianProfit(); + jingliProfit = orderGoods.getJingliProfit(); + } + // 投资人收益 + if (touziProfit.compareTo(BigDecimal.ZERO) > 0) { + Equipment equipment = equipmentMap.get(order.getEquipmentId()); + User touziUser = touziUserMap.get(equipment.getTouziUserId()); + if (touziUser != null) { + userService.updateBalanceByUserId(touziUser.getUserId(), touziProfit); + ProfitLog profitLog = new ProfitLog(); + profitLog.setUserId(touziUser.getUserId()); + profitLog.setMoney(touziProfit); + profitLog.setScene(1); + profitLog.setMerchantCode(merchant.getMerchantCode()); + profitLog.setOrderId(order.getOrderId()); + profitLog.setOrderNo(order.getOrderNo()); + profitLog.setComments("投资设备:" + equipment.getEquipmentCode()); + profitLogService.save(profitLog); + } + } + //推荐人收益 + if (tuijianProfit.compareTo(BigDecimal.ZERO) > 0) { + User tuijianUser = tuijianUserMap.get(order.getDealerPhone()); + if (tuijianUser != null) { + userService.updateBalanceByUserId(tuijianUser.getUserId(), tuijianProfit); + ProfitLog profitLog = new ProfitLog(); + profitLog.setUserId(tuijianUser.getUserId()); + profitLog.setMoney(tuijianProfit); + profitLog.setScene(3); + profitLog.setMerchantCode(merchant.getMerchantCode()); + profitLog.setOrderId(order.getOrderId()); + profitLog.setOrderNo(order.getOrderNo()); + profitLog.setComments("推广收益:" + order.getUserId()); + + profitLogService.save(profitLog); + } + } + + // 计算门店收益 + + if (mendianProfit.compareTo(BigDecimal.ZERO) > 0) { + Integer mendianUserId = merchant.getMerchantOwner(); + if (mendianUserId != null) { + userService.updateBalanceByUserId(mendianUserId, mendianProfit); + ProfitLog profitLog = new ProfitLog(); + profitLog.setUserId(mendianUserId); + profitLog.setMoney(mendianProfit); + profitLog.setScene(4); + profitLog.setMerchantCode(merchant.getMerchantCode()); + profitLog.setOrderId(order.getOrderId()); + profitLog.setOrderNo(order.getOrderNo()); + profitLog.setComments("门店收益:" + order.getMerchantCode()); + profitLogService.save(profitLog); + } + } + // 计算区域经理收益 + + if (jingliProfit.compareTo(BigDecimal.ZERO) > 0) { + Manager manager = null; + if (merchant.getManagerId() != null) { + manager = jingliList.stream().filter(d -> { + return d.getUserId().equals(merchant.getManagerId()); + }).findFirst().orElse(null); + } else { + manager = jingliList.stream().filter(d -> { + return d.getProvince().equals(merchant.getProvince()) && d.getCity().equals(merchant.getCity()) && d.getArea().equals(merchant.getRegion()); + }).findFirst().orElse(null); + } + if (manager != null) { + userService.updateBalanceByUserId(manager.getUserId(), jingliProfit); + ProfitLog profitLog = new ProfitLog(); + profitLog.setUserId(manager.getUserId()); + profitLog.setMoney(jingliProfit); + profitLog.setMerchantCode(merchant.getMerchantCode()); + profitLog.setScene(5); + profitLog.setOrderId(order.getOrderId()); + profitLog.setOrderNo(order.getOrderNo()); + profitLog.setComments("门店业绩:" + order.getMerchantCode()); + profitLogService.save(profitLog); + } + } } - //获取推荐人身份、 计算推荐人收益 - User tuijianUser = tuijianUserMap.get(order.getDealerPhone()); - if(tuijianUser != null){ - } - // 计算门店收益 - - // 计算区域经理收益 - System.out.println(equipment); } + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(Order.class).in(Order::getOrderId, orderIds).set(Order::getIsSettled, 1); + orderService.update(updateWrapper); } } diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java index 3769098..71c54e6 100644 --- a/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java @@ -52,4 +52,7 @@ public interface UserMapper extends BaseMapper { @InterceptorIgnore(tenantLine = "true") void updateByUserId(@Param("param") User param); + + @InterceptorIgnore(tenantLine = "true") + int updateBalanceByUserId(@Param("param") UserParam param); } diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml index 52767cb..7d1b3d5 100644 --- a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml @@ -234,4 +234,8 @@ UPDATE sys_user SET grade_id = #{param.gradeId} WHERE user_id = #{param.userId} + + + UPDATE sys_user SET balance = balance + #{param.balance} WHERE user_id = #{param.userId} + diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserService.java b/src/main/java/com/gxwebsoft/common/system/service/UserService.java index 2a4f377..17c13f9 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/UserService.java +++ b/src/main/java/com/gxwebsoft/common/system/service/UserService.java @@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.gxwebsoft.common.core.web.PageResult; import com.gxwebsoft.common.system.entity.User; import com.gxwebsoft.common.system.param.UserParam; +import io.swagger.models.auth.In; import org.springframework.security.core.userdetails.UserDetailsService; +import java.math.BigDecimal; import java.util.List; /** @@ -109,4 +111,6 @@ public interface UserService extends IService, UserDetailsService { * @param user 用户信息 */ void updateByUserId(User user); + + boolean updateBalanceByUserId(Integer userId, BigDecimal balance); } diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java index c3bc1ad..af1499b 100644 --- a/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java @@ -36,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; @@ -302,6 +303,15 @@ public class UserServiceImpl extends ServiceImpl implements Us baseMapper.updateByUserId(user); } + @Override + public boolean updateBalanceByUserId(Integer userId, BigDecimal balance) { + UserParam userParam = new UserParam(); + userParam.setUserId(userId); + userParam.setBalance(balance); + int updated = baseMapper.updateBalanceByUserId(userParam); + return updated > 0; + } + /** * 批量查询用户的角色 * diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenCartController.java b/src/main/java/com/gxwebsoft/open/controller/OpenCartController.java index 6a5aba6..0e52c8a 100644 --- a/src/main/java/com/gxwebsoft/open/controller/OpenCartController.java +++ b/src/main/java/com/gxwebsoft/open/controller/OpenCartController.java @@ -87,7 +87,7 @@ public class OpenCartController extends BaseController { } // 2.创建订单 Order order = new Order(); - order.setOrderNo(IdUtil.getSnowflakeNextId()); + order.setOrderNo(String.valueOf(IdUtil.getSnowflakeNextId())); order.setTotalPrice(param.getTotalPrice()); order.setOrderPrice(param.getTotalPrice()); order.setPayPrice(param.getTotalPrice()); diff --git a/src/main/java/com/gxwebsoft/shop/controller/ManagerController.java b/src/main/java/com/gxwebsoft/shop/controller/ManagerController.java new file mode 100644 index 0000000..ccee1fa --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ManagerController.java @@ -0,0 +1,152 @@ +package com.gxwebsoft.shop.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Manager; +import com.gxwebsoft.shop.param.ManagerParam; +import com.gxwebsoft.shop.service.ManagerService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 区域经理控制器 + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +@Api(tags = "区域经理管理") +@RestController +@RequestMapping("/api/shop/manager") +public class ManagerController extends BaseController { + @Resource + private ManagerService managerService; + + @PreAuthorize("hasAuthority('shop:manager:list')") + @OperationLog + @ApiOperation("分页查询区域经理") + @GetMapping("/page") + public ApiResult> page(ManagerParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(managerService.page(page, page.getWrapper())); + // 使用关联查询 + return success(managerService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:manager:list')") + @OperationLog + @ApiOperation("查询全部区域经理") + @GetMapping() + public ApiResult> list(ManagerParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(managerService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(managerService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:manager:list')") + @OperationLog + @ApiOperation("根据id查询区域经理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(managerService.getById(id)); + // 使用关联查询 + return success(managerService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:manager:save')") + @OperationLog + @ApiOperation("添加区域经理") + @PostMapping() + public ApiResult save(@RequestBody Manager manager) { + // 查询该地区是否已有区域经理 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(Manager.class) + .eq(Manager::getProvince, manager.getProvince()) + .eq(Manager::getCity, manager.getCity()) + .eq(Manager::getArea, manager.getArea()); + int count = managerService.count(wrapper); + if(count > 0){ + return fail("次区域已有区域经理"); + } + // 记录当前登录用户id、租户id + if (managerService.save(manager)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:manager:update')") + @OperationLog + @ApiOperation("修改区域经理") + @PutMapping() + public ApiResult update(@RequestBody Manager manager) { + // 查询该地区是否已有区域经理 + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(Manager.class) + .eq(Manager::getProvince, manager.getProvince()) + .eq(Manager::getCity, manager.getCity()) + .eq(Manager::getArea, manager.getArea()) + .ne(Manager::getManagerId, manager.getManagerId()); + int count = managerService.count(wrapper); + if(count > 0){ + return fail("此区域已有区域经理"); + } + if (managerService.updateById(manager)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:manager:remove')") + @OperationLog + @ApiOperation("删除区域经理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (managerService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:manager:save')") + @OperationLog + @ApiOperation("批量添加区域经理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (managerService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:manager:update')") + @OperationLog + @ApiOperation("批量修改区域经理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(managerService, "manager_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:manager:remove')") + @OperationLog + @ApiOperation("批量删除区域经理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (managerService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java index 6510ea0..23d4143 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/OrderController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java @@ -1,10 +1,12 @@ package com.gxwebsoft.shop.controller; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrConfig; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.BeanUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.gxwebsoft.apps.entity.BcAgent; @@ -80,7 +82,7 @@ public class OrderController extends BaseController { @GetMapping("/page") public ApiResult> page(OrderParam param) { // 搜索条件 - if (getMerchantCode() != null) { + if ((param.getIsApp() == null || param.getIsApp() != true )&& getMerchantCode() != null) { param.setMerchantCode(getMerchantCode()); } // 云芯威项目查询关联设备 @@ -98,18 +100,34 @@ public class OrderController extends BaseController { Map> equipmentCollect = equipmentList.stream().collect(Collectors.groupingBy(Equipment::getEquipmentId)); Map> equipmentOrderGoodsCollect = equipmentOrderGoodsList.stream().collect(Collectors.groupingBy(EquipmentOrderGoods::getOrderId)); + List renewOrderList = orderService.list(Wrappers.lambdaQuery(Order.class).eq(Order::getIsRenew, 1).in(Order::getRentOrderId, orderIds).eq(Order::getPayStatus,PAY_STATUS_SUCCESS)); + Map> renewOrderMap = renewOrderList.stream().collect(Collectors.groupingBy(Order::getRentOrderId)); // 查询订单的设备 for (Order order : list) { final OrderGoodsParam orderGoodsParam = new OrderGoodsParam(); orderGoodsParam.setOrderId(order.getOrderId()); List equipmentOrderGoods = equipmentOrderGoodsCollect.get(order.getOrderId()); - if(CollectionUtils.isNotEmpty(equipmentOrderGoods)){ - order.setEquipmentGoods(equipmentOrderGoods.get(0)); + if(CollectionUtils.isEmpty(equipmentOrderGoods)){ + continue; } + EquipmentOrderGoods orderGoods = equipmentOrderGoods.get(0); + order.setEquipmentGoods(orderGoods); List equipment = equipmentCollect.get(order.getEquipmentId()); if(CollectionUtils.isNotEmpty(equipment)){ order.setEquipment(equipment.get(0)); } + // 续租订单 + List renewOrders = renewOrderMap.get(order.getOrderId()); + if(CollectionUtils.isNotEmpty(renewOrders) && renewOrders.size() >= orderGoods.getPeriods().intValue()){ + order.setFenqiStatus(1); + } + // 逾期时间 + long between = DateUtil.between( order.getExpirationTime(),DateUtil.date(), DateUnit.DAY); + if(DateUtil.date().isAfter(order.getExpirationTime())){ + order.setExpirationDay((int) -between); + }else { + order.setExpirationDay((int) between); + } } PageParam page = new PageParam<>(param); return success(new PageResult<>(list, page.getTotal())); @@ -255,21 +273,19 @@ public class OrderController extends BaseController { oeg.setComments(eg.getComments()); oeg.setStatus(eg.getStatus()); oeg.setMerchantCode(eg.getMerchantCode()); + oeg.setTouziProfit(eg.getTouziProfit()); + oeg.setTouziFirstProfit(eg.getTouziFirstProfit()); + oeg.setTuijianProfit(eg.getTuijianProfit()); + oeg.setTuijianFirstProfit(eg.getTuijianFirstProfit()); + oeg.setMendianProfit(eg.getMendianProfit()); + oeg.setMendianFirstProfit(eg.getMendianFirstProfit()); + oeg.setJingliProfit(eg.getJingliProfit()); + oeg.setJingliFirstProfit(eg.getJingliFirstProfit()); oeg.setTenantId(eg.getTenantId()); equipmentOrderGoodsService.saveOrUpdate(oeg); - // 添加推荐人关系 - if (order.getDealerId() != null) { - final User dealer = userService.getById(order.getDealerId()); - if (dealer == null) { - return fail("推荐人的用户ID不存在"); - } - final UserReferee referee = new UserReferee(); - referee.setDealerId(order.getDealerId()); - referee.setUserId(getLoginUserId()); - userRefereeService.save(referee); - } + } // 是否存入星期值(10048) if (order.getDeliveryTime() != null) { diff --git a/src/main/java/com/gxwebsoft/shop/controller/ProfitLogController.java b/src/main/java/com/gxwebsoft/shop/controller/ProfitLogController.java new file mode 100644 index 0000000..7a2715a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ProfitLogController.java @@ -0,0 +1,136 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.ProfitLogService; +import com.gxwebsoft.shop.entity.ProfitLog; +import com.gxwebsoft.shop.param.ProfitLogParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 门店收益明细表控制器 + * + * @author 科技小王子 + * @since 2023-08-10 11:24:02 + */ +@Api(tags = "门店收益明细表管理") +@RestController +@RequestMapping("/api/shop/profit-log") +public class ProfitLogController extends BaseController { + @Resource + private ProfitLogService profitLogService; + + @OperationLog + @ApiOperation("分页查询门店收益明细表") + @GetMapping("/page") + public ApiResult> page(ProfitLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(profitLogService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(profitLogService.pageRel(param)); + } + + @OperationLog + @ApiOperation("查询全部门店收益明细表") + @GetMapping() + public ApiResult> list(ProfitLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(profitLogService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(profitLogService.listRel(param)); + } + + @OperationLog + @ApiOperation("根据id查询门店收益明细表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(profitLogService.getById(id)); + // 使用关联查询 + //return success(profitLogService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:profitLog:save')") + @OperationLog + @ApiOperation("添加门店收益明细表") + @PostMapping() + public ApiResult save(@RequestBody ProfitLog profitLog) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + profitLog.setUserId(loginUser.getUserId()); + } + if (profitLogService.save(profitLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:profitLog:update')") + @OperationLog + @ApiOperation("修改门店收益明细表") + @PutMapping() + public ApiResult update(@RequestBody ProfitLog profitLog) { + if (profitLogService.updateById(profitLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:profitLog:remove')") + @OperationLog + @ApiOperation("删除门店收益明细表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (profitLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:profitLog:save')") + @OperationLog + @ApiOperation("批量添加门店收益明细表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (profitLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:profitLog:update')") + @OperationLog + @ApiOperation("批量修改门店收益明细表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(profitLogService, "profit_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:profitLog:remove')") + @OperationLog + @ApiOperation("批量删除门店收益明细表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (profitLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Manager.java b/src/main/java/com/gxwebsoft/shop/entity/Manager.java new file mode 100644 index 0000000..cf42a6c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Manager.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.models.auth.In; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 区域经理 + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Manager对象", description = "区域经理") +@TableName("shop_manager") +public class Manager implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "manager_id", type = IdType.AUTO) + private Integer managerId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "城区") + private String area; + + @ApiModelProperty(value = "城市") + private String city; + + @ApiModelProperty(value = "省份") + private String province; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + + @ApiModelProperty(value = "关联用户") + @TableField(exist = false) + private User user; + @TableField(exist = false) + private String avatar; + @TableField(exist = false) + private String username; + @TableField(exist = false) + private String nickname; + @TableField(exist = false) + private String phone; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Merchant.java b/src/main/java/com/gxwebsoft/shop/entity/Merchant.java index b7402ee..073d118 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/Merchant.java +++ b/src/main/java/com/gxwebsoft/shop/entity/Merchant.java @@ -28,6 +28,9 @@ public class Merchant implements Serializable { @TableId(value = "merchant_id", type = IdType.AUTO) private Integer merchantId; + @ApiModelProperty(value = "区域经理ID") + private Integer managerId; + @ApiModelProperty(value = "商户名称") private String merchantName; diff --git a/src/main/java/com/gxwebsoft/shop/entity/Order.java b/src/main/java/com/gxwebsoft/shop/entity/Order.java index 0c63b8e..e5cb27b 100644 --- a/src/main/java/com/gxwebsoft/shop/entity/Order.java +++ b/src/main/java/com/gxwebsoft/shop/entity/Order.java @@ -34,7 +34,8 @@ public class Order implements Serializable { private String subject; @ApiModelProperty(value = "订单号") - private Long orderNo; + private String orderNo; + @ApiModelProperty(value = "商品总金额(不含优惠折扣)") private BigDecimal totalPrice; @@ -254,6 +255,10 @@ public class Order implements Serializable { @TableField(exist = false) private EquipmentOrderGoods equipmentGoods; + @ApiModelProperty("逾期天数") + @TableField(exist = false) + private Integer expirationDay; + @ApiModelProperty("设备") @TableField(exist = false) private Equipment equipment; @@ -261,4 +266,8 @@ public class Order implements Serializable { @ApiModelProperty("推荐人ID") @TableField(exist = false) private Integer dealerId; + + @ApiModelProperty("分期状态 0还款中 1还款结束") + @TableField(exist = false) + private Integer fenqiStatus; } diff --git a/src/main/java/com/gxwebsoft/shop/entity/ProfitLog.java b/src/main/java/com/gxwebsoft/shop/entity/ProfitLog.java new file mode 100644 index 0000000..5b40389 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/ProfitLog.java @@ -0,0 +1,80 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 门店收益明细表 + * + * @author 科技小王子 + * @since 2023-08-10 11:24:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ProfitLog对象", description = "门店收益明细表") +@TableName("shop_profit_log") +public class ProfitLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "profit_id", type = IdType.AUTO) + private Integer profitId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "收益类型(1资产收益,2服务费收益,3推广收益,4门店业绩提成,5站点业绩提成)") + private Integer scene; + + @ApiModelProperty(value = "变动金额") + private BigDecimal money; + + @ApiModelProperty(value = "变动后余额") + private BigDecimal balance; + + @ApiModelProperty(value = "管理员备注") + private String remark; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ManagerMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ManagerMapper.java new file mode 100644 index 0000000..de7a2e3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ManagerMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.Manager; +import com.gxwebsoft.shop.param.ManagerParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 区域经理Mapper + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +public interface ManagerMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ManagerParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ManagerParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ProfitLogMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ProfitLogMapper.java new file mode 100644 index 0000000..4355984 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ProfitLogMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.ProfitLog; +import com.gxwebsoft.shop.param.ProfitLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 门店收益明细表Mapper + * + * @author 科技小王子 + * @since 2023-08-10 11:24:02 + */ +public interface ProfitLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProfitLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProfitLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ManagerMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ManagerMapper.xml new file mode 100644 index 0000000..c40c92c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ManagerMapper.xml @@ -0,0 +1,54 @@ + + + + + + + SELECT a.*,b.avatar,b.username,b.phone,b.nickname + FROM shop_manager a + left join sys_user b on a.user_id = b.user_id + + + AND a.user_id = #{param.userId} + + + AND a.city = #{param.city} + + + AND a.area = #{param.area} + + + AND a.province = #{param.province} + + + AND b.phone = #{param.phone} + + + AND b.username = #{param.username} + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ProfitLogMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ProfitLogMapper.xml new file mode 100644 index 0000000..ae018fe --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ProfitLogMapper.xml @@ -0,0 +1,68 @@ + + + + + + + SELECT a.* + FROM shop_profit_log a + + + AND a.profit_id = #{param.profitId} + + + AND a.order_id = #{param.orderId} + + + AND a.user_id = #{param.userId} + + + AND a.scene = #{param.scene} + + + AND a.money = #{param.money} + + + AND a.balance = #{param.balance} + + + AND a.remark LIKE CONCAT('%', #{param.remark}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/param/ManagerParam.java b/src/main/java/com/gxwebsoft/shop/param/ManagerParam.java new file mode 100644 index 0000000..5bc3444 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ManagerParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.shop.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商城会员查询参数 + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ManagerParam对象", description = "区域经理查询参数") +public class ManagerParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer managerId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "城区") + private String area; + + @ApiModelProperty(value = "城市") + private String city; + + @ApiModelProperty(value = "省份") + private String province; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty("登录账号") + @QueryField(type = QueryType.EQ) + private String username; + + @ApiModelProperty("用户昵称") + @QueryField(type = QueryType.LIKE) + private String nickname; + + @ApiModelProperty("手机号码") + @QueryField(type = QueryType.EQ) + private String phone; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/OrderParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderParam.java index 0f8e13e..91d3127 100644 --- a/src/main/java/com/gxwebsoft/shop/param/OrderParam.java +++ b/src/main/java/com/gxwebsoft/shop/param/OrderParam.java @@ -241,4 +241,6 @@ public class OrderParam extends BaseParam { @TableField(exist = false) private Set userIds; + private Boolean isApp; + } diff --git a/src/main/java/com/gxwebsoft/shop/param/ProfitLogParam.java b/src/main/java/com/gxwebsoft/shop/param/ProfitLogParam.java new file mode 100644 index 0000000..0f5a410 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ProfitLogParam.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.shop.param; + +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; + +/** + * 门店收益明细表查询参数 + * + * @author 科技小王子 + * @since 2023-08-10 11:24:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProfitLogParam对象", description = "门店收益明细表查询参数") +public class ProfitLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer profitId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单号") + @QueryField(type = QueryType.EQ) + private String orderNo; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "收益类型(1资产收益,2服务费收益,3推广收益,4门店业绩提成,5站点业绩提成)") + @QueryField(type = QueryType.EQ) + private Integer scene; + + @ApiModelProperty(value = "变动金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "变动后余额") + @QueryField(type = QueryType.EQ) + private BigDecimal balance; + + @ApiModelProperty(value = "管理员备注") + private String remark; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ManagerService.java b/src/main/java/com/gxwebsoft/shop/service/ManagerService.java new file mode 100644 index 0000000..593069f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ManagerService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Manager; +import com.gxwebsoft.shop.param.ManagerParam; + +import java.util.List; + +/** + * 区域经理Service + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +public interface ManagerService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ManagerParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ManagerParam param); + + /** + * 根据id查询 + * + * @param managerId 主键ID + * @return Manager + */ + Manager getByIdRel(Integer managerId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ProfitLogService.java b/src/main/java/com/gxwebsoft/shop/service/ProfitLogService.java new file mode 100644 index 0000000..c529f38 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ProfitLogService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.ProfitLog; +import com.gxwebsoft.shop.param.ProfitLogParam; + +import java.util.List; + +/** + * 门店收益明细表Service + * + * @author 科技小王子 + * @since 2023-08-10 11:24:02 + */ +public interface ProfitLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProfitLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProfitLogParam param); + + /** + * 根据id查询 + * + * @param profitId 主键ID + * @return ProfitLog + */ + ProfitLog getByIdRel(Integer profitId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ManagerServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ManagerServiceImpl.java new file mode 100644 index 0000000..daf790d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ManagerServiceImpl.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Manager; +import com.gxwebsoft.shop.mapper.ManagerMapper; +import com.gxwebsoft.shop.param.ManagerParam; +import com.gxwebsoft.shop.service.ManagerService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商城会员Service实现 + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +@Service +public class ManagerServiceImpl extends ServiceImpl implements ManagerService { + + @Resource + private UserService userService; + + @Override + public PageResult pageRel(ManagerParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ManagerParam param) { + List list = baseMapper.selectListRel(param); + + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Manager getByIdRel(Integer managerId) { + ManagerParam param = new ManagerParam(); + param.setManagerId(managerId); + return param.getOne(baseMapper.selectListRel(param)); + } + + + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java index d3f7826..7654ba8 100644 --- a/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java @@ -83,6 +83,7 @@ public class OrderServiceImpl extends ServiceImpl implements public List listRel(OrderParam param) { List list = baseMapper.selectListRel(param); // 排序 + PageParam page = new PageParam<>(); page.setDefaultOrder("create_time desc"); return page.sortRecords(list); diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ProfitLogServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ProfitLogServiceImpl.java new file mode 100644 index 0000000..7523f7f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ProfitLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ProfitLogMapper; +import com.gxwebsoft.shop.service.ProfitLogService; +import com.gxwebsoft.shop.entity.ProfitLog; +import com.gxwebsoft.shop.param.ProfitLogParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 门店收益明细表Service实现 + * + * @author 科技小王子 + * @since 2023-08-10 11:24:02 + */ +@Service +public class ProfitLogServiceImpl extends ServiceImpl implements ProfitLogService { + + @Override + public PageResult pageRel(ProfitLogParam param) { + PageParam page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(ProfitLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public ProfitLog getByIdRel(Integer profitId) { + ProfitLogParam param = new ProfitLogParam(); + param.setProfitId(profitId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/test/java/com/gxwebsoft/apps/task/OrderTaskTest.java b/src/test/java/com/gxwebsoft/apps/task/OrderTaskTest.java new file mode 100644 index 0000000..c013f67 --- /dev/null +++ b/src/test/java/com/gxwebsoft/apps/task/OrderTaskTest.java @@ -0,0 +1,12 @@ +package com.gxwebsoft.apps.task; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class OrderTaskTest { + + @Test + void calcProfit() { + } +} \ No newline at end of file diff --git a/src/test/java/com/gxwebsoft/generator/ShopGenerator.java b/src/test/java/com/gxwebsoft/generator/ShopGenerator.java index 594729f..64d5c0d 100644 --- a/src/test/java/com/gxwebsoft/generator/ShopGenerator.java +++ b/src/test/java/com/gxwebsoft/generator/ShopGenerator.java @@ -22,8 +22,8 @@ import java.util.Map; */ public class ShopGenerator { // 输出位置 - private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); - //private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 +// private static final String OUTPUT_LOCATION = System.getProperty("user.dir"); + private static final String OUTPUT_LOCATION = "D:/codegen"; // 不想生成到项目中可以写磁盘路径 // 输出目录 private static final String OUTPUT_DIR = "/src/main/java"; // 作者名称 @@ -31,10 +31,10 @@ public class ShopGenerator { // 是否在xml中添加二级缓存配置 private static final boolean ENABLE_CACHE = false; // 数据库连接配置 - private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/com_gxwebsoft_oa?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; + private static final String DB_URL = "jdbc:mysql://47.119.165.234:3308/open_ws?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8"; private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; - private static final String DB_USERNAME = "com_gxwebsoft_oa"; - private static final String DB_PASSWORD = "EZfW2R4YiWfbLHLw"; + private static final String DB_USERNAME = "open_ws"; + private static final String DB_PASSWORD = "DzAmFiZfPJ6ZGApm"; // 包名 private static final String PACKAGE_NAME = "com.gxwebsoft"; // 模块名 @@ -83,7 +83,8 @@ public class ShopGenerator { // "shop_user_comment", // "shop_user_like", // "shop_user_look" - "shop_user_feedback" +// "shop_user_feedback" + "shop_profit_log" }; // 需要去除的表前缀