This commit is contained in:
dzc committed 2025-09-03 10:02:56 +08:00
commit d46f232224
37 files changed
+1557 -51

No files matched your search

@@ -122,15 +122,17 @@ public class CleanUserController {
return cleanUserService.list(Wrappers.lambdaQuery(cleanUser).in(ArrayUtil.isNotEmpty(ids), CleanUserEntity::getId, ids));
}
/**
* 获取保洁用户下拉列表
* @return R
*/
@Operation(summary = "获取保洁用户下拉列表", description = "获取保洁用户下拉列表")
@Operation(summary = "获取保洁/会务人员用户下拉列表", description = "获取保洁/会务人员用户下拉列表")
@GetMapping("/dropdown")
// @PreAuthorize("@pms.hasPermission('integrated_cleanUser_view')")
public R getCleanUserDropdown() {
public R getCleanUserDropdown(@RequestParam("type")String type) {
LambdaQueryWrapper<CleanUserEntity> wrapper = Wrappers.lambdaQuery();
wrapper.eq(CleanUserEntity::getType, type);
wrapper.select(CleanUserEntity::getId, CleanUserEntity::getName, CleanUserEntity::getPhone);
wrapper.orderByAsc(CleanUserEntity::getName);
List<CleanUserEntity> list = cleanUserService.list(wrapper);
@@ -241,4 +241,22 @@ public class MeetingBookingController {
public List<MeetingBookingEntity> export(MeetingBookingEntity meetingBooking,Long[] ids) {
return meetingBookingService.list(Wrappers.lambdaQuery(meetingBooking).in(ArrayUtil.isNotEmpty(ids), MeetingBookingEntity::getId, ids));
}
//----------------------app---------------------------------
/**
* 会议结束,经办人点击确认发送短信通知阿姨
*/
@PostMapping("/app/confirm-end-meeting/{bookingId}")
public R<Boolean> confirmEndMeeting(@PathVariable("bookingId") Long bookingId) {
return R.ok(meetingBookingService.confirmEndMeeting(bookingId));
}
/**
* 会议开始之前,通知阿姨需要对会议室桌面和桌椅拜访进行整理
*/
@PostMapping("/app/notice-visit-desk/{bookingId}")
public R<Boolean> noticeVisitDesk(@PathVariable("bookingId") Long bookingId) {
meetingBookingService.noticeVisitDesk(bookingId);
return R.ok();
}
}
@@ -436,4 +436,5 @@ public class MeetingRoomController {
return R.ok(result);
}
}
@@ -94,4 +94,7 @@ public class CleanUserEntity extends Model<CleanUserEntity> {
*/
@Schema(description="租户编号")
private Long tenantId;
@Schema(description = "1保洁阿姨,2会务人员")
private String type;
}
@@ -128,6 +128,11 @@ public class MeetingBookingEntity extends Model<MeetingBookingEntity> {
@Schema(description="租户编号")
private Long tenantId;
/**
* 是否确认结束
*/
@Schema(description = "是否确认结束")
private Integer isConfirmEnd;
@Schema(description = "预约日期")
private LocalDate bookingDate;
@@ -132,6 +132,9 @@ public class MeetingRoomEntity extends Model<MeetingRoomEntity> {
@Schema(description="租户编号")
private Long tenantId;
@Schema(description="保洁阿姨id")
private Long cleanUserId;
@TableField(exist = false)
@Schema(description="设备会议室关联")
@@ -15,4 +15,20 @@ public interface MeetingBookingService extends IService<MeetingBookingEntity> {
* @return
*/
Page pageScope(Page page, LambdaQueryWrapper<MeetingBookingEntity> wrapper);
/**
* 确认结束会议
* @param bookingId
* @return
*/
Boolean confirmEndMeeting(Long bookingId);
/**
* 通知阿姨会议前整理会议室
* @param bookingId
* @return
*/
void noticeVisitDesk(Long bookingId);
}
@@ -3,11 +3,22 @@ package com.bsd.pjcloud.integrated.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.common.core.util.WebUtils;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.integrated.entity.MeetingBookingEntity;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.integrated.entity.*;
import com.bsd.pjcloud.integrated.mapper.CleanUserMapper;
import com.bsd.pjcloud.integrated.mapper.MeetingBookingMapper;
import com.bsd.pjcloud.integrated.mapper.MeetingRoomMapper;
import com.bsd.pjcloud.integrated.service.MeetingBookingService;
import com.bsd.pjcloud.thirdparty.api.feign.RemoterThirdPartySmsService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
/**
* 会议室预约
*
@@ -15,9 +26,81 @@ import org.springframework.stereotype.Service;
* @date 2025-05-20 10:51:29
*/
@Service
@AllArgsConstructor
public class MeetingBookingServiceImpl extends ServiceImpl<MeetingBookingMapper, MeetingBookingEntity> implements MeetingBookingService {
private final RemoterThirdPartySmsService reminderThirdPartySmsService;
private final MeetingRoomMapper meetingRoomMapper;
private final CleanUserMapper cleanUserMapper;
@Override
public Page pageScope(Page page, LambdaQueryWrapper<MeetingBookingEntity> wrapper) {
return baseMapper.selectPageByScope(page, wrapper, DataScope.of());
}
@Override
public Boolean confirmEndMeeting(Long bookingId) {
Long currentUserId = SecurityUtils.getUser().getId();
//更新会议预约结束状态
MeetingBookingEntity booking = new MeetingBookingEntity();
if (!booking.getApplicantId().equals(currentUserId)){
throw new RuntimeException("无权限操作");
}
booking.setId(bookingId);
booking.setIsConfirmEnd(1);
boolean updated = updateById(booking);
//查询会议室阿姨信息
MeetingRoomEntity meetingRoomEntity = meetingRoomMapper.selectById(booking.getRoomId());
Long cleanUserId = meetingRoomEntity.getCleanUserId();
if (cleanUserId != null){
CleanUserEntity cleanUserEntity = cleanUserMapper.selectById(cleanUserId);
//发送短信通知阿姨
Map<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("meetingName", meetingRoomEntity.getRoomName()+",地址:"+meetingRoomEntity.getLocation());
reminderThirdPartySmsService.sendParamsMsg(cleanUserEntity.getPhone(), "30757", stringStringHashMap, WebUtils.getIP());
}else {
//没有设置阿姨,无法发送短信
}
return updated;
}
@Override
public void noticeVisitDesk(Long bookingId) {
Long currentUserId = SecurityUtils.getUser().getId();
//更新会议预约结束状态
MeetingBookingEntity booking = new MeetingBookingEntity();
if (!booking.getApplicantId().equals(currentUserId)){
throw new RuntimeException("无权限操作");
}
//查询会议室阿姨信息
MeetingRoomEntity meetingRoomEntity = meetingRoomMapper.selectById(booking.getRoomId());
Long cleanUserId = meetingRoomEntity.getCleanUserId();
if (cleanUserId != null){
CleanUserEntity cleanUserEntity = cleanUserMapper.selectById(cleanUserId);
//发送短信通知阿姨
Map<String, String> stringStringHashMap = new HashMap<>();
stringStringHashMap.put("meetingName", meetingRoomEntity.getRoomName()+",地址:"+meetingRoomEntity.getLocation());
stringStringHashMap.put("meetingDate", booking.getBookingDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
stringStringHashMap.put("deskType", "1");
reminderThirdPartySmsService.sendParamsMsg(cleanUserEntity.getPhone(), "30758", stringStringHashMap, WebUtils.getIP());
}else {
//没有设置阿姨,无法发送短信
}
}
private void sendConfirmEndMeetingSms(VisitorUserEntity visitorUserEntity, VisitorsEntity dataVisitors) {
Map<String, String> stringStringHashMap = new HashMap<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
stringStringHashMap.put("createTime", visitorUserEntity.getCreateTime().format(formatter));
stringStringHashMap.put("visitorName", visitorUserEntity.getRealName()==null?visitorUserEntity.getPhone():visitorUserEntity.getRealName());
stringStringHashMap.put("visitorPhone", visitorUserEntity.getPhone());
stringStringHashMap.put("visitorTime", dataVisitors.getVStartDate() + "至" + dataVisitors.getVEndDate());
stringStringHashMap.put("visitorLocal", dataVisitors.getDeptName());
reminderThirdPartySmsService.sendParamsMsg(visitorUserEntity.getPhone(), "20658", stringStringHashMap, WebUtils.getIP());
}
}
@@ -190,45 +190,19 @@ public class VisitorsServiceImpl extends ServiceImpl<VisitorsMapper, VisitorsEnt
bean.setUserId(userId);
bean.setCreateBy(getCurrentVisitorUsername());
//如果yyIda不为空,就是被邀约了,需要把那条员工的邀约信息改为审核通过
if (visitors.getYyId() != null){
//被邀约直接通过
bean.setCheckStatus(TaskCheckStatusEnum.RESULT.getCode());
//查询当前数据是否被接受过
LambdaQueryWrapper<VisitorsEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(VisitorsEntity::getYyId, visitors.getYyId());
VisitorsEntity visitorsEntitie = baseMapper.selectOne(queryWrapper);
//设置邀约人的id
bean.setReceiveId(visitorsEntitie.getUserId());
if (null != visitorsEntitie){
//如果被接受过,则不能再接受
if (TaskCheckStatusEnum.RESULT.getCode().equals(visitorsEntitie.getCheckStatus())){
throw new ServiceException("该邀约已被接受,请勿重复接受");
}
}
VisitorsEntity visitorsUpdateYY = new VisitorsEntity();
visitorsUpdateYY.setId(visitors.getYyId());
visitorsUpdateYY.setCheckStatus(TaskCheckStatusEnum.RESULT.getCode());
baseMapper.updateById(visitorsUpdateYY);
}else {
//主动申请,需要审核
bean.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode());
}
bean.setCheckStatus(TaskCheckStatusEnum.PADDING.getCode());
List<VisitorsPeopleAppDTO> visitorsPeopleAppDTOList = visitors.getOtherPeople();
if (!CollectionUtils.isEmpty(visitorsPeopleAppDTOList)){
// List<VisitorsPeopleEntity> visitorsPeopleEntities = BeanUtils.toBean(visitorsPeopleAppDTOList, VisitorsPeopleEntity.class);
visitorsPeopleAppDTOList.forEach(i->{
VisitorInfo itemVisitorInfo = new VisitorInfo();
itemVisitorInfo.setVisitorName(i.getName());
itemVisitorInfo.setPhoneNo(i.getMobile());
visitorInfoList.add(itemVisitorInfo);
});
}
// if (!CollectionUtils.isEmpty(visitorsPeopleAppDTOList)){
//// List<VisitorsPeopleEntity> visitorsPeopleEntities = BeanUtils.toBean(visitorsPeopleAppDTOList, VisitorsPeopleEntity.class);
// visitorsPeopleAppDTOList.forEach(i->{
// VisitorInfo itemVisitorInfo = new VisitorInfo();
// itemVisitorInfo.setVisitorName(i.getName());
// itemVisitorInfo.setPhoneNo(i.getMobile());
// visitorInfoList.add(itemVisitorInfo);
// });
// }
int insert = baseMapper.insert(bean);
if (!CollectionUtils.isEmpty(visitorsPeopleAppDTOList)){
@@ -23,6 +23,7 @@
<result property="bookingDate" column="booking_date"/>
<result property="processInstanceId" column="process_instance_id"/>
<result property="checkReason" column="check_reason"/>
<result property="isConfirmEnd" column="is_confirm_end"/>
</resultMap>
<select id="findByRoomIdAndDate" resultType="com.bsd.pjcloud.integrated.entity.MeetingBookingEntity">
SELECT * FROM meeting_booking WHERE room_id = #{roomId} AND start_time >= #{date} AND start_time &lt;= #{date}
@@ -0,0 +1,116 @@
package com.bsd.pjcloud.supermarket.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.bsd.pjcloud.common.core.util.TenantTable;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 在线商品分类
*
* @author zjf
* @date 2025-06-18 16:49:20
*/
@Data
@TenantTable
@TableName("mall_category")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "在线商品分类")
public class MallCategoryEntity extends Model<MallCategoryEntity> {
/**
* id
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="id")
private Long id;
/**
* 父级分类ID,0为顶级
*/
@Schema(description="父级分类ID,0为顶级")
private Long parentId;
/**
* 分类名称
*/
@Schema(description="分类名称")
private String name;
/**
* 层级(1/2/3)
*/
@Schema(description="层级(1/2/3)")
private Integer level;
/**
* 排序
*/
@Schema(description="排序")
private Integer sort;
/**
* 状态(0正常,1下架)
*/
@Schema(description="状态(0正常,1下架)")
private Integer status;
/**
* 分类图片
*/
@Schema(description="分类图片")
private String picUrl;
/**
* 部门ID
*/
@Schema(description="部门ID")
private Long deptId;
/**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建者")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建时间")
private LocalDateTime createTime;
/**
* 更新者
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新者")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新时间")
private LocalDateTime updateTime;
/**
* 是否删除(0=正常 1=删除)
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description="是否删除(0=正常 1=删除)")
private String delFlag;
/**
* 租户编号
*/
@Schema(description="租户编号")
private Long tenantId;
}
@@ -0,0 +1,17 @@
package com.bsd.pjcloud.supermarket.vo.mall;
import lombok.Data;
import java.util.List;
@Data
public class MallCategoryTreeVo {
private Long id;
private String name;
private Long parentId;
private Integer level;
private Integer sort;
private Integer status;
private String picUrl;
private List<MallCategoryTreeVo> children;
}
@@ -0,0 +1,158 @@
package com.bsd.pjcloud.supermarket.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.supermarket.entity.MallCategoryEntity;
import com.bsd.pjcloud.supermarket.service.MallCategoryService;
import com.bsd.pjcloud.supermarket.vo.mall.MallCategoryTreeVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
/**
* 在线商品分类
*
* @author zjf
* @date 2025-06-18 16:49:20
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/mallCategory" )
@Tag(description = "MallCategory" , name = "在线商品分类管理" )
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class MallCategoryController {
private final MallCategoryService MallCategoryService;
/**
* 分页查询
* @param page 分页对象
* @param MallCategory 在线商品分类
* @return
*/
@Operation(summary = "分页查询" , description = "分页查询" )
@GetMapping("/page" )
@PreAuthorize("@pms.hasPermission('supermarket_mallCategory_view')" )
public R getMallCategoryPage(@ParameterObject Page page, @ParameterObject MallCategoryEntity MallCategory) {
LambdaQueryWrapper<MallCategoryEntity> wrapper = Wrappers.lambdaQuery();
wrapper.eq(StrUtil.isNotBlank(MallCategory.getName()),MallCategoryEntity::getName,MallCategory.getName());
return R.ok(MallCategoryService.pageScope(page, wrapper));
}
/**
* 通过id查询在线商品分类
* @param id id
* @return R
*/
@Operation(summary = "通过id查询" , description = "通过id查询" )
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('supermarket_mallCategory_view')" )
public R getById(@PathVariable("id" ) Long id) {
return R.ok(MallCategoryService.getById(id));
}
/**
* 新增在线商品分类
* @param MallCategory 在线商品分类
* @return R
*/
@Operation(summary = "新增在线商品分类" , description = "新增在线商品分类" )
@SysLog("新增在线商品分类" )
@PostMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallCategory_add')" )
public R save(@RequestBody MallCategoryEntity MallCategory) {
MallCategory.setDeptId(SecurityUtils.getUser().getDeptId());
return R.ok(MallCategoryService.save(MallCategory));
}
/**
* 修改在线商品分类
* @param MallCategory 在线商品分类
* @return R
*/
@Operation(summary = "修改在线商品分类" , description = "修改在线商品分类" )
@SysLog("修改在线商品分类" )
@PutMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallCategory_edit')" )
public R updateById(@RequestBody MallCategoryEntity MallCategory) {
return R.ok(MallCategoryService.updateById(MallCategory));
}
/**
* 通过id删除在线商品分类
* @param ids id列表
* @return R
*/
@Operation(summary = "通过id删除在线商品分类" , description = "通过id删除在线商品分类" )
@SysLog("通过id删除在线商品分类" )
@DeleteMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallCategory_del')" )
public R removeById(@RequestBody Long[] ids) {
return R.ok(MallCategoryService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 导出excel 表格
* @param MallCategory 查询条件
* @param ids 导出指定ID
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('supermarket_mallCategory_export')" )
public List<MallCategoryEntity> export(MallCategoryEntity MallCategory,Long[] ids) {
return MallCategoryService.list(Wrappers.lambdaQuery(MallCategory).in(ArrayUtil.isNotEmpty(ids), MallCategoryEntity::getId, ids));
}
/**
* 分类树结构
*/
@GetMapping("/tree")
@Operation(summary = "分类树", description = "获取所有分类的树结构")
public R<List<MallCategoryTreeVo>> tree() {
List<MallCategoryEntity> all = MallCategoryService.listScope();
List<MallCategoryTreeVo> tree = buildCategoryTree(all, 0L);
return R.ok(tree);
}
private List<MallCategoryTreeVo> buildCategoryTree(List<MallCategoryEntity> all, Long parentId) {
List<MallCategoryTreeVo> result = new java.util.ArrayList<>();
for (MallCategoryEntity cat : all) {
if (Objects.equals(cat.getParentId(), parentId)) {
MallCategoryTreeVo vo = com.bsd.pjcloud.common.core.util.BeanUtils.toBean(cat, MallCategoryTreeVo.class);
vo.setChildren(buildCategoryTree(all, cat.getId()));
result.add(vo);
}
}
return result;
}
/**
* 根据父级ID查子分类
*/
@GetMapping("/listByParent/{parentId}")
@Operation(summary = "根据父级ID查子分类", description = "根据父级ID查子分类")
public R<List<MallCategoryEntity>> listByParent(@PathVariable("parentId") Long parentId) {
List<MallCategoryEntity> list = MallCategoryService.list(Wrappers.<MallCategoryEntity>lambdaQuery().eq(MallCategoryEntity::getParentId, parentId));
return R.ok(list);
}
}
@@ -0,0 +1,123 @@
package com.bsd.pjcloud.supermarket.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.supermarket.entity.MallMerchantEntity;
import com.bsd.pjcloud.supermarket.service.MallMerchantService;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
/**
* 共富商城商户
*
* @author zjf
* @date 2025-09-02 17:03:31
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/mallMerchant" )
@Tag(description = "mallMerchant" , name = "共富商城商户管理" )
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class MallMerchantController {
private final MallMerchantService mallMerchantService;
/**
* 分页查询
* @param page 分页对象
* @param mallMerchant 共富商城商户
* @return
*/
@Operation(summary = "分页查询" , description = "分页查询" )
@GetMapping("/page" )
@PreAuthorize("@pms.hasPermission('supermarket_mallMerchant_view')" )
public R getMallMerchantPage(@ParameterObject Page page, @ParameterObject MallMerchantEntity mallMerchant) {
LambdaQueryWrapper<MallMerchantEntity> wrapper = Wrappers.lambdaQuery();
wrapper.like(StrUtil.isNotBlank(mallMerchant.getName()),MallMerchantEntity::getName,mallMerchant.getName());
wrapper.like(StrUtil.isNotBlank(mallMerchant.getContactName()),MallMerchantEntity::getContactName,mallMerchant.getContactName());
wrapper.eq(StrUtil.isNotBlank(mallMerchant.getContactPhone()),MallMerchantEntity::getContactPhone,mallMerchant.getContactPhone());
return R.ok(mallMerchantService.page(page, wrapper));
}
/**
* 通过id查询共富商城商户
* @param id id
* @return R
*/
@Operation(summary = "通过id查询" , description = "通过id查询" )
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('supermarket_mallMerchant_view')" )
public R getById(@PathVariable("id" ) Long id) {
return R.ok(mallMerchantService.getById(id));
}
/**
* 新增共富商城商户
* @param mallMerchant 共富商城商户
* @return R
*/
@Operation(summary = "新增共富商城商户" , description = "新增共富商城商户" )
@SysLog("新增共富商城商户" )
@PostMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallMerchant_add')" )
public R save(@RequestBody MallMerchantEntity mallMerchant) {
return R.ok(mallMerchantService.save(mallMerchant));
}
/**
* 修改共富商城商户
* @param mallMerchant 共富商城商户
* @return R
*/
@Operation(summary = "修改共富商城商户" , description = "修改共富商城商户" )
@SysLog("修改共富商城商户" )
@PutMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallMerchant_edit')" )
public R updateById(@RequestBody MallMerchantEntity mallMerchant) {
return R.ok(mallMerchantService.updateById(mallMerchant));
}
/**
* 通过id删除共富商城商户
* @param ids id列表
* @return R
*/
@Operation(summary = "通过id删除共富商城商户" , description = "通过id删除共富商城商户" )
@SysLog("通过id删除共富商城商户" )
@DeleteMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallMerchant_del')" )
public R removeById(@RequestBody Long[] ids) {
return R.ok(mallMerchantService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 导出excel 表格
* @param mallMerchant 查询条件
* @param ids 导出指定ID
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('supermarket_mallMerchant_export')" )
public List<MallMerchantEntity> export(MallMerchantEntity mallMerchant,Long[] ids) {
return mallMerchantService.list(Wrappers.lambdaQuery(mallMerchant).in(ArrayUtil.isNotEmpty(ids), MallMerchantEntity::getId, ids));
}
}
@@ -0,0 +1,122 @@
package com.bsd.pjcloud.supermarket.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.supermarket.entity.MallProductEntity;
import com.bsd.pjcloud.supermarket.service.MallProductService;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
/**
* 共富商城商品信息
*
* @author zjf
* @date 2025-09-02 17:47:01
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/mallProduct" )
@Tag(description = "mallProduct" , name = "共富商城商品信息管理" )
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class MallProductController {
private final MallProductService mallProductService;
/**
* 分页查询
* @param page 分页对象
* @param mallProduct 共富商城商品信息
* @return
*/
@Operation(summary = "分页查询" , description = "分页查询" )
@GetMapping("/page" )
@PreAuthorize("@pms.hasPermission('supermarket_mallProduct_view')" )
public R getMallProductPage(@ParameterObject Page page, @ParameterObject MallProductEntity mallProduct) {
LambdaQueryWrapper<MallProductEntity> wrapper = Wrappers.lambdaQuery();
wrapper.eq(Objects.nonNull(mallProduct.getCategoryId()),MallProductEntity::getCategoryId,mallProduct.getCategoryId());
wrapper.like(StrUtil.isNotBlank(mallProduct.getTitle()),MallProductEntity::getTitle,mallProduct.getTitle());
return R.ok(mallProductService.page(page, wrapper));
}
/**
* 通过id查询共富商城商品信息
* @param id id
* @return R
*/
@Operation(summary = "通过id查询" , description = "通过id查询" )
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('supermarket_mallProduct_view')" )
public R getById(@PathVariable("id" ) Long id) {
return R.ok(mallProductService.getById(id));
}
/**
* 新增共富商城商品信息
* @param mallProduct 共富商城商品信息
* @return R
*/
@Operation(summary = "新增共富商城商品信息" , description = "新增共富商城商品信息" )
@SysLog("新增共富商城商品信息" )
@PostMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallProduct_add')" )
public R save(@RequestBody MallProductEntity mallProduct) {
return R.ok(mallProductService.save(mallProduct));
}
/**
* 修改共富商城商品信息
* @param mallProduct 共富商城商品信息
* @return R
*/
@Operation(summary = "修改共富商城商品信息" , description = "修改共富商城商品信息" )
@SysLog("修改共富商城商品信息" )
@PutMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallProduct_edit')" )
public R updateById(@RequestBody MallProductEntity mallProduct) {
return R.ok(mallProductService.updateById(mallProduct));
}
/**
* 通过id删除共富商城商品信息
* @param ids id列表
* @return R
*/
@Operation(summary = "通过id删除共富商城商品信息" , description = "通过id删除共富商城商品信息" )
@SysLog("通过id删除共富商城商品信息" )
@DeleteMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallProduct_del')" )
public R removeById(@RequestBody Long[] ids) {
return R.ok(mallProductService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 导出excel 表格
* @param mallProduct 查询条件
* @param ids 导出指定ID
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('supermarket_mallProduct_export')" )
public List<MallProductEntity> export(MallProductEntity mallProduct,Long[] ids) {
return mallProductService.list(Wrappers.lambdaQuery(mallProduct).in(ArrayUtil.isNotEmpty(ids), MallProductEntity::getId, ids));
}
}
@@ -0,0 +1,119 @@
package com.bsd.pjcloud.supermarket.controller;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.supermarket.entity.MallProductSkuEntity;
import com.bsd.pjcloud.supermarket.service.MallProductSkuService;
import org.springframework.security.access.prepost.PreAuthorize;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Objects;
/**
* 共富商城商品SKU
*
* @author zjf
* @date 2025-09-02 17:53:56
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/mallProductSku" )
@Tag(description = "mallProductSku" , name = "共富商城商品SKU管理" )
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class MallProductSkuController {
private final MallProductSkuService mallProductSkuService;
/**
* 分页查询
* @param page 分页对象
* @param mallProductSku 共富商城商品SKU
* @return
*/
@Operation(summary = "分页查询" , description = "分页查询" )
@GetMapping("/page" )
@PreAuthorize("@pms.hasPermission('supermarket_mallProductSku_view')" )
public R getMallProductSkuPage(@ParameterObject Page page, @ParameterObject MallProductSkuEntity mallProductSku) {
LambdaQueryWrapper<MallProductSkuEntity> wrapper = Wrappers.lambdaQuery();
return R.ok(mallProductSkuService.page(page, wrapper));
}
/**
* 通过id查询共富商城商品SKU
* @param id id
* @return R
*/
@Operation(summary = "通过id查询" , description = "通过id查询" )
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('supermarket_mallProductSku_view')" )
public R getById(@PathVariable("id" ) Long id) {
return R.ok(mallProductSkuService.getById(id));
}
/**
* 新增共富商城商品SKU
* @param mallProductSku 共富商城商品SKU
* @return R
*/
@Operation(summary = "新增共富商城商品SKU" , description = "新增共富商城商品SKU" )
@SysLog("新增共富商城商品SKU" )
@PostMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallProductSku_add')" )
public R save(@RequestBody MallProductSkuEntity mallProductSku) {
return R.ok(mallProductSkuService.save(mallProductSku));
}
/**
* 修改共富商城商品SKU
* @param mallProductSku 共富商城商品SKU
* @return R
*/
@Operation(summary = "修改共富商城商品SKU" , description = "修改共富商城商品SKU" )
@SysLog("修改共富商城商品SKU" )
@PutMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallProductSku_edit')" )
public R updateById(@RequestBody MallProductSkuEntity mallProductSku) {
return R.ok(mallProductSkuService.updateById(mallProductSku));
}
/**
* 通过id删除共富商城商品SKU
* @param ids id列表
* @return R
*/
@Operation(summary = "通过id删除共富商城商品SKU" , description = "通过id删除共富商城商品SKU" )
@SysLog("通过id删除共富商城商品SKU" )
@DeleteMapping
@PreAuthorize("@pms.hasPermission('supermarket_mallProductSku_del')" )
public R removeById(@RequestBody Long[] ids) {
return R.ok(mallProductSkuService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 导出excel 表格
* @param mallProductSku 查询条件
* @param ids 导出指定ID
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('supermarket_mallProductSku_export')" )
public List<MallProductSkuEntity> export(MallProductSkuEntity mallProductSku,Long[] ids) {
return mallProductSkuService.list(Wrappers.lambdaQuery(mallProductSku).in(ArrayUtil.isNotEmpty(ids), MallProductSkuEntity::getId, ids));
}
}
@@ -64,7 +64,7 @@ public class ShopCategoryController {
@Operation(summary = "通过id查询" , description = "通过id查询" )
@GetMapping("/{id}" )
@PreAuthorize("@pms.hasPermission('supermarket_shopCategory_view')" )
public R getById(@PathVariable("id" ) Integer id) {
public R getById(@PathVariable("id" ) Long id) {
return R.ok(shopCategoryService.getById(id));
}
@@ -104,7 +104,7 @@ public class ShopCategoryController {
@SysLog("通过id删除在线商品分类" )
@DeleteMapping
@PreAuthorize("@pms.hasPermission('supermarket_shopCategory_del')" )
public R removeById(@RequestBody Integer[] ids) {
public R removeById(@RequestBody Long[] ids) {
return R.ok(shopCategoryService.removeBatchByIds(CollUtil.toList(ids)));
}
@@ -118,7 +118,7 @@ public class ShopCategoryController {
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('supermarket_shopCategory_export')" )
public List<ShopCategoryEntity> export(ShopCategoryEntity shopCategory,Integer[] ids) {
public List<ShopCategoryEntity> export(ShopCategoryEntity shopCategory,Long[] ids) {
return shopCategoryService.list(Wrappers.lambdaQuery(shopCategory).in(ArrayUtil.isNotEmpty(ids), ShopCategoryEntity::getId, ids));
}
@@ -150,7 +150,7 @@ public class ShopCategoryController {
*/
@GetMapping("/listByParent/{parentId}")
@Operation(summary = "根据父级ID查子分类", description = "根据父级ID查子分类")
public R<List<ShopCategoryEntity>> listByParent(@PathVariable("parentId") Integer parentId) {
public R<List<ShopCategoryEntity>> listByParent(@PathVariable("parentId") Long parentId) {
List<ShopCategoryEntity> list = shopCategoryService.list(Wrappers.<ShopCategoryEntity>lambdaQuery().eq(ShopCategoryEntity::getParentId, parentId));
return R.ok(list);
}
@@ -0,0 +1,139 @@
package com.bsd.pjcloud.supermarket.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.time.LocalDateTime;
/**
* 共富商城商户
*
* @author zjf
* @date 2025-09-02 17:03:31
*/
@Data
@TenantTable
@TableName("mall_merchant")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "共富商城商户")
public class MallMerchantEntity extends Model<MallMerchantEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="主键")
private Long id;
/**
* 商户名称
*/
@Schema(description="商户名称")
private String name;
/**
* 商户简称
*/
@Schema(description="商户简称")
private String shortName;
/**
* 联系人
*/
@Schema(description="联系人")
private String contactName;
/**
* 联系电话
*/
@Schema(description="联系电话")
private String contactPhone;
/**
* 邮箱
*/
@Schema(description="邮箱")
private String email;
/**
* 状态(1启用 0停用)
*/
@Schema(description="状态(1启用 0停用)")
private Integer status;
/**
* 营业执照号
*/
@Schema(description="营业执照号")
private String licenseNo;
/**
* 详细地址
*/
@Schema(description="详细地址")
private String address;
/**
* 商户图片URL(逗号分隔)
*/
@Schema(description="商户图片URL(逗号分隔)")
private String images;
/**
* 备注
*/
@Schema(description="备注")
private String remark;
/**
* 部门ID
*/
@Schema(description="部门ID")
private Long deptId;
/**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建者")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建时间")
private LocalDateTime createTime;
/**
* 更新者
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新者")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新时间")
private LocalDateTime updateTime;
/**
* 是否删除(0=正常 1=删除)
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description="是否删除(0=正常 1=删除)")
private String delFlag;
/**
* 租户编号
*/
@Schema(description="租户编号")
private Long tenantId;
}
@@ -0,0 +1,176 @@
package com.bsd.pjcloud.supermarket.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 共富商城商品信息
*
* @author zjf
* @date 2025-09-02 17:47:01
*/
@Data
@TenantTable
@TableName("mall_product")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "共富商城商品信息")
public class MallProductEntity extends Model<MallProductEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="主键")
private Long id;
/**
* 商户ID
*/
@Schema(description="商户ID")
private Long merchantId;
/**
* 类目ID
*/
@Schema(description="类目ID")
private Long categoryId;
/**
* 商品标题
*/
@Schema(description="商品标题")
private String title;
/**
* 副标题
*/
@Schema(description="副标题")
private String subTitle;
/**
* 品牌
*/
@Schema(description="品牌")
private String brand;
/**
* 主图
*/
@Schema(description="主图")
private String coverImage;
/**
* SPU轮播图URL(逗号分隔,按顺序)
*/
@Schema(description="SPU轮播图URL(逗号分隔,按顺序)")
private String carouselImages;
/**
* 定价方式(1多SKU 2单价SPU)
*/
@Schema(description="定价方式(1多SKU 2单价SPU)")
private Integer priceType;
/**
* SPU售价(当price_type=2有效)
*/
@Schema(description="SPU售价(当price_type=2有效)")
private BigDecimal spuPrice;
/**
* 划线价
*/
@Schema(description="划线价")
private BigDecimal originalPrice;
/**
* 总库存(冗余)
*/
@Schema(description="总库存(冗余)")
private Integer totalStock;
/**
* 计量单位
*/
@Schema(description="计量单位")
private String unit;
/**
* 状态(1上架 0下架)
*/
@Schema(description="状态(1上架 0下架)")
private Integer status;
/**
* 开售时间
*/
@Schema(description="开售时间")
private LocalDateTime saleStartTime;
/**
* 停售时间
*/
@Schema(description="停售时间")
private LocalDateTime saleEndTime;
/**
* 详情描述(HTML/文本)
*/
@Schema(description="详情描述(HTML/文本)")
private String description;
/**
* 部门ID
*/
@Schema(description="部门ID")
private Long deptId;
/**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建者")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建时间")
private LocalDateTime createTime;
/**
* 更新者
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新者")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新时间")
private LocalDateTime updateTime;
/**
* 是否删除(0=正常 1=删除)
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description="是否删除(0=正常 1=删除)")
private String delFlag;
/**
* 租户编号
*/
@Schema(description="租户编号")
private Long tenantId;
}
@@ -0,0 +1,140 @@
package com.bsd.pjcloud.supermarket.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.bsd.pjcloud.common.core.util.TenantTable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 共富商城商品SKU
*
* @author zjf
* @date 2025-09-02 17:53:56
*/
@Data
@TenantTable
@TableName("mall_product_sku")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "共富商城商品SKU")
public class MallProductSkuEntity extends Model<MallProductSkuEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description="主键")
private Long id;
/**
* SPU ID
*/
@Schema(description="SPU ID")
private Long productId;
/**
* SKU编码
*/
@Schema(description="SKU编码")
private String skuCode;
/**
* SKU名称(规格组合)
*/
@Schema(description="SKU名称(规格组合)")
private String skuName;
/**
* 售价
*/
@Schema(description="售价")
private BigDecimal price;
/**
* 成本价
*/
@Schema(description="成本价")
private BigDecimal costPrice;
/**
* 库存
*/
@Schema(description="库存")
private Integer stock;
/**
* 条码
*/
@Schema(description="条码")
private String barcode;
/**
* 重量(克)
*/
@Schema(description="重量(克)")
private Integer weightG;
/**
* 体积(立方厘米)
*/
@Schema(description="体积(立方厘米)")
private Integer volumeCm3;
/**
* 状态(1启用 0停用)
*/
@Schema(description="状态(1启用 0停用)")
private Integer status;
/**
* 部门ID
*/
@Schema(description="部门ID")
private Long deptId;
/**
* 创建者
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建者")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description="创建时间")
private LocalDateTime createTime;
/**
* 更新者
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新者")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description="更新时间")
private LocalDateTime updateTime;
/**
* 是否删除(0=正常 1=删除)
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description="是否删除(0=正常 1=删除)")
private String delFlag;
/**
* 租户编号
*/
@Schema(description="租户编号")
private Long tenantId;
}
@@ -0,0 +1,11 @@
package com.bsd.pjcloud.supermarket.mapper;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.supermarket.entity.MallCategoryEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MallCategoryMapper extends PjcloudBaseMapper<MallCategoryEntity> {
}
@@ -0,0 +1,11 @@
package com.bsd.pjcloud.supermarket.mapper;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.supermarket.entity.MallMerchantEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MallMerchantMapper extends PjcloudBaseMapper<MallMerchantEntity> {
}
@@ -0,0 +1,11 @@
package com.bsd.pjcloud.supermarket.mapper;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.supermarket.entity.MallProductEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MallProductMapper extends PjcloudBaseMapper<MallProductEntity> {
}
@@ -0,0 +1,11 @@
package com.bsd.pjcloud.supermarket.mapper;
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
import com.bsd.pjcloud.supermarket.entity.MallProductSkuEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface MallProductSkuMapper extends PjcloudBaseMapper<MallProductSkuEntity> {
}
@@ -0,0 +1,27 @@
package com.bsd.pjcloud.supermarket.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.supermarket.entity.MallCategoryEntity;
import java.util.List;
public interface MallCategoryService extends IService<MallCategoryEntity> {
/**
* 列表,条件当前权限
* @return
*/
List<MallCategoryEntity> listScope();
/**
* 分页,条件当前权限
* @param page
* @param wrapper
* @return
*/
Object pageScope(Page page, LambdaQueryWrapper<MallCategoryEntity> wrapper);
}
@@ -0,0 +1,8 @@
package com.bsd.pjcloud.supermarket.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.supermarket.entity.MallMerchantEntity;
public interface MallMerchantService extends IService<MallMerchantEntity> {
}
@@ -0,0 +1,8 @@
package com.bsd.pjcloud.supermarket.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.supermarket.entity.MallProductEntity;
public interface MallProductService extends IService<MallProductEntity> {
}
@@ -0,0 +1,8 @@
package com.bsd.pjcloud.supermarket.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.supermarket.entity.MallProductSkuEntity;
public interface MallProductSkuService extends IService<MallProductSkuEntity> {
}
@@ -0,0 +1,32 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.supermarket.entity.MallCategoryEntity;
import com.bsd.pjcloud.supermarket.mapper.MallCategoryMapper;
import com.bsd.pjcloud.supermarket.service.MallCategoryService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 在线商品分类
*
* @author zjf
* @date 2025-06-18 16:49:20
*/
@Service
public class MallCategoryServiceImpl extends ServiceImpl<MallCategoryMapper, MallCategoryEntity> implements MallCategoryService {
@Override
public List<MallCategoryEntity> listScope() {
return baseMapper.selectListByScope(null, DataScope.of());
}
@Override
public Object pageScope(Page page, LambdaQueryWrapper<MallCategoryEntity> wrapper) {
return baseMapper.selectPageByScope(page, wrapper, DataScope.of());
}
}
@@ -0,0 +1,16 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.supermarket.entity.MallMerchantEntity;
import com.bsd.pjcloud.supermarket.mapper.MallMerchantMapper;
import com.bsd.pjcloud.supermarket.service.MallMerchantService;
import org.springframework.stereotype.Service;
/**
* 共富商城商户
*
* @author zjf
* @date 2025-09-02 17:03:31
*/
@Service
public class MallMerchantServiceImpl extends ServiceImpl<MallMerchantMapper, MallMerchantEntity> implements MallMerchantService {
}
@@ -0,0 +1,16 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.supermarket.entity.MallProductEntity;
import com.bsd.pjcloud.supermarket.mapper.MallProductMapper;
import com.bsd.pjcloud.supermarket.service.MallProductService;
import org.springframework.stereotype.Service;
/**
* 共富商城商品信息
*
* @author zjf
* @date 2025-09-02 17:47:01
*/
@Service
public class MallProductServiceImpl extends ServiceImpl<MallProductMapper, MallProductEntity> implements MallProductService {
}
@@ -0,0 +1,16 @@
package com.bsd.pjcloud.supermarket.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.bsd.pjcloud.supermarket.entity.MallProductSkuEntity;
import com.bsd.pjcloud.supermarket.mapper.MallProductSkuMapper;
import com.bsd.pjcloud.supermarket.service.MallProductSkuService;
import org.springframework.stereotype.Service;
/**
* 共富商城商品SKU
*
* @author zjf
* @date 2025-09-02 17:53:56
*/
@Service
public class MallProductSkuServiceImpl extends ServiceImpl<MallProductSkuMapper, MallProductSkuEntity> implements MallProductSkuService {
}
@@ -0,0 +1,22 @@
<?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.bsd.pjcloud.supermarket.mapper.MallCategoryMapper">
<resultMap id="MallCategoryMap" type="com.bsd.pjcloud.supermarket.entity.MallCategoryEntity">
<id property="id" column="id"/>
<result property="parentId" column="parent_id"/>
<result property="name" column="name"/>
<result property="level" column="level"/>
<result property="sort" column="sort"/>
<result property="status" column="status"/>
<result property="picUrl" column="pic_url"/>
<result property="deptId" column="dept_id"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
</mapper>
@@ -0,0 +1,26 @@
<?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.bsd.pjcloud.supermarket.mapper.MallMerchantMapper">
<resultMap id="mallMerchantMap" type="com.bsd.pjcloud.supermarket.entity.MallMerchantEntity">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="shortName" column="short_name"/>
<result property="contactName" column="contact_name"/>
<result property="contactPhone" column="contact_phone"/>
<result property="email" column="email"/>
<result property="status" column="status"/>
<result property="licenseNo" column="license_no"/>
<result property="address" column="address"/>
<result property="images" column="images"/>
<result property="remark" column="remark"/>
<result property="deptId" column="dept_id"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
</mapper>
@@ -0,0 +1,32 @@
<?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.bsd.pjcloud.supermarket.mapper.MallProductMapper">
<resultMap id="mallProductMap" type="com.bsd.pjcloud.supermarket.entity.MallProductEntity">
<id property="id" column="id"/>
<result property="merchantId" column="merchant_id"/>
<result property="categoryId" column="category_id"/>
<result property="title" column="title"/>
<result property="subTitle" column="sub_title"/>
<result property="brand" column="brand"/>
<result property="coverImage" column="cover_image"/>
<result property="carouselImages" column="carousel_images"/>
<result property="priceType" column="price_type"/>
<result property="spuPrice" column="spu_price"/>
<result property="originalPrice" column="original_price"/>
<result property="totalStock" column="total_stock"/>
<result property="unit" column="unit"/>
<result property="status" column="status"/>
<result property="saleStartTime" column="sale_start_time"/>
<result property="saleEndTime" column="sale_end_time"/>
<result property="description" column="description"/>
<result property="deptId" column="dept_id"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
</mapper>
@@ -0,0 +1,26 @@
<?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.bsd.pjcloud.supermarket.mapper.MallProductSkuMapper">
<resultMap id="mallProductSkuMap" type="com.bsd.pjcloud.supermarket.entity.MallProductSkuEntity">
<id property="id" column="id"/>
<result property="productId" column="product_id"/>
<result property="skuCode" column="sku_code"/>
<result property="skuName" column="sku_name"/>
<result property="price" column="price"/>
<result property="costPrice" column="cost_price"/>
<result property="stock" column="stock"/>
<result property="barcode" column="barcode"/>
<result property="weightG" column="weight_g"/>
<result property="volumeCm3" column="volume_cm3"/>
<result property="status" column="status"/>
<result property="deptId" column="dept_id"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="delFlag" column="del_flag"/>
<result property="tenantId" column="tenant_id"/>
</resultMap>
</mapper>
@@ -119,18 +119,27 @@ sms:
params: [ "code", "date" ]
20658:
content: "您于{createTime}申请的访客预约现已通过审核!
▶ 访客姓名:{visitorName}
▶ 访客手机号:{visitorPhone}
▶ 到访时间:{visitorTime}
▶ 访问地点:{visitorLocal}
请及时登录系统查看详情:{url}"
▶ 访客姓名:{visitorName}
▶ 访客手机号:{visitorPhone}
▶ 到访时间:{visitorTime}
▶ 访问地点:{visitorLocal}
请及时登录系统查看详情:{url}"
params: [ "createTime", "visitorName", "visitorPhone", "visitorTime", "visitorLocal","url" ]
27694: # 验证码模板
27694:
content: "尊敬的{visitorName}先生/女士:
{yyName}邀请您于{visitorTime}访问{deptName},为保障您的顺利通行,请通过地址:{url}
查看详情。"
{yyName}邀请您于{visitorTime}访问{deptName},为保障您的顺利通行,请通过地址:{url}
查看详情。"
params: [ "visitorName", "yyName", "visitorTime", "deptName", "url" ]
30758:
content: "阿姨您好!{meetingName}于{meetingDate}开始会议,桌子拜访形态{deskType},请提前安排整理工作!"
params: [ "meetingDate", "deskType" ]
30757:
content: "阿姨您好!{s20}已完成会议,麻烦您前去做好整洁清理工作。"
params: [ "meetingName" ]
settings:
default-ext-code: ""
timeout-seconds: 300