diff --git a/pom.xml b/pom.xml index 8d068b0..c2498f5 100644 --- a/pom.xml +++ b/pom.xml @@ -3,12 +3,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.eleadmin - ele-admin-api - 1.5.0 + com.gxwebsoft + com-gxwebsoft-server + 1.5.2 - ele-admin-api - EleAdminApi project for Spring Boot + com-gxwebsoft-api + WebSoftApi project for Spring Boot org.springframework.boot @@ -86,6 +86,13 @@ 3.4.3.3 + + + com.github.yulichang + mybatis-plus-join-boot-starter + 1.4.5 + + com.baomidou @@ -97,22 +104,22 @@ cn.hutool hutool-core - 5.7.11 + 5.8.11 cn.hutool hutool-extra - 5.7.11 + 5.8.11 cn.hutool hutool-http - 5.7.11 + 5.8.11 cn.hutool hutool-crypto - 5.7.11 + 5.8.11 @@ -181,13 +188,89 @@ 1.6.2 - + - org.apache.httpcomponents - httpclient - 4.5.2 + org.springframework.boot + spring-boot-starter-data-redis + + + com.aliyun + aliyun-java-sdk-core + 4.4.3 + + + + com.alipay.sdk + alipay-sdk-java + 4.35.0.ALL + + + + org.bouncycastle + bcprov-jdk15on + 1.70 + + + + commons-logging + commons-logging + 1.2 + + + + com.alibaba + fastjson + 2.0.20 + + + + + com.google.zxing + core + 3.3.3 + + + + com.google.code.gson + gson + 2.8.0 + + + + com.vaadin.external.google + android-json + 0.0.20131108.vaadin1 + compile + + + + + com.corundumstudio.socketio + netty-socketio + 2.0.3 + + + + + com.github.wechatpay-apiv3 + wechatpay-java + 0.2.9 + + + + com.github.binarywang + weixin-java-miniapp + 4.5.0 + + + + + com.aliyun.oss + aliyun-sdk-oss + 3.17.0 + @@ -210,6 +293,7 @@ org.springframework.boot spring-boot-maven-plugin + 2.5.4 diff --git a/src/main/java/com/gxwebsoft/WebSoftApplication.java b/src/main/java/com/gxwebsoft/WebSoftApplication.java new file mode 100644 index 0000000..80c9a42 --- /dev/null +++ b/src/main/java/com/gxwebsoft/WebSoftApplication.java @@ -0,0 +1,28 @@ +package com.gxwebsoft; + +import com.gxwebsoft.common.core.config.ConfigProperties; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * 启动类 + * Created by WebSoft on 2018-02-22 11:29:03 + */ +@EnableAsync +@EnableTransactionManagement +@MapperScan("com.gxwebsoft.**.mapper") +@EnableConfigurationProperties(ConfigProperties.class) +@SpringBootApplication +@EnableScheduling +public class WebSoftApplication { + + public static void main(String[] args) { + SpringApplication.run(WebSoftApplication.class, args); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/constants/EquipmentConstants.java b/src/main/java/com/gxwebsoft/apps/constants/EquipmentConstants.java new file mode 100644 index 0000000..82a407c --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/constants/EquipmentConstants.java @@ -0,0 +1,10 @@ +package com.gxwebsoft.apps.constants; + +public class EquipmentConstants { + // 事件类型 + public static final String EVENT_TYPE_BIND = "电池绑定"; + public static final String EVENT_TYPE_CHANGE = "电池更换"; + public static final String EVENT_TYPE_UNBIND = "电池解绑"; + + +} diff --git a/src/main/java/com/gxwebsoft/apps/constants/HualalaConstants.java b/src/main/java/com/gxwebsoft/apps/constants/HualalaConstants.java new file mode 100644 index 0000000..c00e1da --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/constants/HualalaConstants.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.apps.constants; + +public class HualalaConstants { + // 集团ID + public static final String GROUP_ID = "1528"; + // 服务器接口 + public static final String API_URL = "https://www-openapi.hualala.com"; + // appKey + public static final String APP_KEY = "2487"; + // appSecret + public static final String APP_SECRET = "Hgr520dQpEiFe0FV"; + // version + public static final Integer VERSION = 3; + // 店铺ID + public static final Long shopId = 0L; + + +} diff --git a/src/main/java/com/gxwebsoft/apps/constants/SfExpressConstants.java b/src/main/java/com/gxwebsoft/apps/constants/SfExpressConstants.java new file mode 100644 index 0000000..c68ddfe --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/constants/SfExpressConstants.java @@ -0,0 +1,13 @@ +package com.gxwebsoft.apps.constants; + +public class SfExpressConstants { + // 开发者id + public static final Long DEV_ID = 1651421896L; + // 开发者密钥 + public static final String DEV_KEY = "2f10570c5057570fe0e488a425a6d813"; + // 正式环境 + public static final String SERVER_HOST = "https://openic.sf-express.com"; + // 店铺ID + public static final String SHOP_ID = "3243279847393"; + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcAgentController.java b/src/main/java/com/gxwebsoft/apps/controller/BcAgentController.java new file mode 100644 index 0000000..84c1ee9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcAgentController.java @@ -0,0 +1,127 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.BcAgentService; +import com.gxwebsoft.apps.entity.BcAgent; +import com.gxwebsoft.apps.param.BcAgentParam; +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 com.gxwebsoft.common.system.entity.User; +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-04-24 19:25:59 + */ +@Api(tags = "代报餐管理管理") +@RestController +@RequestMapping("/api/apps/bc-agent") +public class BcAgentController extends BaseController { + @Resource + private BcAgentService bcAgentService; + + @PreAuthorize("hasAuthority('apps:bcAgent:list')") + @OperationLog + @ApiOperation("分页查询代报餐管理") + @GetMapping("/page") + public ApiResult> page(BcAgentParam param) { + // 使用关联查询 + return success(bcAgentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:list')") + @OperationLog + @ApiOperation("查询全部代报餐管理") + @GetMapping() + public ApiResult> list(BcAgentParam param) { + // 使用关联查询 + return success(bcAgentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:list')") + @OperationLog + @ApiOperation("根据id查询代报餐管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bcAgentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:save')") + @OperationLog + @ApiOperation("添加代报餐管理") + @PostMapping() + public ApiResult save(@RequestBody BcAgent bcAgent) { + if (bcAgentService.save(bcAgent)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:update')") + @OperationLog + @ApiOperation("修改代报餐管理") + @PutMapping() + public ApiResult update(@RequestBody BcAgent bcAgent) { + if (bcAgentService.updateById(bcAgent)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:remove')") + @OperationLog + @ApiOperation("删除代报餐管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcAgentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:save')") + @OperationLog + @ApiOperation("批量添加代报餐管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcAgentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:update')") + @OperationLog + @ApiOperation("批量修改代报餐管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcAgentService, "agent_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:remove')") + @OperationLog + @ApiOperation("批量删除代报餐管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcAgentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcCartController.java b/src/main/java/com/gxwebsoft/apps/controller/BcCartController.java new file mode 100644 index 0000000..bd4e29a --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcCartController.java @@ -0,0 +1,233 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.BcCart; +import com.gxwebsoft.apps.result.CartResult; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.entity.Goods; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.CartParam; +import com.gxwebsoft.shop.service.GoodsService; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.sql.Date; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_SUCCESS; + +/** + * 批量报餐 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Api(tags = "购物车记录表管理") +@RestController +@RequestMapping("/api/apps/bc-cart") +public class BcCartController extends BaseController { + @Resource + private GoodsService goodsService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsService orderGoodsService; + + @ApiOperation("添加购物车") + @PostMapping("/addCart") + public ApiResult addCart(@RequestBody BcCart vo) { + // 1. key = cache10048:cart651:2023-05-04 + String key = "cache" + getTenantId() + ":cart" + getLoginUserId() + ":" + vo.getDeliveryTime(); + // 2. 准备数据 + final Goods goods = goodsService.getById(vo.getGoodsId()); + vo.setImage(goods.getImage()); + vo.setGoodsName(goods.getGoodsName()); + vo.setComments(goods.getComments()); + vo.setCategoryId(goods.getCategoryId()); + vo.setGear(goods.getGear()); + vo.setUserId(getLoginUserId()); + // 2. 保存到购物车 + stringRedisTemplate.opsForHash().put(key, vo.getGoodsId().toString(), JSONObject.toJSONString(vo)); + //设置过期时间600秒 + System.out.println("设置过期时间600秒 = " + key); + stringRedisTemplate.opsForHash().getOperations().expire(key,60*60*3, TimeUnit.SECONDS); + // 3. 查询购物车并返回 + final List list = getCart(key); + final ArrayList cartAll = getCartAll(); + return success("添加成功", cartAll); + } + + @ApiOperation("查看购物车") + @PostMapping("/showCart") + public ApiResult showCart() { +// System.out.println("vo = " + vo); + + // 按预定日期查询 +// if (vo.getDeliveryTime() != null) { +// // key = cache10048:cart651:2023-05-04 +// String key = "cache" + getTenantId() + ":cart" + getLoginUserId() + ":" + vo.getDeliveryTime(); +// final List list = getCart(key); +// return success("获取成功", list); +// } + // 查询全部购物车数据 + return success("获取成功", getCartAll()); + } + + @ApiOperation("从购物车创建订单") + @PostMapping("/createOrder") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult createOrder(@RequestBody CartParam param) { + // 1.判断是否代报餐 + Integer userId = 0; + if (param.getAgentUserId() != null) { + userId = param.getAgentUserId(); + } else { + userId = getLoginUserId(); + } + // 2.从缓存读取用户的购物车数据 + final ArrayList cartAll = getCartAll(); + if (cartAll.size() == 0) { + throw new BusinessException("订单不存在"); + } + // 3.批量创建订单 + Integer finalUserId = userId; + final ArrayList orderIds = new ArrayList<>(); + cartAll.forEach(d -> { + // 过滤空单 + if (!d.getTotalNum().equals(0)) { + System.out.println("批量创建订单d = " + d); + Order order = new Order(); + // 查询今日订单是否存在 + final Order one = orderService.getOne(new LambdaQueryWrapper() + .eq(Order::getUserId, finalUserId) + .eq(Order::getPayStatus,PAY_STATUS_SUCCESS) + .eq(Order::getDeliveryTime, Date.valueOf(d.getDeliveryTime()))); + if(one == null){ + order.setOrderNo(IdUtil.getSnowflakeNextId()); + order.setTotalPrice(d.getTotalPrice()); + order.setOrderPrice(d.getTotalPrice()); + order.setPayPrice(d.getTotalPrice()); + order.setDeliveryTime(Date.valueOf(d.getDeliveryTime())); + order.setExpirationTime(DateUtil.nextMonth()); + order.setIsTemporary(param.getIsTemporary()); + order.setUserId(finalUserId); + order.setWeek(DateUtil.dayOfWeek(order.getDeliveryTime()) - 1); + orderService.save(order); + }else { + order.setOrderId(one.getOrderId()); + } + orderIds.add(order.getOrderId()); + + // 添加订单商品 + final List items = d.getItems(); + final ArrayList orderGoods = new ArrayList<>(); + items.forEach(g -> { + if(!g.getTotalNum().equals(0)){ + final OrderGoods og = new OrderGoods(); + og.setOrderId(order.getOrderId()); + og.setGoodsId(g.getGoodsId()); + og.setGoodsName(g.getGoodsName()); + og.setImageUrl(g.getImage()); + og.setTotalNum(g.getTotalNum()); + og.setCategoryId(g.getCategoryId()); + og.setGoodsPrice(g.getGoodsPrice()); + og.setComments(g.getComments()); + og.setGear(g.getGear()); + og.setGoodsId(g.getGoodsId()); + og.setTemporary(param.getIsTemporary()); + og.setUserId(finalUserId); +// og.setDeliveryTime(order.getDeliveryTime()); + orderGoods.add(og); + } + }); + orderGoodsService.saveBatch(orderGoods); + } + }); + // 4.清空购物车 + removeCart(); + return success("创建成功",orderIds); + } + + @ApiOperation("清空购物车") + @GetMapping("/clearCart") + public ApiResult clearCart() { + removeCart(); + return success("清空成功"); + } + + /** + * 清空购物车 + */ + private void removeCart() { + String key = "cache" + getTenantId() + ":cart" + getLoginUserId() + ":"; + final Set keys = stringRedisTemplate.keys(key + "*"); + System.out.println("清空购物车keys = " + keys); + assert keys != null; + stringRedisTemplate.delete(keys); + } + + /** + * 获取购物车数据(按预定日期) + */ + private List getCart(String key) { + // 获取购物车数据 + List values = stringRedisTemplate.opsForHash().values(key); + return values.stream().map(item -> JSONUtil.parseObject(JSONUtil.toJSONString(item), BcCart.class)).collect(Collectors.toList()); + } + + /** + * 查询全部购物车数据 + */ + private ArrayList getCartAll() { + String key = "cache" + getTenantId() + ":cart" + getLoginUserId(); + Set keys = stringRedisTemplate.keys(key + "*"); +// System.out.println("keys = " + keys); + assert keys != null; + final ArrayList list = new ArrayList<>(); + keys.forEach(d -> { + final List values = stringRedisTemplate.opsForHash().values(d); + final CartResult cartResult = new CartResult(); + final ArrayList dataList = new ArrayList<>(); + + values.forEach(item -> { + BcCart bcCart = JSONUtil.parseObject(item.toString(), BcCart.class); + assert bcCart != null; +// System.out.println("cartResult = " + cartResult.getTotalPrice()); + if (cartResult.getTotalNum() == null) { + cartResult.setTotalNum(0); + } + if (cartResult.getTotalPrice() == null) { + cartResult.setTotalPrice(new BigDecimal(0)); + } + cartResult.setTotalNum(cartResult.getTotalNum() + bcCart.getTotalNum()); + cartResult.setDeliveryTime(bcCart.getDeliveryTime()); + cartResult.setTotalPrice(cartResult.getTotalPrice().add(bcCart.getGoodsPrice().multiply(BigDecimal.valueOf(bcCart.getTotalNum())))); + dataList.add(bcCart); + }); + cartResult.setItems(dataList); + list.add(cartResult); + }); + return list; + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcCookbookController.java b/src/main/java/com/gxwebsoft/apps/controller/BcCookbookController.java new file mode 100644 index 0000000..5305f16 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcCookbookController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.BcCookbookService; +import com.gxwebsoft.apps.entity.BcCookbook; +import com.gxwebsoft.apps.param.BcCookbookParam; +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 com.gxwebsoft.common.system.entity.User; +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-05-05 14:56:54 + */ +@Api(tags = "常用菜谱管理") +@RestController +@RequestMapping("/api/apps/bc-cookbook") +public class BcCookbookController extends BaseController { + @Resource + private BcCookbookService bcCookbookService; + + @PreAuthorize("hasAuthority('apps:bcCookbook:list')") + @OperationLog + @ApiOperation("分页查询常用菜谱") + @GetMapping("/page") + public ApiResult> page(BcCookbookParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(bcCookbookService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(bcCookbookService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcCookbook:list')") + @OperationLog + @ApiOperation("查询全部常用菜谱") + @GetMapping() + public ApiResult> list(BcCookbookParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(bcCookbookService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(bcCookbookService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcCookbook:list')") + @OperationLog + @ApiOperation("根据id查询常用菜谱") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(bcCookbookService.getById(id)); + // 使用关联查询 + //return success(bcCookbookService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:bcCookbook:save')") + @OperationLog + @ApiOperation("添加常用菜谱") + @PostMapping() + public ApiResult save(@RequestBody BcCookbook bcCookbook) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + bcCookbook.setUserId(loginUser.getUserId()); + } + if (bcCookbookService.save(bcCookbook)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcCookbook:update')") + @OperationLog + @ApiOperation("修改常用菜谱") + @PutMapping() + public ApiResult update(@RequestBody BcCookbook bcCookbook) { + if (bcCookbookService.updateById(bcCookbook)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcCookbook:remove')") + @OperationLog + @ApiOperation("删除常用菜谱") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcCookbookService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcCookbook:save')") + @OperationLog + @ApiOperation("批量添加常用菜谱") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcCookbookService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcCookbook:update')") + @OperationLog + @ApiOperation("批量修改常用菜谱") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcCookbookService, "cookbook_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcCookbook:remove')") + @OperationLog + @ApiOperation("批量删除常用菜谱") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcCookbookService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcEquipmentController.java b/src/main/java/com/gxwebsoft/apps/controller/BcEquipmentController.java new file mode 100644 index 0000000..0217f93 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcEquipmentController.java @@ -0,0 +1,151 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.apps.utils.BcUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.BcEquipmentService; +import com.gxwebsoft.apps.entity.BcEquipment; +import com.gxwebsoft.apps.param.BcEquipmentParam; +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 com.gxwebsoft.common.system.entity.User; +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-05-02 10:34:40 + */ +@Api(tags = "报餐设备管理管理") +@RestController +@RequestMapping("/api/apps/bc-equipment") +public class BcEquipmentController extends BaseController { + @Resource + private BcEquipmentService bcEquipmentService; + @Resource + private BcUtil bcUtil; + + @PreAuthorize("hasAuthority('apps:bcEquipment:list')") + @OperationLog + @ApiOperation("分页查询报餐设备管理") + @GetMapping("/page") + public ApiResult> page(BcEquipmentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(bcEquipmentService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(bcEquipmentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:list')") + @OperationLog + @ApiOperation("查询全部报餐设备管理") + @GetMapping() + public ApiResult> list(BcEquipmentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(bcEquipmentService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(bcEquipmentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:list')") + @OperationLog + @ApiOperation("根据id查询报餐设备管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(bcEquipmentService.getById(id)); + // 使用关联查询 + //return success(bcEquipmentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:list')") + @OperationLog + @ApiOperation("添加报餐设备管理") + @PostMapping() + public ApiResult save(@RequestBody BcEquipment bcEquipment) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + bcEquipment.setUserId(loginUser.getUserId()); + bcEquipment.setMerchantCode(getMerchantCode()); + } + if (bcEquipmentService.save(bcEquipment)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:list')") + @OperationLog + @ApiOperation("修改报餐设备管理") + @PutMapping() + public ApiResult update(@RequestBody BcEquipment bcEquipment) { + if (bcEquipmentService.updateById(bcEquipment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:list')") + @OperationLog + @ApiOperation("删除报餐设备管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcEquipmentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:save')") + @OperationLog + @ApiOperation("批量添加报餐设备管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcEquipmentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:update')") + @OperationLog + @ApiOperation("批量修改报餐设备管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcEquipmentService, "bc_equipment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:remove')") + @OperationLog + @ApiOperation("批量删除报餐设备管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcEquipmentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcEquipment:list')") + @ApiOperation("发送企业微信推送消息") + @PostMapping("/addSend") + public ApiResult addSend(@RequestBody BcEquipment bcEquipment) { + bcUtil.send(bcEquipment.getComments()); + return success("发送成功"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcExportController.java b/src/main/java/com/gxwebsoft/apps/controller/BcExportController.java new file mode 100644 index 0000000..105928b --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcExportController.java @@ -0,0 +1,323 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.BcExport; +import com.gxwebsoft.apps.param.BcExportParam; +import com.gxwebsoft.apps.service.BcExportService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.OrderConstants.DELIVERY_STATUS_YES; +import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_SUCCESS; + +/** + * 报餐统计导出控制器 + * + * @author 科技小王子 + * @since 2023-06-01 21:47:02 + */ +@Api(tags = "报餐统计导出管理") +@RestController +@RequestMapping("/api/apps/bc-export") +public class BcExportController extends BaseController { + @Resource + private BcExportService bcExportService; + + @Resource + private OrderService orderService; + + @Resource + private OrderGoodsService orderGoodsService; + + @Resource + private UserService userService; + + @PreAuthorize("hasAuthority('apps:bcExport:list')") + @OperationLog + @ApiOperation("分页查询报餐统计导出") + @GetMapping("/page") + public ApiResult> page(BcExportParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(bcExportService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(bcExportService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcExport:list')") + @ApiOperation("查询全部报餐统计导出") + @GetMapping() + public ApiResult> list(BcExportParam param) { + LinkedList resutl = new LinkedList<>(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + // 查询所有员工信息 + final UserParam param1 = new UserParam(); + param1.setOrganizationId(param.getOrganizationId()); + final List users = userService.listRel(param1); + if(CollectionUtils.isEmpty(users)){ + return success(resutl); + } + final Set userIds = users.stream().map(User::getUserId).collect(Collectors.toSet()); + + // 获取所有订单 + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper() + .eq(Order::getPayStatus,PAY_STATUS_SUCCESS) + .in(Order::getUserId,userIds); + + if(param.getDeliveryTimeStart() == null){ + System.out.println("默认查询当天 = "); + // 今天开始时间 2023-05-01 00:00:00 + DateTime parse = DateUtil.parse(DateUtil.today()); + wrapper.eq(Order::getDeliveryTime, parse); + } + if(StringUtils.hasText(param.getDeliveryTime())){ + wrapper.eq(Order::getDeliveryTime, param.getDeliveryTime()); + } + if(StringUtils.hasText(param.getDeliveryTimeStart())){ + wrapper.ge(Order::getDeliveryTime, param.getDeliveryTimeStart()); + } + if(StringUtils.hasText(param.getDeliveryTimeEnd())){ + wrapper.le(Order::getDeliveryTime, param.getDeliveryTimeEnd()); + } + + final List list = orderService.list(wrapper); + if(CollectionUtils.isEmpty(list)){ + return success(resutl); + } + // 获取所有订单商品 + final Set orderIds = list.stream().map(Order::getOrderId).collect(Collectors.toSet()); + final List orderGoods = orderGoodsService.list(new LambdaQueryWrapper().in(OrderGoods::getOrderId, orderIds)); + + // 按订单分组 + final Map> orderGoodsCollect = orderGoods.stream().collect(Collectors.groupingBy(OrderGoods::getOrderId)); + // 按员工分组 + final Map> userCollect = list.stream().collect(Collectors.groupingBy(Order::getUserId)); + // 计算订餐和签到次数 + int btotalCount = 0; + int btotalSingCount = 0; + int ltotalCount = 0; + int ltotalSingCount = 0; + int dtotalCount = 0; + int dtotalSingCount = 0; + BigDecimal maxTotalPrice = BigDecimal.ZERO; + int maxGear10 = 0; + int maxGear20 = 0; + int maxSignGear10 = 0; + int maxSignGear20 = 0; + for (Integer userId : userCollect.keySet()) { + final List userList = userCollect.get(userId); // 员工订单 + final User user = users.stream().filter(u -> u.getUserId().equals(userId)).findFirst().get(); + BcExport bcExport = new BcExport(); + int bCount = 0; + int bSingCount = 0; + int lCount = 0; + int lSingCount = 0; + int dCount = 0; + int dSingCount = 0; + int gear10 = 0; + int gear20 = 0; + int signGear10 = 0; + int signGear20 = 0; + BigDecimal totalPrice = BigDecimal.ZERO; + for (Order order : userList) { + // 获取商品 + totalPrice = totalPrice.add(order.getTotalPrice()); + final List goodsList = orderGoodsCollect.get(order.getOrderId()); + if(!CollectionUtils.isEmpty(goodsList)){ + for (OrderGoods goods : goodsList) { + // 查询早餐 + // 查询午餐 + // 查询晚餐 + if(goods.getCategoryId().equals(25)){ + bCount++; + if(goods.getDeliveryStatus().equals(DELIVERY_STATUS_YES)){ + bSingCount++; + } + } + if(goods.getCategoryId().equals(26)){ + lCount++; + // 统计档口 + if(goods.getGear().equals(10)){ + gear10++; + } + if (goods.getGear().equals(20)) { + gear20++; + } + if(goods.getDeliveryStatus().equals(DELIVERY_STATUS_YES)){ + lSingCount++; + // 统计档口 + if(goods.getGear().equals(10)){ + signGear10++; + } + if (goods.getGear().equals(20)) { + signGear20++; + } + } + } + if(goods.getCategoryId().equals(27)){ + dCount++; + if(goods.getDeliveryStatus().equals(DELIVERY_STATUS_YES)){ + dSingCount++; + } + } + } + } + } + btotalCount += bCount; + btotalSingCount += bSingCount; + ltotalCount += lCount; + ltotalSingCount += lSingCount; + dtotalCount += dCount; + dtotalSingCount += dSingCount; + maxTotalPrice = maxTotalPrice.add(totalPrice); + maxGear10 += gear10; + maxGear20 += gear20; + maxSignGear10 += signGear10; + maxSignGear20 += signGear20; + + bcExport.setBreakfastPost(bCount); + bcExport.setBreakfastSign(bSingCount); + bcExport.setLunchPost(lCount); + bcExport.setLunchSign(lSingCount); + bcExport.setDinnerPost(dCount); + bcExport.setDinnerSign(dSingCount); + bcExport.setExpendMoney(totalPrice); + bcExport.setGear10(gear10); + bcExport.setGear20(gear20); + bcExport.setSignGear10(signGear10); + bcExport.setSignGear20(signGear20); + bcExport.setUserId(userId); + bcExport.setOrganizationName(user.getOrganizationName()); + bcExport.setNickname(user.getNickname()); + bcExport.setLunchPostText(lCount+""); + bcExport.setLunchSignText(lSingCount+""); + + resutl.add(bcExport); + + } + BcExport totalBcExport = new BcExport(); + totalBcExport.setNickname("合计"); + totalBcExport.setBreakfastPost(btotalCount); + totalBcExport.setBreakfastSign(btotalSingCount); + totalBcExport.setLunchPost(ltotalCount); + totalBcExport.setLunchSign(ltotalSingCount); + totalBcExport.setDinnerPost(dtotalCount); + totalBcExport.setDinnerSign(dtotalSingCount); + totalBcExport.setExpendMoney(maxTotalPrice); + totalBcExport.setGear10(maxGear10); + totalBcExport.setGear20(maxGear20); + totalBcExport.setSignGear10(maxSignGear10); + totalBcExport.setSignGear20(maxSignGear20); + totalBcExport.setLunchPostText(ltotalCount + "(" + maxGear10 + "/" + maxGear20 + ")"); + totalBcExport.setLunchSignText(ltotalSingCount + "(" + maxSignGear10 + "/" + maxSignGear20 + ")"); + totalBcExport.setOrganizationName(""); + resutl.addFirst(totalBcExport); + return success(resutl); + } + + @PreAuthorize("hasAuthority('apps:bcExport:list')") + @OperationLog + @ApiOperation("根据id查询报餐统计导出") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(bcExportService.getById(id)); + // 使用关联查询 + //return success(bcExportService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:bcExport:save')") + @OperationLog + @ApiOperation("添加报餐统计导出") + @PostMapping() + public ApiResult save(@RequestBody BcExport bcExport) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + bcExport.setUserId(loginUser.getUserId()); + } + if (bcExportService.save(bcExport)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcExport:update')") + @OperationLog + @ApiOperation("修改报餐统计导出") + @PutMapping() + public ApiResult update(@RequestBody BcExport bcExport) { + if (bcExportService.updateById(bcExport)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcExport:remove')") + @OperationLog + @ApiOperation("删除报餐统计导出") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcExportService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcExport:save')") + @OperationLog + @ApiOperation("批量添加报餐统计导出") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcExportService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcExport:update')") + @OperationLog + @ApiOperation("批量修改报餐统计导出") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcExportService, "export_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcExport:remove')") + @OperationLog + @ApiOperation("批量删除报餐统计导出") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcExportService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcFoodController.java b/src/main/java/com/gxwebsoft/apps/controller/BcFoodController.java new file mode 100644 index 0000000..6e84c26 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcFoodController.java @@ -0,0 +1,289 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.BcFood; +import com.gxwebsoft.apps.entity.BcPlan; +import com.gxwebsoft.apps.param.BcFoodParam; +import com.gxwebsoft.apps.param.BcPlanParam; +import com.gxwebsoft.apps.service.BcFoodService; +import com.gxwebsoft.apps.service.BcPlanService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Goods; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.entity.UserReferee; +import com.gxwebsoft.shop.param.OrderGoodsParam; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.param.UserRefereeParam; +import com.gxwebsoft.shop.service.GoodsService; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import com.gxwebsoft.shop.service.UserRefereeService; +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.ArrayList; +import java.util.HashMap; +import java.util.List; + +import static com.gxwebsoft.common.core.constants.OrderConstants.ORDER_STATUS_DOING; +import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_SUCCESS; + +/** + * 发布菜品明细控制器 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@Api(tags = "发布菜品明细管理") +@RestController +@RequestMapping("/api/apps/bc-food") +public class BcFoodController extends BaseController { + @Resource + private BcFoodService bcFoodService; + @Resource + private BcPlanService bcPlanService; + @Resource + private GoodsService goodsService; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private UserRefereeService userRefereeService; + + @ApiOperation("查询菜品列表") + @GetMapping("/getFoodList") + public ApiResult getFoodList(BcPlanParam param) { + // 验证签名 + isCheckSign(); + BcPlan plan = param.getOne(bcPlanService.listRel(param)); + if(plan == null){ + return fail("当日未发布菜品"); + } +// System.out.println("查询菜品列表param = " + param); +// System.out.println("plan = " + plan); + // json转数组 如:[0,1]转为ArrayList + List goodsIds = new ArrayList<>(); + goodsIds = JSONUtil.parseObject(plan.getGoodsIds(), ArrayList.class); + final List list = goodsService.listByIds(goodsIds); + final HashMap map = new HashMap<>(); + map.put("week",plan.getWeek()); + map.put("list",list); + return success(map); + } + + @ApiOperation("查询一周菜谱") + @GetMapping("/getWeekFood") + public ApiResult getWeekFood() { + // 验证签名 + isCheckSign(); + final HashMap map = new HashMap<>(); + // 今天日期 + final DateTime today = DateUtil.parse(DateUtil.today()); + // 本周一周开始的日期 + final DateTime dateTime = DateUtil.beginOfWeek(today); + // 查询本周菜谱 + final List list = bcPlanService.list(new LambdaQueryWrapper().ge(BcPlan::getDayTime, dateTime).last("limit 0,7")); + try { + list.forEach(d -> { + // json转数组 如:[0,1]转为ArrayList + d.setGoodsList(goodsService.listByIds(JSONUtil.parseObject(d.getGoodsIds(), ArrayList.class))); + }); + } catch (Exception e) { + e.printStackTrace(); + } + return success(list); + } + + @ApiOperation("查询代取餐人员的报餐信息") + @GetMapping("/getOthersFood") + public ApiResult getOthersFood() { + // 验证签名 + isCheckSign(); + + UserRefereeParam param = new UserRefereeParam(); + param.setDealerId(getLoginUserId()); + List list = userRefereeService.listRel(param); + // 附加自己 + final UserReferee userReferee = new UserReferee(); + userReferee.setUserId(getLoginUserId()); + userReferee.setNickname(getLoginUser().getNickname()); + list.add(userReferee); + list.forEach(d -> { + // 查询他的订单信息 + OrderParam orderParam = new OrderParam(); + orderParam.setUserId(d.getUserId()); + orderParam.setDeliveryTime(DateUtil.beginOfDay(DateUtil.date()).toString()); + orderParam.setOrderStatus(ORDER_STATUS_DOING); + orderParam.setPayStatus(PAY_STATUS_SUCCESS); + List orders = orderService.listRel(orderParam); + orders.forEach(o -> { + // 查询菜品信息 + List orderGoods = orderGoodsService.list(new LambdaQueryWrapper() + .eq(OrderGoods::getOrderId,o.getOrderId()) + .gt(OrderGoods::getTotalNum,0)); + o.setGoodsList(orderGoods); + }); + d.setOrder(orders); + }); + return success(list); + } + + @ApiOperation("取消代餐") + @GetMapping("/cancel") + public ApiResult cancel() { + UserRefereeParam param = new UserRefereeParam(); + param.setDealerId(getLoginUserId()); + List list = userRefereeService.listRel(param); + list.forEach(d -> { + // 查询他的订单信息 + OrderParam orderParam = new OrderParam(); + orderParam.setUserId(d.getUserId()); + orderParam.setDeliveryTime(DateUtil.beginOfDay(DateUtil.date()).toString()); + orderParam.setPayStatus(PAY_STATUS_SUCCESS); + List orders = orderService.listRel(orderParam); + orders.forEach(o -> { + // 查询菜品信息 + OrderGoodsParam goodsParam = new OrderGoodsParam(); + goodsParam.setOrderId(o.getOrderId()); + List orderGoods = orderGoodsService.listRel(goodsParam); + o.setGoodsList(orderGoods); + }); + d.setOrder(orders); + }); + return success(list); + } + + @ApiOperation("查询临时报餐信息") + @GetMapping("/getTemporaryOrder") + public ApiResult getTemporaryOrder(OrderParam param) { + // 验证签名 + isCheckSign(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper + .eq(Order::getUserId,getLoginUserId()) + .eq(Order::getPayStatus,PAY_STATUS_SUCCESS) + .eq(Order::getOrderStatus,ORDER_STATUS_DOING) + .eq(Order::getDeleted,0) + .eq(Order::getIsTemporary,1) + .eq(Order::getDeliveryTime,param.getDeliveryTime()); + Order order = orderService.getOne(lambdaQueryWrapper,false); + if(order != null){ + final List goods = orderGoodsService.list(new LambdaQueryWrapper().eq(OrderGoods::getOrderId, order.getOrderId())); + order.setGoodsList(goods); + return success("查询成功",order); + } + return fail("没有临时报餐数据",null); + } + + @PreAuthorize("hasAuthority('apps:bcFood:list')") + @OperationLog + @ApiOperation("分页查询发布菜品明细") + @GetMapping("/page") + public ApiResult> page(BcFoodParam param) { + // 使用关联查询 + return success(bcFoodService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcFood:list')") + @OperationLog + @ApiOperation("查询全部发布菜品明细") + @GetMapping() + public ApiResult> list(BcFoodParam param) { + // 使用关联查询 + return success(bcFoodService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcFood:list')") + @OperationLog + @ApiOperation("根据id查询发布菜品明细") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bcFoodService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:bcFood:save')") + @OperationLog + @ApiOperation("添加发布菜品明细") + @PostMapping() + public ApiResult save(@RequestBody BcFood bcFood) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + bcFood.setUserId(loginUser.getUserId()); + } + if (bcFoodService.save(bcFood)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcFood:update')") + @OperationLog + @ApiOperation("修改发布菜品明细") + @PutMapping() + public ApiResult update(@RequestBody BcFood bcFood) { + if (bcFoodService.updateById(bcFood)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcFood:remove')") + @OperationLog + @ApiOperation("删除发布菜品明细") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcFoodService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcFood:save')") + @OperationLog + @ApiOperation("批量添加发布菜品明细") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcFoodService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcFood:update')") + @OperationLog + @ApiOperation("批量修改发布菜品明细") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcFoodService, "bc_food_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcFood:remove')") + @OperationLog + @ApiOperation("批量删除发布菜品明细") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcFoodService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcPlanController.java b/src/main/java/com/gxwebsoft/apps/controller/BcPlanController.java new file mode 100644 index 0000000..d2b92dc --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcPlanController.java @@ -0,0 +1,144 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.apps.entity.BcPlan; +import com.gxwebsoft.apps.param.BcPlanParam; +import com.gxwebsoft.apps.service.BcPlanService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +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.Date; +import java.util.List; + +/** + * 菜品发布管理控制器 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@Api(tags = "菜品发布管理管理") +@RestController +@RequestMapping("/api/apps/bc-plan") +public class BcPlanController extends BaseController { + @Resource + private BcPlanService bcPlanService; + + @PreAuthorize("hasAuthority('apps:bcPlan:list')") + @OperationLog + @ApiOperation("分页查询菜品发布管理") + @GetMapping("/page") + public ApiResult> page(BcPlanParam param) { + // 使用关联查询 + return success(bcPlanService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcPlan:list')") + @OperationLog + @ApiOperation("查询全部菜品发布管理") + @GetMapping() + public ApiResult> list(BcPlanParam param) { + // 使用关联查询 + return success(bcPlanService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcPlan:list')") + @OperationLog + @ApiOperation("根据id查询菜品发布管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bcPlanService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:bcPlan:save')") + @OperationLog + @ApiOperation("添加菜品发布管理") + @PostMapping() + public ApiResult save(@RequestBody BcPlan bcPlan) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + bcPlan.setUserId(loginUser.getUserId()); + } + if(bcPlanService.count(new LambdaQueryWrapper().eq(BcPlan::getDayTime, bcPlan.getDayTime())) > 0){ + return fail("当天已发布过菜品"); + } + bcPlan.setWeek(DateUtil.dayOfWeek(bcPlan.getDayTime()) - 1); + if (bcPlanService.save(bcPlan)) { + return success("发布成功"); + } + return fail("发布失败"); + } + + @PreAuthorize("hasAuthority('apps:bcPlan:update')") + @OperationLog + @ApiOperation("修改菜品发布管理") + @PutMapping() + public ApiResult update(@RequestBody BcPlan bcPlan) { + System.out.println("bcPlan = " + bcPlan); + final Date dayTime = bcPlan.getDayTime(); + System.out.println("dayTime = " + dayTime); + final int week = DateUtil.dayOfWeek(dayTime); + bcPlan.setWeek(week - 1); + if (bcPlanService.updateById(bcPlan)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcPlan:remove')") + @OperationLog + @ApiOperation("删除菜品发布管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcPlanService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcPlan:save')") + @OperationLog + @ApiOperation("批量添加菜品发布管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcPlanService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcPlan:update')") + @OperationLog + @ApiOperation("批量修改菜品发布管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcPlanService, "bc_plan_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcPlan:remove')") + @OperationLog + @ApiOperation("批量删除菜品发布管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcPlanService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcStatisticsController.java b/src/main/java/com/gxwebsoft/apps/controller/BcStatisticsController.java new file mode 100644 index 0000000..beeb2e9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcStatisticsController.java @@ -0,0 +1,331 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.BcPlan; +import com.gxwebsoft.apps.param.BcPlanParam; +import com.gxwebsoft.apps.service.BcPlanService; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.OrganizationService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Goods; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.OrderGoodsParam; +import com.gxwebsoft.shop.service.GoodsService; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.OrderConstants.*; + +/** + * 报餐统计控制器 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@Api(tags = "报餐统计管理") +@RestController +@RequestMapping("/api/apps/bc-statistics") +public class BcStatisticsController extends BaseController { + @Resource + private GoodsService goodsService; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private BcPlanService bcPlanService; + @Resource + private UserService userService; + @Resource + private OrganizationService organizationService; + + + @ApiOperation("预定菜品统计") + @GetMapping("/baoCanFoodCount") + public ApiResult baoCanFoodCount(BcPlanParam param) { + // 验证签名 + isCheckSign(); + + BcPlan plan = param.getOne(bcPlanService.listRel(param)); + System.out.println("1查询菜品列表param = " + plan); + if (plan == null) { + return fail("当日未发布菜品"); + } + // json转数组 如:[0,1]转为ArrayList + ArrayList goodsIds = JSONUtil.parseObject(plan.getGoodsIds(), ArrayList.class); + final List list = goodsService.listByIds(goodsIds); + final ArrayList goods = new ArrayList<>(); + + // 查询今日有效订单 + final List orders = orderService.list(new LambdaQueryWrapper() + .eq(Order::getDeliveryTime, param.getDayTime()) + .eq(Order::getPayStatus, PAY_STATUS_SUCCESS) + .ne(Order::getOrderStatus, ORDER_STATUS_CANCEL) + ); + final List orderIds = orders.stream().map(Order::getOrderId).collect(Collectors.toList()); + + // 整理餐段菜品数据 + list.forEach(d -> { + if (d.getCategoryId().equals(param.getCategoryId())) { + final int DeliveryTimes = orderGoodsService.count(new LambdaQueryWrapper() + .in(OrderGoods::getOrderId, orderIds) + .eq(OrderGoods::getCategoryId, param.getCategoryId()) + .eq(OrderGoods::getGoodsId, d.getGoodsId()) + .gt(OrderGoods::getTotalNum, 0) + ); + final int NoDeliveryTimes = orderGoodsService.count(new LambdaQueryWrapper() + .in(OrderGoods::getOrderId, orderIds) + .eq(OrderGoods::getCategoryId, param.getCategoryId()) + .eq(OrderGoods::getGoodsId, d.getGoodsId()) + .gt(OrderGoods::getTotalNum, 0) + .eq(OrderGoods::getDeliveryStatus, 10) + ); + + d.setDeliveryTimes(DeliveryTimes); + d.setNoDeliveryTimes(NoDeliveryTimes); + goods.add(d); + } + }); + return success("查询成功", goods); + } + + @ApiOperation("预定人员统计") + @GetMapping("/baoCanUserCount") + public ApiResult baoCanUserCount(BcPlanParam param) { + // 验证签名 + isCheckSign(); + // 查询今日有效订单 + final List list = orderService.list(new LambdaQueryWrapper() + .eq(Order::getDeliveryTime, param.getDayTime()) + .eq(Order::getPayStatus, PAY_STATUS_SUCCESS) + .ne(Order::getOrderStatus, ORDER_STATUS_CANCEL) + ); + final List orderIds = list.stream().map(Order::getOrderId).collect(Collectors.toList()); +// System.out.println("list.size() = " + list.size()); + final List list25 = orderGoodsService.list(new LambdaQueryWrapper() + .in(OrderGoods::getOrderId, orderIds) + .eq(OrderGoods::getCategoryId, param.getCategoryId()) + .gt(OrderGoods::getTotalNum, 0) + .eq(OrderGoods::getDeleted, 0) + ); + final List userIds25 = list25.stream().map(OrderGoods::getUserId).collect(Collectors.toList()); + final List users25 = userService.listByIds(userIds25); + return success("查询成功", users25); + } + + @ApiOperation("报餐统计") + @GetMapping("/baoCanUsers") + public ApiResult baoCanUsers(OrderGoodsParam param) { + // 验证签名 + isCheckSign(); + System.out.println("param = " + param); + // 修复订单商品的支付状态 +// repairPayPriceStatus(); + + final HashMap map = new HashMap<>(); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + // 默认查询条件 + wrapper.ge(Order::getPayStatus,PAY_STATUS_SUCCESS) + .ne(Order::getOrderStatus, ORDER_STATUS_CANCEL); + + // 按部门查询 + if(param.getOrganizationId() != null){ + System.out.println("按部门查询 = "); + final List users = userService.list(new LambdaQueryWrapper().eq(User::getOrganizationId,param.getOrganizationId())); + final List collect = users.stream().map(User::getUserId).collect(Collectors.toList()); + System.out.println("userIds = " + collect); + wrapper.in(Order::getUserId,collect); + } + + // 是否选择日期 + if(param.getDeliveryTime() == null && param.getDeliveryTimeStart() == null && param.getCategoryId() != 0){ + return success("请选择预定日期",map); + } + // 按时间范围查询 + if(param.getDeliveryTimeStart() != null){ + // 最大只能选择一个月 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + Date date1 = df.parse(param.getDeliveryTimeStart()); + Date date2 = df.parse(param.getDeliveryTimeEnd()); + final boolean after = date1.after(date2); + final long between = DateUtil.between(date1, date2, DateUnit.DAY); + if(between > 30L){ + return fail("超出日期查询范围"); + } + System.out.println("between = " + between); + System.out.println("after = " + after); + } catch (ParseException e) { + e.printStackTrace(); + } + wrapper.ge(Order::getDeliveryTime,param.getDeliveryTimeStart()); + wrapper.le(Order::getDeliveryTime,param.getDeliveryTimeEnd()); + } + // 按预定日期查询 + if(param.getDeliveryTime() != null){ + wrapper.eq(Order::getDeliveryTime,param.getDeliveryTime()); + } + + final List list = orderService.list(wrapper); + + if(list.size() == 0){ + return success("查询成功",null); + } + + System.out.println("报餐统计 = " + list.size()); + final List orderIds = list.stream().map(Order::getOrderId).collect(Collectors.toList()); + System.out.println("orderIds = " + orderIds.size()); + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OrderGoods::getDeleted,0) + .gt(OrderGoods::getTotalNum,0) + .in(OrderGoods::getOrderId,orderIds); + + if(param.getCategoryId() != null){ + queryWrapper.eq(OrderGoods::getCategoryId,param.getCategoryId()); + } + if(param.getGear() != null){ + queryWrapper.eq(OrderGoods::getGear,param.getGear()); + } + // 已报餐 + final int post = orderGoodsService.count(queryWrapper); + + // 已签到 + queryWrapper.eq(OrderGoods::getDeliveryStatus,DELIVERY_STATUS_YES); + final int sign = orderGoodsService.count(queryWrapper); + + // 未签到 + int noSign = post - sign; + + map.put("post",post); + map.put("sign",sign); + map.put("noSign", noSign); + return success(map); + + +// +//// 查询今日签到记录 +// final int sign25 = orderGoodsService.count(new LambdaQueryWrapper() +// .in(OrderGoods::getOrderId, orderIds) +// .eq(OrderGoods::getCategoryId, 25) +// .eq(OrderGoods::getDeliveryStatus, 20) +// .gt(OrderGoods::getTotalNum, 0) +// .eq(OrderGoods::getDeleted, 0) +// ); +// final int sign26 = orderGoodsService.count(new LambdaQueryWrapper() +// .in(OrderGoods::getOrderId, orderIds) +// .eq(OrderGoods::getCategoryId, 26) +// .eq(OrderGoods::getDeliveryStatus, 20) +// .gt(OrderGoods::getTotalNum, 0) +// .eq(OrderGoods::getDeleted, 0) +// ); +// final int sign27 = orderGoodsService.count(new LambdaQueryWrapper() +// .in(OrderGoods::getOrderId, orderIds) +// .eq(OrderGoods::getCategoryId, 27) +// .eq(OrderGoods::getDeliveryStatus, 20) +// .gt(OrderGoods::getTotalNum, 0) +// .eq(OrderGoods::getDeleted, 0) +// ); +//// // 查询今日报餐人数 +// final int post25 = orderGoodsService.count(new LambdaQueryWrapper() +// .in(OrderGoods::getOrderId, orderIds) +// .eq(OrderGoods::getCategoryId, 25) +// .gt(OrderGoods::getTotalNum, 0) +// .eq(OrderGoods::getDeleted, 0) +// ); +// final int post26 = orderGoodsService.count(new LambdaQueryWrapper() +// .in(OrderGoods::getOrderId, orderIds) +// .eq(OrderGoods::getCategoryId, 26) +// .gt(OrderGoods::getTotalNum, 0) +// .eq(OrderGoods::getDeleted, 0) +// ); +// final int post27 = orderGoodsService.count(new LambdaQueryWrapper() +// .in(OrderGoods::getOrderId, orderIds) +// .eq(OrderGoods::getCategoryId, 27) +// .gt(OrderGoods::getTotalNum, 0) +// .eq(OrderGoods::getDeleted, 0) +// ); +//// +// map.put("breakfastSignUsers", sign25); +// map.put("lunchSignUsers", sign26); +// map.put("dinnerSignUsers", sign27); +// +// map.put("breakfastPostUsers", post25); +// map.put("lunchPostUsers", post26); +// map.put("dinnerPostUsers", post27); + + + } + + @ApiOperation("导出报表") + @GetMapping("/export") + public ApiResult export(OrderGoodsParam param) { + return success("导出报表"); + } + + private void repairPayPriceStatus() { + final OrderGoodsParam param = new OrderGoodsParam(); + param.setUserId(0); + final List list = orderGoodsService.listRel(param); + System.out.println("修复支付状态 = " + list.size()); + list.forEach(d -> { + final Order order = orderService.getById(d.getOrderId()); + if (order != null) { + System.out.println("order = " + order); + d.setPayStatus(PAY_STATUS_SUCCESS); + d.setUserId(order.getUserId()); + orderGoodsService.updateById(d); + } else { + orderGoodsService.removeById(d); + } + }); + } + + private void updateTimeByOrderGoods() { + System.out.println("修复数据 = "); +// final Order order = orderService.getById(2467); + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); +// wrapper.eq(Order::getTenantId,10048); +// wrapper.eq(Order::getDeleted,0); +// wrapper.eq(Order::getOrderStatus,10); +// wrapper.eq(Order::getDeliveryStatus,10); + wrapper.in(Order::getOrderId, 3184); +// wrapper.eq(Order::getPayStatus,20); +// wrapper.gt(Order::getOrderId,1000); +// wrapper.lt(Order::getOrderId,2000); + final List list = orderService.list(wrapper); + System.out.println("修复数据list = " + list.size()); + list.forEach(order -> { + final OrderGoodsParam orderGoodsParam = new OrderGoodsParam(); + orderGoodsParam.setOrderId(order.getOrderId()); + final List goods = orderGoodsService.listRel(orderGoodsParam); + goods.forEach(d -> { + d.setDeliveryTime(order.getDeliveryTime()); + d.setPayStatus(order.getPayStatus()); + orderGoodsService.updateById(d); + System.out.println("修复预定时间 = " + d.getOrderId()); + }); + }); + } +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/BcTemporaryController.java b/src/main/java/com/gxwebsoft/apps/controller/BcTemporaryController.java new file mode 100644 index 0000000..868029e --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/BcTemporaryController.java @@ -0,0 +1,158 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.BcTemporaryService; +import com.gxwebsoft.apps.entity.BcTemporary; +import com.gxwebsoft.apps.param.BcTemporaryParam; +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 com.gxwebsoft.common.system.entity.User; +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.Date; +import java.util.List; + +/** + * 临时报餐管理控制器 + * + * @author 科技小王子 + * @since 2023-04-24 21:47:57 + */ +@Api(tags = "临时报餐管理管理") +@RestController +@RequestMapping("/api/apps/bc-temporary") +public class BcTemporaryController extends BaseController { + @Resource + private BcTemporaryService bcTemporaryService; + + @PreAuthorize("hasAuthority('apps:bcTemporary:list')") + @OperationLog + @ApiOperation("分页查询临时报餐管理") + @GetMapping("/page") + public ApiResult> page(BcTemporaryParam param) { + // 使用关联查询 + return success(bcTemporaryService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:list')") + @OperationLog + @ApiOperation("查询全部临时报餐管理") + @GetMapping() + public ApiResult> list(BcTemporaryParam param) { + // 使用关联查询 + return success(bcTemporaryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:list')") + @OperationLog + @ApiOperation("根据id查询临时报餐管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(bcTemporaryService.getById(id)); + // 使用关联查询 + //return success(bcTemporaryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:save')") + @OperationLog + @ApiOperation("添加临时报餐管理") + @PostMapping() + public ApiResult save(@RequestBody BcTemporary bcTemporary) { + bcTemporary.setUserId(getLoginUserId()); + if (bcTemporaryService.save(bcTemporary)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + + @PreAuthorize("hasAuthority('apps:bcTemporary:save')") + @OperationLog + @ApiOperation("申请临时报餐") + @PostMapping("/apply") + public ApiResult apply(@RequestBody BcTemporary bcTemporary) { + bcTemporary.setUserId(getLoginUserId()); + final int count = bcTemporaryService.count(new LambdaQueryWrapper() + .eq(BcTemporary::getUserId, getLoginUserId()) + .eq(BcTemporary::getStatus, 0) + .eq(BcTemporary::getDayTime,DateUtil.today())); + if(count > 0){ + return fail("请勿重复提交"); + } + final DateTime dayTime = DateUtil.parse(DateUtil.today()); + bcTemporary.setDayTime(dayTime); + bcTemporary.setExpirationTime(DateUtil.offsetMinute(DateUtil.parse(DateUtil.now()), 60)); + if (bcTemporaryService.save(bcTemporary)) { + return success("提交成功"); + } + return fail("提交成功"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:list')") + @OperationLog + @ApiOperation("修改临时报餐管理") + @PutMapping() + public ApiResult update(@RequestBody BcTemporary bcTemporary) { + // 失效时间为审核通过后半个小时 + bcTemporary.setExpirationTime(DateUtil.offsetMinute(DateUtil.parse(DateUtil.now()), 60)); + if (bcTemporaryService.updateById(bcTemporary)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:remove')") + @OperationLog + @ApiOperation("删除临时报餐管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcTemporaryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:save')") + @OperationLog + @ApiOperation("批量添加临时报餐管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcTemporaryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:update')") + @OperationLog + @ApiOperation("批量修改临时报餐管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcTemporaryService, "temporary_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:remove')") + @OperationLog + @ApiOperation("批量删除临时报餐管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcTemporaryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/CashierController.java b/src/main/java/com/gxwebsoft/apps/controller/CashierController.java new file mode 100644 index 0000000..9cca5d8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/CashierController.java @@ -0,0 +1,137 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.CashierService; +import com.gxwebsoft.apps.entity.Cashier; +import com.gxwebsoft.apps.param.CashierParam; +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 com.gxwebsoft.common.system.entity.User; +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 WebSoft + * @since 2022-11-18 11:47:09 + */ +@Api(tags = "海牛收银台记录表管理") +@RestController +@RequestMapping("/api/apps/cashier") +public class CashierController extends BaseController { + @Resource + private CashierService cashierService; + + @PreAuthorize("hasAuthority('apps:cashier:list')") + @OperationLog + @ApiOperation("分页查询海牛收银台记录表") + @GetMapping("/page") + public ApiResult> page(CashierParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cashierService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(cashierService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:cashier:list')") + @OperationLog + @ApiOperation("查询全部海牛收银台记录表") + @GetMapping() + public ApiResult> list(CashierParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cashierService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(cashierService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:cashier:list')") + @OperationLog + @ApiOperation("根据id查询海牛收银台记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cashierService.getById(id)); + // 使用关联查询 + //return success(cashierService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:cashier:save')") + @OperationLog + @ApiOperation("添加海牛收银台记录表") + @PostMapping() + public ApiResult save(@RequestBody Cashier cashier) { + if(getMerchantCode() != null){ + cashier.setMerchantCode(getMerchantCode()); + } + if (cashierService.save(cashier)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:cashier:update')") + @OperationLog + @ApiOperation("修改海牛收银台记录表") + @PutMapping() + public ApiResult update(@RequestBody Cashier cashier) { + if (cashierService.updateById(cashier)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:cashier:remove')") + @OperationLog + @ApiOperation("删除海牛收银台记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cashierService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:cashier:save')") + @OperationLog + @ApiOperation("批量添加海牛收银台记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cashierService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:cashier:update')") + @OperationLog + @ApiOperation("批量修改海牛收银台记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cashierService, "cashier_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:cashier:remove')") + @OperationLog + @ApiOperation("批量删除海牛收银台记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cashierService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/EquipmentAlarmController.java b/src/main/java/com/gxwebsoft/apps/controller/EquipmentAlarmController.java new file mode 100644 index 0000000..a06c06e --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/EquipmentAlarmController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.EquipmentAlarmService; +import com.gxwebsoft.apps.entity.EquipmentAlarm; +import com.gxwebsoft.apps.param.EquipmentAlarmParam; +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 com.gxwebsoft.common.system.entity.User; +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-12-01 23:49:44 + */ +@Api(tags = "故障报警记录管理") +@RestController +@RequestMapping("/api/apps/equipment-alarm") +public class EquipmentAlarmController extends BaseController { + @Resource + private EquipmentAlarmService equipmentAlarmService; + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:list')") + @OperationLog + @ApiOperation("分页查询故障报警记录") + @GetMapping("/page") + public ApiResult> page(EquipmentAlarmParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(equipmentAlarmService.page(page, page.getWrapper())); + // 使用关联查询 + return success(equipmentAlarmService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:list')") + @OperationLog + @ApiOperation("查询全部故障报警记录") + @GetMapping() + public ApiResult> list(EquipmentAlarmParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(equipmentAlarmService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(equipmentAlarmService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:list')") + @OperationLog + @ApiOperation("根据id查询故障报警记录") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(equipmentAlarmService.getById(id)); + // 使用关联查询 + //return success(equipmentAlarmService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:save')") + @OperationLog + @ApiOperation("添加故障报警记录") + @PostMapping() + public ApiResult save(@RequestBody EquipmentAlarm equipmentAlarm) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + equipmentAlarm.setUserId(loginUser.getUserId()); + equipmentAlarm.setMerchantCode(getMerchantCode()); + } + if (equipmentAlarmService.save(equipmentAlarm)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:update')") + @OperationLog + @ApiOperation("修改故障报警记录") + @PutMapping() + public ApiResult update(@RequestBody EquipmentAlarm equipmentAlarm) { + if (equipmentAlarmService.updateById(equipmentAlarm)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:remove')") + @OperationLog + @ApiOperation("删除故障报警记录") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (equipmentAlarmService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:save')") + @OperationLog + @ApiOperation("批量添加故障报警记录") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (equipmentAlarmService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:update')") + @OperationLog + @ApiOperation("批量修改故障报警记录") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(equipmentAlarmService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentAlarm:remove')") + @OperationLog + @ApiOperation("批量删除故障报警记录") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (equipmentAlarmService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/EquipmentController.java b/src/main/java/com/gxwebsoft/apps/controller/EquipmentController.java new file mode 100644 index 0000000..9f59ca3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/EquipmentController.java @@ -0,0 +1,253 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayOpenAppQrcodeCreateModel; +import com.alipay.api.request.AlipayOpenAppQrcodeCreateRequest; +import com.alipay.api.response.AlipayOpenAppQrcodeCreateResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.apps.entity.EquipmentRecord; +import com.gxwebsoft.apps.param.EquipmentParam; +import com.gxwebsoft.apps.service.EquipmentRecordService; +import com.gxwebsoft.apps.service.EquipmentService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.AlipayConfigUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.service.MerchantService; +import com.gxwebsoft.shop.service.OrderService; +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; + +import static com.gxwebsoft.apps.constants.EquipmentConstants.EVENT_TYPE_BIND; +import static com.gxwebsoft.common.core.constants.OrderConstants.*; + +/** + * 设备管理控制器 + * + * @author 科技小王子 + * @since 2022-11-30 02:11:16 + */ +@Api(tags = "设备管理管理") +@RestController +@RequestMapping("/api/apps/equipment") +public class EquipmentController extends BaseController { + @Resource + private EquipmentService equipmentService; + @Resource + private OrderService orderService; + @Resource + private AlipayConfigUtil alipayConfig; + @Resource + private MerchantService merchantService; + @Resource + private EquipmentRecordService equipmentRecordService; + + @PreAuthorize("hasAuthority('apps:equipment:list')") + @OperationLog + @ApiOperation("分页查询设备管理") + @GetMapping("/page") + public ApiResult> page(EquipmentParam param) { + // 使用关联查询 + if (getMerchantCode() != null) { + param.setMerchantCode(getMerchantCode()); + } + return success(equipmentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipment:list')") + @OperationLog + @ApiOperation("查询全部设备管理") + @GetMapping() + public ApiResult> list(EquipmentParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(equipmentService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(equipmentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipment:list')") + @OperationLog + @ApiOperation("根据id查询设备管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(equipmentService.getById(id)); + // 使用关联查询 + return success(equipmentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:equipment:save')") + @OperationLog + @ApiOperation("添加设备管理") + @PostMapping() + public ApiResult save(@RequestBody Equipment equipment) throws AlipayApiException { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (getMerchantCode() != null) { + equipment.setMerchantCode(getMerchantCode()); + } + if (equipmentService.count(new LambdaQueryWrapper() + .eq(Equipment::getEquipmentCode, equipment.getEquipmentCode())) > 0) { + return fail("设备编号已存在"); + } + if (equipmentService.save(equipment)) { + // 生成二维码 + String qrcode = createQrcode(equipment); + equipment.setQrcode(qrcode); + equipmentService.saveOrUpdate(equipment); + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:update')") + @OperationLog + @ApiOperation("修改设备管理") + @PutMapping() + public ApiResult update(@RequestBody Equipment equipment) throws AlipayApiException { + if (equipmentService.updateById(equipment)) { + // 生成二维码 + String qrcode = createQrcode(equipment); + equipment.setQrcode(qrcode); + equipmentService.saveOrUpdate(equipment); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:update')") + @OperationLog + @ApiOperation("绑定设备") + @PutMapping("/bind") + public ApiResult bindEquipment(@RequestBody Equipment equipment) { + final Integer orderId = equipment.getOrderId(); + final Order order = orderService.getById(orderId); + Equipment one = equipmentService.getOne(new LambdaQueryWrapper().eq(Equipment::getEquipmentCode, equipment.getEquipmentCode())); + if(one == null){ + return fail("设备不存在"); + } + if(!one.getUserId().equals(0)){ + return fail("该设备已被绑定"); + } + Equipment saveData = new Equipment(); + saveData.setEquipmentId(one.getEquipmentId()); + saveData.setUserId(equipment.getUserId()); + saveData.setOrderId(orderId); + if (equipmentService.updateById(saveData)) { + // 记录明细 + EquipmentRecord record = new EquipmentRecord(); + record.setEquipmentCode(one.getEquipmentCode()); + record.setUserId(getLoginUserId()); + record.setEventType(EVENT_TYPE_BIND); + record.setComments("订单号:".concat(Long.toString(order.getOrderNo()))); + record.setMerchantCode(one.getMerchantCode()); + equipmentRecordService.save(record); + // 订单发货 + order.setDeliveryStatus(DELIVERY_STATUS_YES); + order.setOrderStatus(ORDER_STATUS_COMPLETED); + order.setReceiptStatus(RECEIPT_STATUS_YES); + order.setExpirationTime(DateUtil.nextMonth()); + order.setEquipmentId(one.getEquipmentId()); + orderService.updateById(order); + return success("绑定成功"); + } + return fail("绑定失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:remove')") + @OperationLog + @ApiOperation("删除设备管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (equipmentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:save')") + @OperationLog + @ApiOperation("批量添加设备管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (equipmentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:update')") + @OperationLog + @ApiOperation("批量修改设备管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(equipmentService, "equipment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:remove')") + @OperationLog + @ApiOperation("批量删除设备管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (equipmentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + // 生成支付宝小程序码 + private String createQrcode(Equipment equipment) throws AlipayApiException{ + // 实例化客户端 + DefaultAlipayClient alipayClient = alipayConfig.alipayClient(getTenantId()); + + AlipayOpenAppQrcodeCreateRequest request = new AlipayOpenAppQrcodeCreateRequest(); + AlipayOpenAppQrcodeCreateModel model = new AlipayOpenAppQrcodeCreateModel(); + model.setUrlParam("pages/equipment/equipment"); + System.out.println("equipment = " + equipment); + // __id__=2&merchantCode=M311539&merchantId=52 + // pages/equipment/equipment + +// Merchant merchant = merchantService.getMerchantByCode(equipment.getMerchantCode()); +// if(merchant == null){ +// throw new BusinessException("该商户不存在"); +// } + model.setQueryParam("equipmentId=".concat(equipment.getEquipmentId().toString())); + model.setDescribe("扫码租赁电池"); + request.setBizModel(model); + AlipayOpenAppQrcodeCreateResponse response = alipayClient.certificateExecute(request); + System.out.println(response.getBody()); + if (response.isSuccess()) { + System.out.println("调用成功"); + final JSONObject jsonObject = JSONObject.parseObject(response.getBody()); + final String alipay_open_app_qrcode_create_response = jsonObject.getString("alipay_open_app_qrcode_create_response"); + final JSONObject jsonObject1 = JSONObject.parseObject(alipay_open_app_qrcode_create_response); + return jsonObject1.getString("qr_code_url"); + } else { + System.out.println("调用失败"); + return null; + } + } + + @PreAuthorize("hasAuthority('apps:equipment:update')") + @ApiOperation("确认收货") + @PostMapping("/receipt") + public ApiResult receipt(@RequestBody Order order){ + orderService.updateById(order); + return success("确认收货"); + } +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/EquipmentFaultController.java b/src/main/java/com/gxwebsoft/apps/controller/EquipmentFaultController.java new file mode 100644 index 0000000..f42c6cc --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/EquipmentFaultController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.EquipmentFaultService; +import com.gxwebsoft.apps.entity.EquipmentFault; +import com.gxwebsoft.apps.param.EquipmentFaultParam; +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 com.gxwebsoft.common.system.entity.User; +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-12-01 18:40:25 + */ +@Api(tags = "故障电池管理") +@RestController +@RequestMapping("/api/apps/equipment-fault") +public class EquipmentFaultController extends BaseController { + @Resource + private EquipmentFaultService equipmentFaultService; + + @PreAuthorize("hasAuthority('apps:equipmentFault:list')") + @OperationLog + @ApiOperation("分页查询故障电池") + @GetMapping("/page") + public ApiResult> page(EquipmentFaultParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(equipmentFaultService.page(page, page.getWrapper())); + // 使用关联查询 + return success(equipmentFaultService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentFault:list')") + @OperationLog + @ApiOperation("查询全部故障电池") + @GetMapping() + public ApiResult> list(EquipmentFaultParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(equipmentFaultService.list(page.getOrderWrapper())); + // 使用关联查询 +// return success(equipmentFaultService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentFault:list')") + @OperationLog + @ApiOperation("根据id查询故障电池") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(equipmentFaultService.getById(id)); + // 使用关联查询 + //return success(equipmentFaultService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:equipmentFault:save')") + @OperationLog + @ApiOperation("添加故障电池") + @PostMapping() + public ApiResult save(@RequestBody EquipmentFault equipmentFault) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + equipmentFault.setUserId(loginUser.getUserId()); + equipmentFault.setMerchantCode(getMerchantCode()); + } + if (equipmentFaultService.save(equipmentFault)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentFault:update')") + @OperationLog + @ApiOperation("修改故障电池") + @PutMapping() + public ApiResult update(@RequestBody EquipmentFault equipmentFault) { + if (equipmentFaultService.updateById(equipmentFault)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentFault:remove')") + @OperationLog + @ApiOperation("删除故障电池") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (equipmentFaultService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentFault:save')") + @OperationLog + @ApiOperation("批量添加故障电池") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (equipmentFaultService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentFault:update')") + @OperationLog + @ApiOperation("批量修改故障电池") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(equipmentFaultService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentFault:remove')") + @OperationLog + @ApiOperation("批量删除故障电池") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (equipmentFaultService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/EquipmentGoodsController.java b/src/main/java/com/gxwebsoft/apps/controller/EquipmentGoodsController.java new file mode 100644 index 0000000..6279315 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/EquipmentGoodsController.java @@ -0,0 +1,130 @@ +package com.gxwebsoft.apps.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.EquipmentGoodsService; +import com.gxwebsoft.apps.entity.EquipmentGoods; +import com.gxwebsoft.apps.param.EquipmentGoodsParam; +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 com.gxwebsoft.common.system.entity.User; +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-02-28 22:40:50 + */ +@Api(tags = "电池管理记录表管理") +@RestController +@RequestMapping("/api/apps/equipment-goods") +public class EquipmentGoodsController extends BaseController { + @Resource + private EquipmentGoodsService equipmentGoodsService; + + @PreAuthorize("hasAuthority('apps:equipmentGoods:list')") + @OperationLog + @ApiOperation("分页查询电池管理记录表") + @GetMapping("/page") + public ApiResult> page(EquipmentGoodsParam param) { + // 使用关联查询 + return success(equipmentGoodsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentGoods:list')") + @OperationLog + @ApiOperation("查询全部电池管理记录表") + @GetMapping() + public ApiResult> list(EquipmentGoodsParam param) { + // 使用关联查询 + return success(equipmentGoodsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentGoods:list')") + @OperationLog + @ApiOperation("根据id查询电池管理记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(equipmentGoodsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:equipmentGoods:save')") + @OperationLog + @ApiOperation("添加电池管理记录表") + @PostMapping() + public ApiResult save(@RequestBody EquipmentGoods equipmentGoods) { + System.out.println("equipmentGoods = " + equipmentGoods); + if (equipmentGoodsService.save(equipmentGoods)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentGoods:update')") + @OperationLog + @ApiOperation("修改电池管理记录表") + @PutMapping() + public ApiResult update(@RequestBody EquipmentGoods equipmentGoods) { + if (equipmentGoodsService.updateById(equipmentGoods)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentGoods:remove')") + @OperationLog + @ApiOperation("删除电池管理记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (equipmentGoodsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentGoods:save')") + @OperationLog + @ApiOperation("批量添加电池管理记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (equipmentGoodsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentGoods:update')") + @OperationLog + @ApiOperation("批量修改电池管理记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(equipmentGoodsService, "goods_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentGoods:remove')") + @OperationLog + @ApiOperation("批量删除电池管理记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (equipmentGoodsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/EquipmentOrderController.java b/src/main/java/com/gxwebsoft/apps/controller/EquipmentOrderController.java new file mode 100644 index 0000000..9774396 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/EquipmentOrderController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.EquipmentOrderService; +import com.gxwebsoft.apps.entity.EquipmentOrder; +import com.gxwebsoft.apps.param.EquipmentOrderParam; +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 com.gxwebsoft.common.system.entity.User; +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-04-14 21:24:31 + */ +@Api(tags = "订单记录表管理") +@RestController +@RequestMapping("/api/apps/equipment-order") +public class EquipmentOrderController extends BaseController { + @Resource + private EquipmentOrderService equipmentOrderService; + + @PreAuthorize("hasAuthority('apps:equipmentOrder:list')") + @OperationLog + @ApiOperation("分页查询订单记录表") + @GetMapping("/page") + public ApiResult> page(EquipmentOrderParam param) { +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(equipmentOrderService.page(page, page.getWrapper())); + // 使用关联查询 + return success(equipmentOrderService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrder:list')") + @OperationLog + @ApiOperation("查询全部订单记录表") + @GetMapping() + public ApiResult> list(EquipmentOrderParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(equipmentOrderService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(equipmentOrderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrder:list')") + @OperationLog + @ApiOperation("根据id查询订单记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(equipmentOrderService.getById(id)); + // 使用关联查询 + //return success(equipmentOrderService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrder:save')") + @OperationLog + @ApiOperation("添加订单记录表") + @PostMapping() + public ApiResult save(@RequestBody EquipmentOrder equipmentOrder) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + equipmentOrder.setUserId(loginUser.getUserId()); + equipmentOrder.setMerchantCode(getMerchantCode()); + } + if (equipmentOrderService.save(equipmentOrder)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrder:update')") + @OperationLog + @ApiOperation("修改订单记录表") + @PutMapping() + public ApiResult update(@RequestBody EquipmentOrder equipmentOrder) { + if (equipmentOrderService.updateById(equipmentOrder)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrder:remove')") + @OperationLog + @ApiOperation("删除订单记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (equipmentOrderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrder:save')") + @OperationLog + @ApiOperation("批量添加订单记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (equipmentOrderService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrder:update')") + @OperationLog + @ApiOperation("批量修改订单记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(equipmentOrderService, "order_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrder:remove')") + @OperationLog + @ApiOperation("批量删除订单记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (equipmentOrderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/EquipmentOrderGoodsController.java b/src/main/java/com/gxwebsoft/apps/controller/EquipmentOrderGoodsController.java new file mode 100644 index 0000000..26afd4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/EquipmentOrderGoodsController.java @@ -0,0 +1,148 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.EquipmentOrderGoodsService; +import com.gxwebsoft.apps.entity.EquipmentOrderGoods; +import com.gxwebsoft.apps.param.EquipmentOrderGoodsParam; +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 com.gxwebsoft.common.system.entity.User; +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-05-11 19:10:13 + */ +@Api(tags = "电池管理记录表管理") +@RestController +@RequestMapping("/api/apps/equipment-order-goods") +public class EquipmentOrderGoodsController extends BaseController { + @Resource + private EquipmentOrderGoodsService equipmentOrderGoodsService; + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:list')") + @OperationLog + @ApiOperation("分页查询电池管理记录表") + @GetMapping("/page") + public ApiResult> page(EquipmentOrderGoodsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(equipmentOrderGoodsService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(equipmentOrderGoodsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:list')") + @OperationLog + @ApiOperation("查询全部电池管理记录表") + @GetMapping() + public ApiResult> list(EquipmentOrderGoodsParam param) { +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// System.out.println("param = " + param); +// final EquipmentOrderGoods eog = equipmentOrderGoodsService.getById(param.getGoodsId()); +// System.out.println("eog = " + eog); +// eog.setOrderId(param.getOrderId()); +// equipmentOrderGoodsService.updateById(eog); +// +// final List list = equipmentOrderGoodsService.list(page.getOrderWrapper()); +// +// return success(equipmentOrderGoodsService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(equipmentOrderGoodsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:list')") + @OperationLog + @ApiOperation("根据id查询电池管理记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(equipmentOrderGoodsService.getById(id)); + // 使用关联查询 + //return success(equipmentOrderGoodsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:save')") + @OperationLog + @ApiOperation("添加电池管理记录表") + @PostMapping() + public ApiResult save(@RequestBody EquipmentOrderGoods equipmentOrderGoods) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + equipmentOrderGoods.setUserId(loginUser.getUserId()); + equipmentOrderGoods.setMerchantCode(getMerchantCode()); + } + if (equipmentOrderGoodsService.save(equipmentOrderGoods)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:update')") + @OperationLog + @ApiOperation("修改电池管理记录表") + @PutMapping() + public ApiResult update(@RequestBody EquipmentOrderGoods equipmentOrderGoods) { + if (equipmentOrderGoodsService.updateById(equipmentOrderGoods)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:remove')") + @OperationLog + @ApiOperation("删除电池管理记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (equipmentOrderGoodsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:save')") + @OperationLog + @ApiOperation("批量添加电池管理记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (equipmentOrderGoodsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:update')") + @OperationLog + @ApiOperation("批量修改电池管理记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(equipmentOrderGoodsService, "order_goods_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentOrderGoods:remove')") + @OperationLog + @ApiOperation("批量删除电池管理记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (equipmentOrderGoodsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/EquipmentRecordController.java b/src/main/java/com/gxwebsoft/apps/controller/EquipmentRecordController.java new file mode 100644 index 0000000..5469754 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/EquipmentRecordController.java @@ -0,0 +1,144 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.EquipmentRecordService; +import com.gxwebsoft.apps.entity.EquipmentRecord; +import com.gxwebsoft.apps.param.EquipmentRecordParam; +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 com.gxwebsoft.common.system.entity.User; +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-12-03 01:23:53 + */ +@Api(tags = "前世今生管理") +@RestController +@RequestMapping("/api/apps/equipment-record") +public class EquipmentRecordController extends BaseController { + @Resource + private EquipmentRecordService equipmentRecordService; + + @PreAuthorize("hasAuthority('apps:equipmentRecord:list')") + @OperationLog + @ApiOperation("分页查询前世今生") + @GetMapping("/page") + public ApiResult> page(EquipmentRecordParam param) { + PageParam page = new PageParam<>(param); + // 搜索条件 + if (getMerchantCode() != null) { + param.setMerchantCode(getMerchantCode()); + } +// page.setDefaultOrder("create_time desc"); +// return success(equipmentRecordService.page(page, page.getWrapper())); + // 使用关联查询 + return success(equipmentRecordService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentRecord:list')") + @OperationLog + @ApiOperation("查询全部前世今生") + @GetMapping() + public ApiResult> list(EquipmentRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(equipmentRecordService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(equipmentRecordService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipmentRecord:list')") + @OperationLog + @ApiOperation("根据id查询前世今生") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(equipmentRecordService.getById(id)); + // 使用关联查询 + return success(equipmentRecordService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:equipmentRecord:save')") + @OperationLog + @ApiOperation("添加前世今生") + @PostMapping() + public ApiResult save(@RequestBody EquipmentRecord equipmentRecord) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + equipmentRecord.setUserId(loginUser.getUserId()); + equipmentRecord.setMerchantCode(getMerchantCode()); + } + if (equipmentRecordService.save(equipmentRecord)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentRecord:update')") + @OperationLog + @ApiOperation("修改前世今生") + @PutMapping() + public ApiResult update(@RequestBody EquipmentRecord equipmentRecord) { + if (equipmentRecordService.updateById(equipmentRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentRecord:remove')") + @OperationLog + @ApiOperation("删除前世今生") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (equipmentRecordService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentRecord:save')") + @OperationLog + @ApiOperation("批量添加前世今生") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (equipmentRecordService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentRecord:update')") + @OperationLog + @ApiOperation("批量修改前世今生") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(equipmentRecordService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipmentRecord:remove')") + @OperationLog + @ApiOperation("批量删除前世今生") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (equipmentRecordService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/HualalaCardBenefitsController.java b/src/main/java/com/gxwebsoft/apps/controller/HualalaCardBenefitsController.java new file mode 100644 index 0000000..1376585 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/HualalaCardBenefitsController.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.HualalaCardBenefitsService; +import com.gxwebsoft.apps.entity.HualalaCardBenefits; +import com.gxwebsoft.apps.param.HualalaCardBenefitsParam; +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 com.gxwebsoft.common.system.entity.User; +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-01-08 12:22:50 + */ +@Api(tags = "会员权益管理") +@RestController +@RequestMapping("/api/apps/hualala-card-benefits") +public class HualalaCardBenefitsController extends BaseController { + @Resource + private HualalaCardBenefitsService hualalaCardBenefitsService; + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:list')") + @OperationLog + @ApiOperation("分页查询会员权益") + @GetMapping("/page") + public ApiResult> page(HualalaCardBenefitsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaCardBenefitsService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(hualalaCardBenefitsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:list')") + @OperationLog + @ApiOperation("查询全部会员权益") + @GetMapping() + public ApiResult> list(HualalaCardBenefitsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaCardBenefitsService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(hualalaCardBenefitsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:list')") + @OperationLog + @ApiOperation("根据id查询会员权益") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(hualalaCardBenefitsService.getById(id)); + // 使用关联查询 + //return success(hualalaCardBenefitsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:save')") + @OperationLog + @ApiOperation("添加会员权益") + @PostMapping() + public ApiResult save(@RequestBody HualalaCardBenefits hualalaCardBenefits) { + if (hualalaCardBenefitsService.save(hualalaCardBenefits)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:update')") + @OperationLog + @ApiOperation("修改会员权益") + @PutMapping() + public ApiResult update(@RequestBody HualalaCardBenefits hualalaCardBenefits) { + if (hualalaCardBenefitsService.updateById(hualalaCardBenefits)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:remove')") + @OperationLog + @ApiOperation("删除会员权益") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hualalaCardBenefitsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:save')") + @OperationLog + @ApiOperation("批量添加会员权益") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hualalaCardBenefitsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:update')") + @OperationLog + @ApiOperation("批量修改会员权益") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hualalaCardBenefitsService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCardBenefits:remove')") + @OperationLog + @ApiOperation("批量删除会员权益") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hualalaCardBenefitsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/HualalaCardController.java b/src/main/java/com/gxwebsoft/apps/controller/HualalaCardController.java new file mode 100644 index 0000000..66cea36 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/HualalaCardController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.HualalaCardService; +import com.gxwebsoft.apps.entity.HualalaCard; +import com.gxwebsoft.apps.param.HualalaCardParam; +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 com.gxwebsoft.common.system.entity.User; +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-01-08 12:22:50 + */ +@Api(tags = "管理") +@RestController +@RequestMapping("/api/apps/hualala-card") +public class HualalaCardController extends BaseController { + @Resource + private HualalaCardService hualalaCardService; + + @PreAuthorize("hasAuthority('apps:hualalaCard:list')") + @OperationLog + @ApiOperation("分页查询") + @GetMapping("/page") + public ApiResult> page(HualalaCardParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaCardService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(hualalaCardService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCard:list')") + @OperationLog + @ApiOperation("查询全部") + @GetMapping() + public ApiResult> list(HualalaCardParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaCardService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(hualalaCardService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCard:list')") + @OperationLog + @ApiOperation("根据id查询") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(hualalaCardService.getById(id)); + // 使用关联查询 + //return success(hualalaCardService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCard:save')") + @OperationLog + @ApiOperation("添加") + @PostMapping() + public ApiResult save(@RequestBody HualalaCard hualalaCard) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + hualalaCard.setUserId(loginUser.getUserId()); + hualalaCard.setMerchantCode(getMerchantCode()); + } + if (hualalaCardService.save(hualalaCard)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCard:update')") + @OperationLog + @ApiOperation("修改") + @PutMapping() + public ApiResult update(@RequestBody HualalaCard hualalaCard) { + if (hualalaCardService.updateById(hualalaCard)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCard:remove')") + @OperationLog + @ApiOperation("删除") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hualalaCardService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCard:save')") + @OperationLog + @ApiOperation("批量添加") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hualalaCardService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCard:update')") + @OperationLog + @ApiOperation("批量修改") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hualalaCardService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCard:remove')") + @OperationLog + @ApiOperation("批量删除") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hualalaCardService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/HualalaCart.java b/src/main/java/com/gxwebsoft/apps/controller/HualalaCart.java new file mode 100644 index 0000000..5037c20 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/HualalaCart.java @@ -0,0 +1,240 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.digest.DigestUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.apps.entity.HualalaFood; +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.apps.entity.ItemVo; +import com.gxwebsoft.apps.result.*; +import com.gxwebsoft.apps.service.HualalaFoodService; +import com.gxwebsoft.apps.service.HualalaService; +import com.gxwebsoft.apps.service.HualalaShopService; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.val; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.http.*; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_SUCCESS; +import static com.gxwebsoft.common.core.constants.RedisConstants.*; + +/** + * 哗啦啦-购物车 + * 教程参考 https://blog.csdn.net/qq_34383510/article/details/127824628 + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +@Api(tags = "哗啦啦-购物车") +@RestController +@RequestMapping("/api/apps/hualala-cart") +public class HualalaCart extends BaseController { + + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private CacheClient cacheClient; + @Resource + private HualalaService hualalaService; + @Resource + private HualalaFoodService hualalaFoodService; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private HualalaShopService hualalaShopService; + + @ApiOperation("我的购物车") + @GetMapping() + public ApiResult cart(ItemVo param) { + String key = getKey(param.getShopId()); + + return success("查询成功",showCart(key)); + } + + @ApiOperation("添加购物车") + @PostMapping("/addCart") + public ApiResult addCart(@RequestBody ItemVo param) { + String key = getKey(param.getShopId()); + cacheClient.hPut(key,param.getFoodId().toString(),JSONUtil.toJSONString(param)); + + return success("添加成功",showCart(key)); + } + + @ApiOperation("生成订单并清空购物车") + @PostMapping("/createOrder") + public ApiResult createOrder(@RequestBody Order order){ + String key = getKey(order.getShopId().toString()); + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + order.setUserId(loginUser.getUserId()); + } + order.setMerchantCode(order.getShopId().toString()); + order.setPayMethod("通联支付"); + if (orderService.save(order)) { + // 添加订单商品 + List hValues = cacheClient.hValues(key); + hValues.forEach(d -> { + JSONObject json = JSONObject.parseObject(d.toString()); + OrderGoods orderGoods = new OrderGoods(); + orderGoods.setOrderId(order.getOrderId()); + orderGoods.setGoodsName(json.getString("foodName")); + orderGoods.setImageUrl(json.getString("imge")); + orderGoods.setTotalNum(Integer.valueOf(json.getString("num"))); + orderGoods.setGoodsId(Integer.valueOf(json.getString("foodId"))); + orderGoods.setGoodsSkuId(json.getString("foodUnitID")); + orderGoods.setUserId(getLoginUserId()); + BigDecimal totalPrice = new BigDecimal(json.getString("price")); + orderGoods.setTotalPrice(totalPrice); + orderGoods.setTenantId(getTenantId()); + orderGoodsService.save(orderGoods); + }); + + // 清空购物车 + cacheClient.delete(key); + return success("订单创建成功",order); + } + return fail("订单创建失败"); + } + + @ApiOperation("通联支付") + @PostMapping("/allinPay") + public ApiResult allinPay(@RequestBody Order order){ + Order orderInfo = orderService.getById(order.getOrderId()); + System.out.println("orderInfo = " + orderInfo); + final HualalaShop shop = hualalaShopService.getByIdRel(orderInfo.getShopId()); + final String payMerchantNo = shop.getPayMerchantNo(); + final String paySecret = shop.getPaySecret(); + System.out.println("payMerchantNo = " + payMerchantNo); + System.out.println("paySecret = " + paySecret); + + // 正式接口 + String url = "https://interface.allinpaygx.com/api/access/payInterface/unifiedPay"; + // 测试接口 +// String url = "https://interfacetest.allinpaygx.com/api/access/payInterface/unifiedPay"; +// System.out.println("接口地址 = " + url); + // map传参数 + Map map = new HashMap<>(); + // 计算金额 + final BigDecimal orderPrice = orderInfo.getOrderPrice().multiply(new BigDecimal(100)); + final int amount = Integer.parseInt(orderPrice.stripTrailingZeros().toPlainString()); + map.put("merchantNo", payMerchantNo); // 正式商户 +// map.put("merchantNo", "113201120053"); // 测试商户:113201120053 + map.put("merchantOrderNo", orderInfo.getOrderNo()); + map.put("amount",String.valueOf(amount)); + map.put("notifyUrl","https://open.gxwebsoft.com/api/apps/hualala-cart/payNotify"); + map.put("payType","W06S"); + // 附加签名 + String sign = getSign(map,paySecret); + System.out.println("sign = " + sign); + map.put("sign",sign); + System.out.println("请求参数 = " + map); + String result = HttpUtil.post(url,map); + System.out.println("result = " + result); + JSONObject resultObj = JSON.parseObject(result); + JSONObject payinfo = JSON.parseObject(resultObj.getString("payinfo")); + System.out.println("payinfo = " + payinfo); + return success("支付参数",payinfo); + } + + public static String getSign(Map treeMap, String paySecret) { +// String secret = paySecret; // 正式秘钥 +// String secret = "aceb62c896d849c89d1c8b9a4416d1a7"; // 测试秘钥 + TreeMap tMap = new TreeMap<>(); + for (Map.Entry entry : treeMap.entrySet()) { + if (!StrUtil.isEmpty(entry.getValue().toString()) && !entry.getKey().equals("sign")) { + tMap.put(entry.getKey(), entry.getValue().toString()); + } + } + StringBuffer buf = new StringBuffer(); + for (String key : tMap.keySet()) { + buf.append(key).append(treeMap.get(key)); + } + buf.append(paySecret); + System.out.println("buf = " + buf); + return DigestUtil.md5Hex(buf.toString()).toUpperCase(); + } + + @ApiOperation("通联支付") + @PostMapping("/payNotify") + public String payNotify(@RequestParam Map params){ + // 支付成功 + if (orderService.allinPay(params)) { + return "success"; + } + return "error"; + + } + + @ApiOperation("交易查询") + @PostMapping("/findOrderInfo") + public ApiResult findOrderInfo(@RequestBody Order order){ + final Order data = orderService.getByOutTradeNo(order.getOrderNo().toString()); + return success("查询结果",data); + } + + + // 获取Key + private String getKey(String shopId) { + return HLL_CART_FOOD_KEY.concat(shopId).concat(":").concat(getLoginUserId().toString()); + } + + private OperateVo showCart(String key){ + // 获取购物车数据 + List values = cacheClient.hValues(key); +// System.out.println("values = " + values); + List collect = values.stream().map(item -> JSONUtil.parseObject(JSONUtil.toJSONString(item), ItemVo.class)).collect(Collectors.toList()); +// System.out.println("collect = " + collect); + + // 封装数据结果 + OperateVo operateVo = new OperateVo(); + operateVo.setTotalNum(0); + operateVo.setTotalPrice(BigDecimal.valueOf(0)); + operateVo.setItems(collect); + collect.forEach(d -> { +// System.out.println("operateVo.getTotalNum() + d.getNum() = " + operateVo.getTotalNum() + d.getNum()); + operateVo.setTotalNum(operateVo.getTotalNum()+d.getNum()); + operateVo.setTotalPrice(operateVo.getTotalPrice().add(d.getPrice().multiply(BigDecimal.valueOf(d.getNum())))); + }); +// System.out.println("operateVo = " + operateVo); + return operateVo; + } + + + @ApiOperation("通联支付2") + @PostMapping("/test") + public ApiResult test(){ + final Order order = orderService.getByOutTradeNo("2023030149684157"); + order.setPayStatus(PAY_STATUS_SUCCESS); + order.setPayPrice(order.getTotalPrice()); + orderService.updateById(order); + return success("成功",order); + } +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/HualalaCartFoodController.java b/src/main/java/com/gxwebsoft/apps/controller/HualalaCartFoodController.java new file mode 100644 index 0000000..36072ef --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/HualalaCartFoodController.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.HualalaCartFoodService; +import com.gxwebsoft.apps.entity.HualalaCartFood; +import com.gxwebsoft.apps.param.HualalaCartFoodParam; +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 com.gxwebsoft.common.system.entity.User; +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-01-14 14:46:44 + */ +@Api(tags = "购物车商品管理") +@RestController +@RequestMapping("/api/apps/hualala-cart-food") +public class HualalaCartFoodController extends BaseController { + @Resource + private HualalaCartFoodService hualalaCartFoodService; + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:list')") + @OperationLog + @ApiOperation("分页查询购物车商品") + @GetMapping("/page") + public ApiResult> page(HualalaCartFoodParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaCartFoodService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(hualalaCartFoodService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:list')") + @OperationLog + @ApiOperation("查询全部购物车商品") + @GetMapping() + public ApiResult> list(HualalaCartFoodParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaCartFoodService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(hualalaCartFoodService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:list')") + @OperationLog + @ApiOperation("根据id查询购物车商品") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(hualalaCartFoodService.getById(id)); + // 使用关联查询 + //return success(hualalaCartFoodService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:save')") + @OperationLog + @ApiOperation("添加购物车商品") + @PostMapping() + public ApiResult save(@RequestBody HualalaCartFood hualalaCartFood) { + if (hualalaCartFoodService.save(hualalaCartFood)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:update')") + @OperationLog + @ApiOperation("修改购物车商品") + @PutMapping() + public ApiResult update(@RequestBody HualalaCartFood hualalaCartFood) { + if (hualalaCartFoodService.updateById(hualalaCartFood)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:remove')") + @OperationLog + @ApiOperation("删除购物车商品") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hualalaCartFoodService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:save')") + @OperationLog + @ApiOperation("批量添加购物车商品") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hualalaCartFoodService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:update')") + @OperationLog + @ApiOperation("批量修改购物车商品") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hualalaCartFoodService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaCartFood:remove')") + @OperationLog + @ApiOperation("批量删除购物车商品") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hualalaCartFoodService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/HualalaController.java b/src/main/java/com/gxwebsoft/apps/controller/HualalaController.java new file mode 100644 index 0000000..1fe7a16 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/HualalaController.java @@ -0,0 +1,384 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.apps.entity.HualalaFood; +import com.gxwebsoft.apps.entity.HualalaFoodCategory; +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.apps.entity.ItemVo; +import com.gxwebsoft.apps.param.*; +import com.gxwebsoft.apps.result.AllShopResult; +import com.gxwebsoft.apps.result.FoodCategoryResult; +import com.gxwebsoft.apps.result.OpenFoodResult; +import com.gxwebsoft.apps.result.ShopBaseInfoResult; +import com.gxwebsoft.apps.service.HualalaFoodCategoryService; +import com.gxwebsoft.apps.service.HualalaFoodService; +import com.gxwebsoft.apps.service.HualalaService; +import com.gxwebsoft.apps.service.HualalaShopService; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.mapper.OrderGoodsMapper; +import com.gxwebsoft.shop.param.MerchantParam; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.val; +import org.springframework.data.geo.Point; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.RedisConstants.*; + +/** + * 哗啦啦接口 + * 桂小厨GO + * AppID:wx445232847c503f1b + * AppSecret:eb81fbcac21da949d819143b43d18636 + * 桂小厨+ + * AppID:wx445232847c503f1b + * AppSecret:eb81fbcac21da949d819143b43d18636 + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +@Api(tags = "哗啦啦接口") +@RestController +@RequestMapping("/api/apps/hualala") +public class HualalaController extends BaseController { + @Resource + private HualalaService hualalaService; + @Resource + private HualalaShopService hualalaShopService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private CacheClient cacheClient; + @Resource + private HualalaFoodService hualalaFoodService; + @Resource + private HualalaFoodCategoryService hualalaFoodCategoryService; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private OrderGoodsMapper orderGoodsMapper; + + @ApiOperation("哗啦啦万能接口") + @PostMapping() + public ApiResult post(@RequestBody HualalaParam hualalaParam) { + // 接口 + String apiUrl = hualalaParam.getApiUrl(); + // 请求参数 + HashMap params = hualalaParam.getParams(); + // 执行请求 + JSONObject response = hualalaService.doPost(apiUrl, params); + return success("请求成功",response); + } + + @ApiOperation("查询集团店铺列表") + @PostMapping("/getAllShop") + public ApiResult getAllShop(@RequestBody Map params) { + // 请求缓存数据 + AllShopResult cache = cacheClient.get(getAllShop, AllShopResult.class); + if(cache != null){ + return success("请求成功",cache.getShopInfoList()); + } + + // 执行请求解析data数据 + JSONObject response = hualalaService.doPost("/doc/getAllShop", params); + AllShopResult result = JSONObject.parseObject(response.getString("data"), AllShopResult.class); + cacheClient.set(getAllShop,result); + + List shopInfoList = result.getShopInfoList(); + // 过滤非桂小厨品牌门店 + List shops = shopInfoList.stream().filter(d -> d.getBrandName().equals("桂小厨")).collect(Collectors.toList()); + shops.forEach(d -> { + d.setCreateTime(null); + d.setTenantId(getTenantId()); + cacheClient.geoAdd(haulalaGeoKey,d.getMapLongitudeValueBaiDu(),d.getMapLatitudeValueBaiDu(),d.getShopId().toString()); + }); + hualalaShopService.saveBatch(shops); + return success("缓存成功",shops); + + +// try { +// // 执行请求解析data数据 +// JSONObject response = hualalaService.doPost("/doc/getAllShop", params); +// AllShopResult result = JSONObject.parseObject(response.getString("data"), AllShopResult.class); +// cacheClient.set(getAllShop,result,1L,TimeUnit.DAYS); +// return success("请求成功",result); +// } catch (Exception e) { +// throw new RuntimeException(); +// } + } + + + @ApiOperation("查询店铺信息") + @PostMapping("/getBaseInfo") + public ApiResult getBaseInfo(@RequestBody Map params) { + // 请求缓存数据 + String key = getBaseInfo.concat(":").concat(params.get("shopId").toString()); + Merchant merchant = cacheClient.get(key, Merchant.class); + if(merchant != null){ + return success("请求成功",merchant); + } + try { + // 执行请求解析data数据 + JSONObject response = hualalaService.doPost("/doc/getBaseInfo", params); + ShopBaseInfoResult result = JSONObject.parseObject(response.getString("data"), ShopBaseInfoResult.class); + cacheClient.set(key,result); + return success("缓存成功",result); + } catch (Exception e) { + throw new RuntimeException(); + } + } + + + @ApiOperation("查询店铺菜品分类") + @PostMapping("/getFoodClassCategory") + public ApiResult getFoodClassCategory(@RequestBody Map params) { + // 只查询外卖菜品 + params.put("type",1); + // 请求缓存数据 + String key = getFoodClassCategory.concat(":").concat(params.get("shopId").toString()); + FoodCategoryResult cache = cacheClient.get(key, FoodCategoryResult.class); + if(cache != null){ + return success("请求成功",cache); + } + + try { + // 执行请求解析data数据 + JSONObject response = hualalaService.doPost("/doc/getFoodClassCategory", params); + FoodCategoryResult result = JSONObject.parseObject(response.getString("data"), FoodCategoryResult.class); + cacheClient.set(key,result); + return success("缓存成功",result); + } catch (Exception e) { + throw new RuntimeException(); + } + } + + @ApiOperation("查询店铺菜品列表") + @PostMapping("/getOpenFood") + public ApiResult getOpenFood(@RequestBody Map params) { + // 请求缓存数据 + String key = getOpenFood.concat(":").concat(params.get("shopId").toString()); + OpenFoodResult cache = cacheClient.get(key, OpenFoodResult.class); + if(cache != null){ + // 计算加入购物车的商品数量 + List foodList = cache.getFoodList(); + foodList.forEach(d -> { + String cartKey = HLL_CART_FOOD_KEY.concat(d.getShopId()).concat(":").concat(getLoginUserId().toString()); + ItemVo item = cacheClient.hGet(cartKey, d.getFoodId(), ItemVo.class); + if(item != null){ + d.setCartNum(item.getNum()); + } + }); +// List foods = CommonUtil.toTreeData(cache.getFoodList(), null, HualalaFood::getParentFoodId, HualalaFood::getFoodOnlineCategoryId, HualalaFood::setChildren); + Map> collect = foodList.stream().collect(Collectors.groupingBy(HualalaFood::getFoodOnlineCategoryId)); + return success("请求成功",collect); + } + + // 执行请求解析当前店铺的菜品数据 + JSONObject response = hualalaService.doPost("/doc/getOpenFood", params); + OpenFoodResult result = JSONObject.parseObject(response.getString("data"), OpenFoodResult.class); + // 筛选出外卖菜品 + List foodList = result.getFoodList(); + List foodList2 = foodList.stream().filter(d -> d.getTakeawayTag().equals("2")).collect(Collectors.toList()); + // 筛选出可以点单的菜品 + List foods = foodList2.stream().filter(d -> d.getIsSingleSale().equals(1)).collect(Collectors.toList()); + // 存入redis + result.setFoodList(foods); + result.setCount(foods.size()); + cacheClient.set(key,result); + hualalaFoodService.saveBatch(foods); + return success("缓存成功",result.getFoodList()); + } + +// @ApiOperation("查询店铺菜品列表(备份)") +// @PostMapping("/getOpenFood2") +// public ApiResult getOpenFood2(@RequestBody Map params) { +// // 请求缓存数据 +// String key = getOpenFood.concat(":").concat(params.get("shopId").toString()); +// OpenFoodResult cache = cacheClient.get(key, OpenFoodResult.class); +// if(cache != null){ +// // 计算加入购物车的商品数量 +// List foodList = cache.getFoodList(); +// foodList.forEach(d -> { +// String cartKey = HLL_CART_FOOD_KEY.concat(d.getShopId()).concat(":").concat(getLoginUserId().toString()); +// ItemVo item = cacheClient.hGet(cartKey, d.getFoodId(), ItemVo.class); +// if(item != null){ +// d.setCartNum(item.getNum()); +// } +// }); +// return success("请求成功",foodList); +// } +// try { +// // 执行请求解析当前店铺的菜品数据 +// JSONObject response = hualalaService.doPost("/doc/getOpenFood", params); +// OpenFoodResult result = JSONObject.parseObject(response.getString("data"), OpenFoodResult.class); +// // 筛选出外卖菜品 +// List foodList = result.getFoodList(); +// List foodList2 = foodList.stream().filter(d -> d.getTakeawayTag().equals("2")).collect(Collectors.toList()); +// // 筛选出可以点单的菜品 +// List foods = foodList2.stream().filter(d -> d.getIsSingleSale().equals(1)).collect(Collectors.toList()); +// // 存入redis +// result.setFoodList(foods); +// result.setCount(foods.size()); +// cacheClient.set(key,result); +// return success("缓存成功",result.getFoodList()); +// } catch (Exception e) { +// throw new RuntimeException(); +// } +// } + + @PreAuthorize("hasAuthority('apps:hualala:list')") + @ApiOperation("保存菜品到redis(已废弃)") + @PostMapping("/setOpenFoodToRedis") + public ApiResult setOpenFoodToRedis(@RequestBody HualalaFoodParam food) { + System.out.println("food = " + food); + String key = "cache:getOpenFood:shop-"+food.getShopId()+":category-"+food.getFoodCategoryCode()+":"+food.getFoodId(); +// stringRedisTemplate.opsForHash().put(key,food.getFoodId(),food.getData().toString()); + return success("请求成功",food); + // 请求缓存数据 +// String key = getOpenFood + params.get("shopId"); +// String jsonStr = stringRedisTemplate.opsForValue().get(key); +// if(StrUtil.isNotBlank(jsonStr)){ +// return success("请求成功",JSON.parseObject(jsonStr)); +// } +// try { +// // 执行请求解析data数据 +// JSONObject response = hualalaService.doPost("/doc/getOpenFood", params); +// stringRedisTemplate.opsForValue().set(key, response.getString("data"),1,TimeUnit.DAYS); +// return success("请求成功",JSON.parseObject(response.getString("data"))); +// } catch (Exception e) { +// throw new RuntimeException(); +// } + } + + @ApiOperation("根据定位查询附近的门店列表") + @PostMapping("/getListByGeo") + public ApiResult> getListByGeo(@RequestBody HualalaShopParam param) { + return success(hualalaShopService.listByGeo(param)); + } + + @PreAuthorize("hasAuthority('apps:hualala:list')") + @ApiOperation("把商户坐标写入redis缓存") + @PostMapping("/geoAdd") + public ApiResult geoAdd(){ + String key1 = "shop:geo:guixiaochu"; + stringRedisTemplate.opsForGeo().add(key1,new Point(108.321614,22.815124),"76230180"); + stringRedisTemplate.opsForGeo().add(key1,new Point(108.335703,22.813917),"76230181"); + stringRedisTemplate.opsForGeo().add(key1,new Point(108.370343,22.830116),"76230179"); + stringRedisTemplate.opsForGeo().add(key1,new Point(108.292017,22.869498),"76258872"); + stringRedisTemplate.opsForGeo().add(key1,new Point(108.393005,22.81194),"76230126"); + stringRedisTemplate.opsForGeo().add(key1,new Point(108.325202,22.785341),"76230178"); + return success("添加完毕"); + } + + @ApiOperation("推送订单") + @PostMapping("/pushOrder") + public ApiResult pushOrder(@RequestBody OrderParam param){ + Integer orderId = param.getOrderId(); + Order orderInfo = orderService.getById(orderId); + System.out.println("orderInfo = " + orderInfo); + final List goodsInfo = orderGoodsMapper.selectByOrderId(orderId); + System.out.println("goodsInfo = " + goodsInfo); + // 菜品信息 + ArrayList orderItem = new ArrayList<>(); + goodsInfo.forEach(goods -> { + JSONObject item = new JSONObject(); + item.put("foodID",goods.getGoodsId()); // 菜品id + item.put("foodName",goods.getGoodsName()); // 菜品名称 + item.put("foodUnit","份"); // 规格名称 + item.put("foodUnitID",goods.getGoodsSkuId()); // 菜品规格id + item.put("isSetFood",0); // 是/否套餐,0:非套餐 1:套餐 + item.put("isBatching",0); // 0:正常菜,1:主菜,2:配菜,3:加价做法 + item.put("foodCount",goods.getTotalNum()); // 菜品数量 + item.put("originPrice",goods.getTotalPrice()); // 菜品原价 + item.put("takeoutPackagingFee","0"); // 打包费 + item.put("isDiscount",0); // 是/否打折 ,0:不是 1:是 + item.put("duePrice",goods.getTotalPrice()); // TODO 菜品成售价 + orderItem.add(item); + }); + + // 支付信息 + ArrayList payInfo = new ArrayList<>(); + JSONObject payItem = new JSONObject(); + payItem.put("paymentSubjectID",Long.valueOf("51010440")); // 科目id + payItem.put("paymentSubjectName","微信小程序实收"); // 科目名称 + payItem.put("dueAmount",orderInfo.getPayPrice()); // TODO 实收金额 + payItem.put("paymentStatus",20); // 支付状态,15:未支付;20:已支付 + payItem.put("payWay",70); // 支付方式,70:商家自定义科目 + payInfo.add(payItem); + + // 用户信息 + JSONObject userInfo = new JSONObject(); + userInfo.put("userName","邓莉莉"); + userInfo.put("userMobile","15878179339"); + userInfo.put("shopMpID","wxa4e2b8bc9c14c743"); + userInfo.put("userSex","0"); // 用户性别, 1:先生 0:女士 2:不显示,不传默认0 女士 + + // 订单信息 + JSONObject order = new JSONObject(); + order.put("orderSubType",20); // 订单类型 20: 外送 + order.put("orderStatus",20); // 订单状态 20:已付款 + order.put("discountTotalAmount","0"); // TODO 优惠金额 + order.put("dinners",1); // 用餐人数 + // 期望送达时间 + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmm"); + order.put("orderTime",sdf1.format(orderInfo.getCreateTime())); + order.put("orderItem",orderItem); // 菜品信息 + order.put("takeoutAddress","南宁市良庆区五象大道401号五象航洋城1号楼1226室"); // TODO 外送地址 + order.put("deliveryAmount","8.00"); // TODO 配送费 + order.put("serviceAmount","0"); // 服务费,必传0 + order.put("channelKey","399_weixin"); // 渠道:微信小程序 + order.put("isAlreadyPaid","1"); // 是/否支付 + order.put("orderMode",1); // 1:先付,2:后付 + order.put("OrderRemark","测试订单(不需要制作及发货)"); // TODO 订单备注 + order.put("payment",payInfo); // 支付信息 + order.put("userInfo",userInfo); // 用户信息 + + HashMap params = new HashMap<>(); + params.put("shopID",Long.valueOf("76220517")); // 店铺ID + params.put("isCheackOut",0); // 0 :默认 不需要收银台数据 1: 需要收银台数据 + params.put("isThirdPay",2); // 只有单纯核销哗啦啦会员卡时传1,其它都传2 + params.put("bankCode","weChat"); // 支付方式,weChat微信 aliPay支付宝,非哗啦啦支付传weChat + params.put("order",order); // 订单信息 + params.put("isSentMsg",1); // 下单后pos是/否显示订单,下单带支付科目信息先付传1,下单不带支付科目信息先付传0,后付传1 + params.put("msgType",120); // 消息类型,240: 堂食、闪吃,120:外送,121:自提 ,与order中orderSubType要对应 + params.put("thirdOrderID",orderInfo.getOrderNo()); // 三方订单号,作用:十分钟内对相同的thirdOrderID进行去重处理,仅开放平台使用做去重处理,不会传到pos及报表 + + // 执行订单推送 +// JSONObject response = hualalaService.doPost("/order/submitordernew", params); +// System.out .println("response = " + response); + + // 同步配送平台 +// JSONObject result = hualalaService.doExpress(orderInfo); + + return success("推送成功",null); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/HualalaFoodCategoryController.java b/src/main/java/com/gxwebsoft/apps/controller/HualalaFoodCategoryController.java new file mode 100644 index 0000000..b65dfc0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/HualalaFoodCategoryController.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.HualalaFoodCategoryService; +import com.gxwebsoft.apps.entity.HualalaFoodCategory; +import com.gxwebsoft.apps.param.HualalaFoodCategoryParam; +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 com.gxwebsoft.common.system.entity.User; +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-01-12 09:49:46 + */ +@Api(tags = "菜品分类管理") +@RestController +@RequestMapping("/api/apps/hualala-food-category") +public class HualalaFoodCategoryController extends BaseController { + @Resource + private HualalaFoodCategoryService hualalaFoodCategoryService; + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:list')") + @OperationLog + @ApiOperation("分页查询菜品分类") + @GetMapping("/page") + public ApiResult> page(HualalaFoodCategoryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaFoodCategoryService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(hualalaFoodCategoryService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:list')") + @OperationLog + @ApiOperation("查询全部菜品分类") + @GetMapping() + public ApiResult> list(HualalaFoodCategoryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaFoodCategoryService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(hualalaFoodCategoryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:list')") + @OperationLog + @ApiOperation("根据id查询菜品分类") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(hualalaFoodCategoryService.getById(id)); + // 使用关联查询 + //return success(hualalaFoodCategoryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:save')") + @OperationLog + @ApiOperation("添加菜品分类") + @PostMapping() + public ApiResult save(@RequestBody HualalaFoodCategory hualalaFoodCategory) { + if (hualalaFoodCategoryService.save(hualalaFoodCategory)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:update')") + @OperationLog + @ApiOperation("修改菜品分类") + @PutMapping() + public ApiResult update(@RequestBody HualalaFoodCategory hualalaFoodCategory) { + if (hualalaFoodCategoryService.updateById(hualalaFoodCategory)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:remove')") + @OperationLog + @ApiOperation("删除菜品分类") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hualalaFoodCategoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:save')") + @OperationLog + @ApiOperation("批量添加菜品分类") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hualalaFoodCategoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:update')") + @OperationLog + @ApiOperation("批量修改菜品分类") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hualalaFoodCategoryService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFoodCategory:remove')") + @OperationLog + @ApiOperation("批量删除菜品分类") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hualalaFoodCategoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/HualalaFoodController.java b/src/main/java/com/gxwebsoft/apps/controller/HualalaFoodController.java new file mode 100644 index 0000000..1283490 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/HualalaFoodController.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.HualalaFoodService; +import com.gxwebsoft.apps.entity.HualalaFood; +import com.gxwebsoft.apps.param.HualalaFoodParam; +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 com.gxwebsoft.common.system.entity.User; +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-01-12 15:34:55 + */ +@Api(tags = "菜品分类管理") +@RestController +@RequestMapping("/api/apps/hualala-food") +public class HualalaFoodController extends BaseController { + @Resource + private HualalaFoodService hualalaFoodService; + + @PreAuthorize("hasAuthority('apps:hualalaFood:list')") + @OperationLog + @ApiOperation("分页查询菜品分类") + @GetMapping("/page") + public ApiResult> page(HualalaFoodParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaFoodService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(hualalaFoodService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaFood:list')") + @OperationLog + @ApiOperation("查询全部菜品分类") + @GetMapping() + public ApiResult> list(HualalaFoodParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaFoodService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(hualalaFoodService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaFood:list')") + @OperationLog + @ApiOperation("根据id查询菜品分类") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(hualalaFoodService.getById(id)); + // 使用关联查询 + //return success(hualalaFoodService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:hualalaFood:save')") + @OperationLog + @ApiOperation("添加菜品分类") + @PostMapping() + public ApiResult save(@RequestBody HualalaFood hualalaFood) { + if (hualalaFoodService.save(hualalaFood)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFood:update')") + @OperationLog + @ApiOperation("修改菜品分类") + @PutMapping() + public ApiResult update(@RequestBody HualalaFood hualalaFood) { + if (hualalaFoodService.updateById(hualalaFood)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFood:remove')") + @OperationLog + @ApiOperation("删除菜品分类") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hualalaFoodService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFood:save')") + @OperationLog + @ApiOperation("批量添加菜品分类") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hualalaFoodService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFood:update')") + @OperationLog + @ApiOperation("批量修改菜品分类") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hualalaFoodService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaFood:remove')") + @OperationLog + @ApiOperation("批量删除菜品分类") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hualalaFoodService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/HualalaShopController.java b/src/main/java/com/gxwebsoft/apps/controller/HualalaShopController.java new file mode 100644 index 0000000..8e44718 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/HualalaShopController.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.HualalaShopService; +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.apps.param.HualalaShopParam; +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 com.gxwebsoft.common.system.entity.User; +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-01-12 18:24:44 + */ +@Api(tags = "哗啦啦门店管理管理") +@RestController +@RequestMapping("/api/apps/hualala-shop") +public class HualalaShopController extends BaseController { + @Resource + private HualalaShopService hualalaShopService; + + @PreAuthorize("hasAuthority('apps:hualalaShop:list')") + @OperationLog + @ApiOperation("分页查询哗啦啦门店管理") + @GetMapping("/page") + public ApiResult> page(HualalaShopParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaShopService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(hualalaShopService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaShop:list')") + @OperationLog + @ApiOperation("查询全部哗啦啦门店管理") + @GetMapping() + public ApiResult> list(HualalaShopParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(hualalaShopService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(hualalaShopService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:hualalaShop:list')") + @OperationLog + @ApiOperation("根据id查询哗啦啦门店管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(hualalaShopService.getById(id)); + // 使用关联查询 + //return success(hualalaShopService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:hualalaShop:save')") + @OperationLog + @ApiOperation("添加哗啦啦门店管理") + @PostMapping() + public ApiResult save(@RequestBody HualalaShop hualalaShop) { + if (hualalaShopService.save(hualalaShop)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaShop:update')") + @OperationLog + @ApiOperation("修改哗啦啦门店管理") + @PutMapping() + public ApiResult update(@RequestBody HualalaShop hualalaShop) { + if (hualalaShopService.updateById(hualalaShop)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaShop:remove')") + @OperationLog + @ApiOperation("删除哗啦啦门店管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (hualalaShopService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaShop:save')") + @OperationLog + @ApiOperation("批量添加哗啦啦门店管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (hualalaShopService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaShop:update')") + @OperationLog + @ApiOperation("批量修改哗啦啦门店管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(hualalaShopService, "shop_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:hualalaShop:remove')") + @OperationLog + @ApiOperation("批量删除哗啦啦门店管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (hualalaShopService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/LinkController.java b/src/main/java/com/gxwebsoft/apps/controller/LinkController.java new file mode 100644 index 0000000..15c42c8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/LinkController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.apps.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.LinkService; +import com.gxwebsoft.apps.entity.Link; +import com.gxwebsoft.apps.param.LinkParam; +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 com.gxwebsoft.common.system.entity.User; +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 12:55:33 + */ +@Api(tags = "常用链接推荐记录表管理") +@RestController +@RequestMapping("/api/apps/link") +public class LinkController extends BaseController { + @Resource + private LinkService linkService; + + @PreAuthorize("hasAuthority('apps:link:list')") + @OperationLog + @ApiOperation("分页查询常用链接推荐记录表") + @GetMapping("/page") + public ApiResult> page(LinkParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + return success(linkService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(linkService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:link:list')") + @OperationLog + @ApiOperation("查询全部常用链接推荐记录表") + @GetMapping() + public ApiResult> list(LinkParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + return success(linkService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(linkService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:link:list')") + @OperationLog + @ApiOperation("根据id查询常用链接推荐记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(linkService.getById(id)); + // 使用关联查询 + //return success(linkService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:link:save')") + @OperationLog + @ApiOperation("添加常用链接推荐记录表") + @PostMapping() + public ApiResult save(@RequestBody Link link) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + link.setUserId(loginUser.getUserId()); + link.setMerchantCode(getMerchantCode()); + } + if (linkService.save(link)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:link:update')") + @OperationLog + @ApiOperation("修改常用链接推荐记录表") + @PutMapping() + public ApiResult update(@RequestBody Link link) { + if (linkService.updateById(link)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:link:remove')") + @OperationLog + @ApiOperation("删除常用链接推荐记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (linkService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:link:save')") + @OperationLog + @ApiOperation("批量添加常用链接推荐记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (linkService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:link:update')") + @OperationLog + @ApiOperation("批量修改常用链接推荐记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(linkService, "link_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:link:remove')") + @OperationLog + @ApiOperation("批量删除常用链接推荐记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (linkService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/controller/SfExpress.java b/src/main/java/com/gxwebsoft/apps/controller/SfExpress.java new file mode 100644 index 0000000..b152ece --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/SfExpress.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.apps.controller; + +import cn.hutool.core.util.RandomUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.val; +import org.apache.commons.codec.binary.Base64; + +import java.security.MessageDigest; +import java.util.Date; + +public class SfExpress { + + //开发者id + private final Long devId= 1651421896L; + //开发者密钥 + private final String devKey="2f10570c5057570fe0e488a425a6d813"; + //正式环境 + private final String serverHost="https://openic.sf-express.com"; + //店铺ID + private final String shopId="3243279847393"; + + + + + public static void main(String[] args) { + try { + SfExpress api = new SfExpress(); + String postData = api.orderOnlineByJson(); + String sign = generateOpenSign(postData,api.devId, api.devKey); + String url = api.serverHost.concat("/open/api/external/createorder?sign=").concat(sign); + String result = HttpUtil.post(url,postData); + System.out.println("result = " + result); + val resultObj = JSON.parseObject(result); + JSONObject resultData = JSON.parseObject(resultObj.getString("result")); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static String generateOpenSign(String postData, Long appId, String appKey) throws Exception { + StringBuilder sb = new StringBuilder(); + sb.append(postData); + sb.append("&" + appId + "&" + appKey); + System.out.println("sb = " + sb); + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] md5 = md.digest(sb.toString().getBytes("utf-8")); + int i; + StringBuffer buf = new StringBuffer(""); + for (int offset = 0; offset < md5.length; offset++) { + i = md5[offset]; + if (i < 0) { + i += 256; + } + if (i < 16) { + buf.append("0"); + } + buf.append(Integer.toHexString(i)); + } + + return Base64.encodeBase64String(buf.toString().getBytes("utf-8")); + } + + //即时查询接口 + public String orderOnlineByJson() throws Exception{ + // 组装应用级参数 + JSONObject json = new JSONObject(); + json.put("dev_id",devId); + json.put("shop_id",shopId); + json.put("shop_order_id", RandomUtil.randomNumbers(16)); + json.put("order_source","1"); + long timestamp = new Date().getTime(); + json.put("order_time",timestamp/1000); + json.put("push_time",timestamp/1000); + json.put("version",19); + JSONObject receive = new JSONObject(); + receive.put("user_name","顺丰同城"); + receive.put("user_phone","18978189563"); + receive.put("user_address","北京市海淀区学清嘉创大厦A座15层"); + receive.put("user_lng","116.354787"); + receive.put("user_lat","40.030613"); + json.put("receive",receive); + JSONObject orderDetail = new JSONObject(); + orderDetail.put("total_price",100); + orderDetail.put("product_type",1); + orderDetail.put("weight_gram",100); + orderDetail.put("product_num",1); + orderDetail.put("product_type_num",1); + json.put("order_detail",orderDetail); + return json.toString(); + } + //中文转Unicode + /** + * @Title: unicodeEncode + * @Description: unicode编码 将中文字符转换成Unicode字符 + * @param string + * @return + */ + public String unicodeEncode(String string) { + char[] utfBytes = string.toCharArray(); + String unicodeBytes = ""; + for (int i = 0; i < utfBytes.length; i++) { + String hexB = Integer.toHexString(utfBytes[i]); + if (hexB.length() <= 2) { + hexB = "00" + hexB; + } + unicodeBytes = unicodeBytes + "\\u" + hexB; + } + return unicodeBytes; + } + +} + diff --git a/src/main/java/com/gxwebsoft/apps/controller/TestDataController.java b/src/main/java/com/gxwebsoft/apps/controller/TestDataController.java new file mode 100644 index 0000000..a51ab70 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/controller/TestDataController.java @@ -0,0 +1,142 @@ +package com.gxwebsoft.apps.controller; + +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.apps.service.TestDataService; +import com.gxwebsoft.apps.entity.TestData; +import com.gxwebsoft.apps.param.TestDataParam; +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 com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +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.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * 测试数据表控制器 + * + * @author 科技小王子 + * @since 2023-02-01 12:13:46 + */ +@Api(tags = "测试数据表管理") +@RestController +@RequestMapping("/api/apps/test-data") +public class TestDataController extends BaseController { + @Resource + private TestDataService testDataService; + + @PreAuthorize("hasAuthority('apps:testData:list')") + @OperationLog + @ApiOperation("分页查询测试数据表") + @GetMapping("/page") + public ApiResult> page(TestDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(testDataService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(testDataService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:testData:list')") + @OperationLog + @ApiOperation("查询全部测试数据表") + @GetMapping() + public ApiResult> list(TestDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(testDataService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(testDataService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:testData:list')") + @OperationLog + @ApiOperation("根据id查询测试数据表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(testDataService.getById(id)); + // 使用关联查询 + //return success(testDataService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:testData:save')") + @OperationLog + @ApiOperation("添加测试数据表") + @PostMapping() + public ApiResult save(@RequestBody TestData testData) { + if (testDataService.save(testData)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:testData:update')") + @OperationLog + @ApiOperation("修改测试数据表") + @PutMapping() + public ApiResult update(@RequestBody TestData testData) { + if (testDataService.updateById(testData)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:testData:remove')") + @OperationLog + @ApiOperation("删除测试数据表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (testDataService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:testData:save')") + @OperationLog + @ApiOperation("批量添加测试数据表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (testDataService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:testData:update')") + @OperationLog + @ApiOperation("批量修改测试数据表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(testDataService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:testData:remove')") + @OperationLog + @ApiOperation("批量删除测试数据表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (testDataService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/BcAgent.java b/src/main/java/com/gxwebsoft/apps/entity/BcAgent.java new file mode 100644 index 0000000..c6058e3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/BcAgent.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 代报餐管理 + * + * @author 科技小王子 + * @since 2023-04-24 19:25:59 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BcAgent对象", description = "代报餐管理") +@TableName("apps_bc_agent") +public class BcAgent implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "agent_id", type = IdType.AUTO) + private Integer agentId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "代报餐用户ID") + private Integer parentId; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "加入时间") + private Date createTime; + + @ApiModelProperty(value = "被代报餐职员") + @TableField(exist = false) + private User user; + + @ApiModelProperty(value = "代报餐人员") + @TableField(exist = false) + private User parentUser; + + @ApiModelProperty(value = "被代报餐职员") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "代报餐人员") + @TableField(exist = false) + private String parentName; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/BcCart.java b/src/main/java/com/gxwebsoft/apps/entity/BcCart.java new file mode 100644 index 0000000..450230a --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/BcCart.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 报餐系统购物车 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "报餐系统购物车", description = "报餐系统购物车") +@Data +public class BcCart implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "预定日期") + @TableField(exist = false) + private String deliveryTime; + + @ApiModelProperty(value = "商品ID") + @TableField(exist = false) + private Integer goodsId; + + @ApiModelProperty(value = "商品价格") + @TableField(exist = false) + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "商品数量") + @TableField(exist = false) + private Integer totalNum; + + @ApiModelProperty(value = "商品名称") + @TableField(exist = false) + private String goodsName; + + @ApiModelProperty(value = "商品描述") + @TableField(exist = false) + private String comments; + + @ApiModelProperty(value = "商品封面图") + @TableField(exist = false) + private String image; + + @ApiModelProperty(value = "商品分类") + @TableField(exist = false) + private Integer categoryId; + + @ApiModelProperty(value = "物品档口") + @TableField(exist = false) + private Integer gear; + + @ApiModelProperty(value = "用户ID") + @TableField(exist = false) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/BcCookbook.java b/src/main/java/com/gxwebsoft/apps/entity/BcCookbook.java new file mode 100644 index 0000000..a9c02ec --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/BcCookbook.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.apps.entity; + +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-05-05 14:56:54 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BcCookbook对象", description = "常用菜谱") +@TableName("apps_bc_cookbook") +public class BcCookbook implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "cookbook_id", type = IdType.AUTO) + private Integer cookbookId; + + @ApiModelProperty(value = "菜品计划") + private Integer planId; + + @ApiModelProperty(value = "餐段 早餐 午餐 晚餐") + private String period; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "发布人") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/BcEquipment.java b/src/main/java/com/gxwebsoft/apps/entity/BcEquipment.java new file mode 100644 index 0000000..d02992d --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/BcEquipment.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.apps.entity; + +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-05-02 10:34:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BcEquipment对象", description = "报餐设备管理") +@TableName("apps_bc_equipment") +public class BcEquipment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "设备ID") + @TableId(value = "bc_equipment_id", type = IdType.AUTO) + private Integer bcEquipmentId; + + @ApiModelProperty(value = "设备名称") + private String equipmentName; + + @ApiModelProperty(value = "设备编码") + private String equipmentCode; + + @ApiModelProperty(value = "所属档口") + private Integer gear; + + @ApiModelProperty(value = "职员工号") + private Integer staffId; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "设备详情") + private String content; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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/apps/entity/BcExport.java b/src/main/java/com/gxwebsoft/apps/entity/BcExport.java new file mode 100644 index 0000000..3504526 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/BcExport.java @@ -0,0 +1,112 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 报餐统计导出 + * + * @author 科技小王子 + * @since 2023-06-01 21:47:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BcExport对象", description = "报餐统计导出") +@TableName("apps_bc_export") +public class BcExport implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "export_id", type = IdType.AUTO) + private Integer exportId; + + @ApiModelProperty(value = "机构名称") + private String organizationName; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "实际消费的金额(不含退款)") + private BigDecimal expendMoney; + + @ApiModelProperty(value = "早餐报餐次数") + private Integer breakfastPost; + + @ApiModelProperty(value = "早餐签到次数") + private Integer breakfastSign; + + @ApiModelProperty(value = "午餐报餐次数") + private Integer lunchPost; + + @ApiModelProperty(value = "午餐签到次数") + private Integer lunchSign; + + @ApiModelProperty(value = "晚餐报餐次数") + private Integer dinnerPost; + + @ApiModelProperty(value = "晚餐签到次数") + private Integer dinnerSign; + + @ApiModelProperty(value = "食堂档口") + private Integer gear10; + + @ApiModelProperty(value = "物品档口") + private Integer gear20; + + @ApiModelProperty(value = "食堂档口") + private Integer signGear10; + + @ApiModelProperty(value = "物品档口") + private Integer signGear20; + + @ApiModelProperty(value = "商品价格(单价)") + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "午餐报餐次数") + private String lunchPostText; + + @ApiModelProperty(value = "午餐报餐次数") + private String lunchSignText; + + @ApiModelProperty(value = "发货时间") + private Date deliveryTime; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "订单号") + private Integer orderId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "发布人") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/BcFood.java b/src/main/java/com/gxwebsoft/apps/entity/BcFood.java new file mode 100644 index 0000000..b33f9e2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/BcFood.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 发布菜品明细 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BcFood对象", description = "发布菜品明细") +@TableName("apps_bc_food") +public class BcFood implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "bc_food_id", type = IdType.AUTO) + private Integer bcFoodId; + + @ApiModelProperty(value = "菜品计划") + private Integer planId; + + @ApiModelProperty(value = "餐段 早餐 午餐 晚餐") + private String period; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "发布人") + private Integer userId; + + @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 String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/BcPlan.java b/src/main/java/com/gxwebsoft/apps/entity/BcPlan.java new file mode 100644 index 0000000..7c6d4e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/BcPlan.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.gxwebsoft.shop.entity.Goods; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 菜品发布管理 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BcPlan对象", description = "菜品发布管理") +@TableName("apps_bc_plan") +public class BcPlan implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "bc_plan_id", type = IdType.AUTO) + private Integer bcPlanId; + + @ApiModelProperty(value = "发布日期") + private Date dayTime; + + @ApiModelProperty(value = "0星期日 1星期一 2星期二 3星期三 4星期四 5星期五 6星期六") + private Integer week; + + @ApiModelProperty(value = "发布类型") + private String type; + + @ApiModelProperty(value = "餐段") + private String period; + + @ApiModelProperty(value = "多天菜品是否重复") + private Integer isRepeat; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "菜品ID") + private String goodsIds; + + @ApiModelProperty(value = "商品列表") + @TableField(exist = false) + private List goodsList; + + @ApiModelProperty(value = "发布人") + private Integer userId; + + @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 String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/BcTemporary.java b/src/main/java/com/gxwebsoft/apps/entity/BcTemporary.java new file mode 100644 index 0000000..5baddb5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/BcTemporary.java @@ -0,0 +1,80 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Value; + +/** + * 临时报餐管理 + * + * @author 科技小王子 + * @since 2023-04-24 21:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "BcTemporary对象", description = "临时报餐管理") +@TableName("apps_bc_temporary") +public class BcTemporary implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "temporary_id", type = IdType.AUTO) + private Integer temporaryId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "工单ID") + private Integer parentId; + + @ApiModelProperty(value = "申请状态") + private Integer applyStatus; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "加入时间") + private Date createTime; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "报餐日期") + private Date dayTime; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "失效时间") + private Date expirationTime; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "代报餐人员") + @TableField(exist = false) + private String dealerName; + + @ApiModelProperty(value = "被代报餐职员") + @TableField(exist = false) + private User user; + + @ApiModelProperty(value = "代报餐人员") + @TableField(exist = false) + private User parentUser; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/Cashier.java b/src/main/java/com/gxwebsoft/apps/entity/Cashier.java new file mode 100644 index 0000000..838bbbc --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/Cashier.java @@ -0,0 +1,95 @@ +package com.gxwebsoft.apps.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 WebSoft + * @since 2022-11-18 11:47:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Cashier对象", description = "海牛收银台记录表") +@TableName("apps_cashier") +public class Cashier implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "cashier_id", type = IdType.AUTO) + private Integer cashierId; + + @ApiModelProperty(value = "客户ID") + private String buyerId; + + @ApiModelProperty(value = "设备ID") + private String merchantCode; + + @ApiModelProperty(value = "支付标识") + private String code; + + @ApiModelProperty(value = "返回消息") + private String msg; + + @ApiModelProperty(value = "客户端交易订单编号") + private String outTradeNo; + + @ApiModelProperty(value = "数量") + private String amount; + + @ApiModelProperty(value = "支付时间") + private String payTime; + + @ApiModelProperty(value = "支付方式") + private String payType; + + @ApiModelProperty(value = "交易金额") + private BigDecimal totalAmount; + + @ApiModelProperty(value = "实收金额") + private BigDecimal receiptAmount; + + @ApiModelProperty(value = "第三方交易手续费") + private BigDecimal feeAmount; + + @ApiModelProperty(value = "第三方结算金额") + private BigDecimal settleAmount; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "手机号码") + private String mobile; + + @ApiModelProperty(value = "订单备注") + private String orderRemark; + + @ApiModelProperty(value = "订单状态") + private String orderStatus; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/Equipment.java b/src/main/java/com/gxwebsoft/apps/entity/Equipment.java new file mode 100644 index 0000000..f91fd16 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/Equipment.java @@ -0,0 +1,148 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 设备管理 + * + * @author 科技小王子 + * @since 2022-11-30 02:11:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Equipment对象", description = "设备管理") +@TableName("apps_equipment") +public class Equipment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "设备ID") + @TableId(value = "equipment_id", type = IdType.AUTO) + private Integer equipmentId; + + @ApiModelProperty(value = "设备名称") + private String equipmentName; + + @ApiModelProperty(value = "设备编码") + private String equipmentCode; + + @ApiModelProperty("设备分类") + private String equipmentCategory; + + @ApiModelProperty(value = "分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "头像") + private String equipmentAvatar; + + @ApiModelProperty(value = "电池型号") + private String batteryModel; + + @ApiModelProperty(value = "BMS") + private String bms; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "是否激活") + private String isCtive; + + @ApiModelProperty(value = "工作状态") + private String workingStatus; + + @ApiModelProperty(value = "租赁状态") + private String leaseStatus; + + @ApiModelProperty(value = "电池状态") + private String batteryStatus; + + @ApiModelProperty(value = "电池电量") + private String batteryPower; + + @ApiModelProperty(value = "是否在线") + private String isOnline; + + @ApiModelProperty(value = "总电压") + private String totalVoltage; + + @ApiModelProperty(value = "BMS板供应商") + private String bmsBrand; + + @ApiModelProperty(value = "剩余容量") + private String surplusCapacity; + + @ApiModelProperty(value = "ICCID") + private String iccid; + + @ApiModelProperty(value = "设备激活时间") + private Date ctiveTime; + + @ApiModelProperty(value = "电池出厂时间") + private Date batteryDeliveryTime; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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; + + @ApiModelProperty(value = "所属商户ID") + @TableField(exist = false) + private Integer merchantId; + + @ApiModelProperty(value = "所属商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "电池租金") + private BigDecimal batteryRent; + + @ApiModelProperty(value = "电池押金") + private BigDecimal batteryDeposit; + + @ApiModelProperty(value = "电池保险") + private BigDecimal batteryInsurance; + + @ApiModelProperty(value = "设备价格") + private BigDecimal batteryPrice; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "绑定的用户") + @TableField(exist = false) + private User user; +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/EquipmentAlarm.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentAlarm.java new file mode 100644 index 0000000..e23c581 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentAlarm.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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 2022-12-01 23:49:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "EquipmentAlarm对象", description = "故障报警记录") +@TableName("apps_equipment_alarm") +public class EquipmentAlarm implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "记录ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "设备编码") + private String equipmentCode; + + @ApiModelProperty(value = "报警类型") + private String alarmType; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "处理时间") + private Date handleTime; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @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; + + @ApiModelProperty(value = "所属商户名称") + @TableField(exist = false) + private String merchantName; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/EquipmentFault.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentFault.java new file mode 100644 index 0000000..8fdc596 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentFault.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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 2022-12-01 18:40:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "EquipmentFault对象", description = "故障电池") +@TableName("apps_equipment_fault") +public class EquipmentFault implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "记录ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "设备编号") + private String equipmentCode; + + @ApiModelProperty(value = "故障原因") + private String faultType; + + @ApiModelProperty(value = "上传图片") + private String image; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "处理时间") + private Date handleTime; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @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; + + @ApiModelProperty(value = "所属商户名称") + @TableField(exist = false) + private String merchantName; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/EquipmentGoods.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentGoods.java new file mode 100644 index 0000000..c65c4eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentGoods.java @@ -0,0 +1,120 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 电池管理记录表 + * + * @author 科技小王子 + * @since 2023-02-28 22:40:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "EquipmentGoods对象", description = "电池管理记录表") +@TableName("apps_equipment_goods") +public class EquipmentGoods implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品ID") + @TableId(value = "goods_id", type = IdType.AUTO) + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "下单类型") + private String equipmentCategory; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "电池型号") + private String batteryModel; + + @ApiModelProperty(value = "库存总量") + private Integer stockTotal; + + @ApiModelProperty(value = "商品卖点") + private String sellingPoint; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "电池租金") + private BigDecimal batteryRent; + + @ApiModelProperty(value = "电池价格") + private BigDecimal batteryPrice; + + @ApiModelProperty(value = "电池押金") + private BigDecimal batteryDeposit; + + @ApiModelProperty(value = "电池保险") + private BigDecimal batteryInsurance; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "首付款") + private BigDecimal downPayment; + + @ApiModelProperty(value = "分期期数") + private BigDecimal periods; + + @ApiModelProperty(value = "每期还款") + private BigDecimal repayment; + + @ApiModelProperty(value = "手续费") + private BigDecimal serviceCharges; + + @ApiModelProperty(value = "分期方式") + private Integer periodsType; + + @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; + + @ApiModelProperty(value = "商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty(value = "订单ID") + @TableField(exist = false) + private Integer orderId; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrder.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrder.java new file mode 100644 index 0000000..476e4ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrder.java @@ -0,0 +1,202 @@ +package com.gxwebsoft.apps.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +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-04-14 21:24:31 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "EquipmentOrder对象", description = "订单记录表") +@TableName("apps_equipment_order") +public class EquipmentOrder implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单ID") + @TableId(value = "order_id", type = IdType.AUTO) + private Integer orderId; + + @ApiModelProperty(value = "订单标题") + private String subject; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "商品总金额(不含优惠折扣)") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "订单金额(含优惠折扣)") + private BigDecimal orderPrice; + + @ApiModelProperty(value = "优惠券ID") + private Integer couponId; + + @ApiModelProperty(value = "优惠券抵扣金额") + private BigDecimal couponMoney; + + @ApiModelProperty(value = "积分抵扣金额") + private BigDecimal pointsMoney; + + @ApiModelProperty(value = "积分抵扣数量") + private Integer pointsNum; + + @ApiModelProperty(value = "实际付款金额(包含运费)") + private BigDecimal payPrice; + + @ApiModelProperty(value = "第三方支付实收金额") + private BigDecimal receiptAmount; + + @ApiModelProperty(value = "后台修改的订单金额(差价)") + private BigDecimal updatePrice; + + @ApiModelProperty(value = "买家留言") + private String buyerRemark; + + @ApiModelProperty(value = "支付方式(废弃)") + private Integer payType; + + @ApiModelProperty(value = "支付方式(余额10/微信20/支付宝30/通联支付40/其他支付50)") + private String payMethod; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + private Integer payStatus; + + @ApiModelProperty(value = "付款时间") + private Date payTime; + + @ApiModelProperty(value = "第三方交易记录ID") + private String tradeId; + + @ApiModelProperty(value = "配送方式(10快递配送 20门店自提)") + private Integer deliveryType; + + @ApiModelProperty(value = "自提门店ID") + private Integer extractShopId; + + @ApiModelProperty(value = "核销店员ID") + private Integer extractClerkId; + + @ApiModelProperty(value = "运费金额") + private BigDecimal expressPrice; + + @ApiModelProperty(value = "物流公司ID (废弃)") + private Integer expressId; + + @ApiModelProperty(value = "物流单号 (废弃)") + private String expressNo; + + @ApiModelProperty(value = "发货状态(10未发货 20已发货 30部分发货)") + private Integer deliveryStatus; + + @ApiModelProperty(value = "发货时间") + private Date deliveryTime; + + @ApiModelProperty(value = "收货状态(10未收货 20已收货)") + private Integer receiptStatus; + + @ApiModelProperty(value = "收货时间") + private Date receiptTime; + + @ApiModelProperty(value = "订单状态(10进行中 20取消 21待取消 30已完成)") + private Integer orderStatus; + + @ApiModelProperty(value = "赠送的积分数量") + private Integer pointsBonus; + + @ApiModelProperty(value = "商家备注") + private String merchantRemark; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + private Integer isSettled; + + @ApiModelProperty(value = "续租订单的关联单号") + private Integer rentOrderId; + + @ApiModelProperty(value = "微信支付交易号(废弃)") + private String transactionId; + + @ApiModelProperty(value = "是否已评价(0否 1是)") + private Integer isComment; + + @ApiModelProperty(value = "订单来源(10普通订单 20砍价订单 30秒杀订单)") + private Integer orderSource; + + @ApiModelProperty(value = "来源记录ID") + private Integer orderSourceId; + + @ApiModelProperty(value = "来源记录的参数 (json格式)") + private String orderSourceData; + + @ApiModelProperty(value = "电池租金") + private BigDecimal batteryRent; + + @ApiModelProperty(value = "电池押金") + private BigDecimal batteryDeposit; + + @ApiModelProperty(value = "保险") + private BigDecimal batteryInsurance; + + @ApiModelProperty(value = "购买月份数量") + private Integer month; + + @ApiModelProperty(value = "服务到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "是否续费订单") + private Integer isRenew; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "电池商品ID") + private Integer equipmentId; + + @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/apps/entity/EquipmentOrderGoods.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrderGoods.java new file mode 100644 index 0000000..51f5889 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentOrderGoods.java @@ -0,0 +1,119 @@ +package com.gxwebsoft.apps.entity; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableId; +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-05-11 19:10:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "EquipmentOrderGoods对象", description = "电池管理记录表") +@TableName("apps_equipment_order_goods") +public class EquipmentOrderGoods implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品ID") + @TableId(value = "order_goods_id", type = IdType.AUTO) + private Integer orderGoodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "下单类型") + private String equipmentCategory; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "电池型号") + private String batteryModel; + + @ApiModelProperty(value = "商品卖点") + private String sellingPoint; + + @ApiModelProperty(value = "库存总量") + private Integer stockTotal; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "电池租金") + private BigDecimal batteryRent; + + @ApiModelProperty(value = "电池价格") + private BigDecimal batteryPrice; + + @ApiModelProperty(value = "电池押金") + private BigDecimal batteryDeposit; + + @ApiModelProperty(value = "电池保险") + private BigDecimal batteryInsurance; + + @ApiModelProperty(value = "首付款") + private BigDecimal downPayment; + + @ApiModelProperty(value = "分期期数") + private BigDecimal periods; + + @ApiModelProperty(value = "分期还款") + private BigDecimal repayment; + + @ApiModelProperty(value = "手续费") + private BigDecimal serviceCharges; + + @ApiModelProperty(value = "分期方式 10按周 20按月") + private Integer periodsType; + + @ApiModelProperty(value = "订单编号") + private Integer orderId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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/apps/entity/EquipmentRecord.java b/src/main/java/com/gxwebsoft/apps/entity/EquipmentRecord.java new file mode 100644 index 0000000..688db34 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/EquipmentRecord.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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 2022-12-03 01:23:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "EquipmentRecord对象", description = "前世今生") +@TableName("apps_equipment_record") +public class EquipmentRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "记录ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "设备编码") + private String equipmentCode; + + @ApiModelProperty(value = "事件类型") + private String eventType; + + @ApiModelProperty(value = "请求参数") + private String params; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @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; + + @ApiModelProperty(value = "所属商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/Hualala.java b/src/main/java/com/gxwebsoft/apps/entity/Hualala.java new file mode 100644 index 0000000..7d96aa7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/Hualala.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 常用链接推荐记录表 + * + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Link对象", description = "常用链接推荐记录表") +@TableName("apps_hualala") +public class Hualala implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "当前请求的时间戳(毫秒)") + @TableField(exist = false) + private Long timestamp; + + @ApiModelProperty(value = "服务器接口") + @TableField(exist = false) + private String apiUrl = "https://www-openapi.hualala.com"; + + @ApiModelProperty(value = "开发者Key") + @TableField(exist = false) + private String appKey = "2487"; + + @ApiModelProperty(value = "appSecret") + @TableField(exist = false) + private String appSecret = "Hgr520dQpEiFe0FV"; + + @ApiModelProperty(value = "集团ID") + @TableField(exist = false) + private String groupID = "1528"; + + @ApiModelProperty(value = "店铺ID") + @TableField(exist = false) + private String shopID = "76288809"; + + @ApiModelProperty(value = "签名") + @TableField(exist = false) + private String signature; + + @ApiModelProperty(value = "版本号,固定传 3") + @TableField(exist = false) + private Integer version = 3; + + @ApiModelProperty(value = "业务参数 格式为jsonString") + @TableField(exist = false) + private String requestBody; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/HualalaCard.java b/src/main/java/com/gxwebsoft/apps/entity/HualalaCard.java new file mode 100644 index 0000000..c48e776 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/HualalaCard.java @@ -0,0 +1,131 @@ +package com.gxwebsoft.apps.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-01-08 12:22:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HualalaCard对象", description = "") +@TableName("apps_hualala_card") +public class HualalaCard implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "groupID") + private String groupId; + + @ApiModelProperty(value = "shopID") + private String shopId; + + @ApiModelProperty(value = "网速会员id") + private Integer userId; + + @ApiModelProperty(value = "会员卡ID") + private String cardId; + + private String cardTypeId; + + @ApiModelProperty(value = "会员卡等级ID") + private String cardLevelId; + + @ApiModelProperty(value = "会员卡等级名称") + private String cardLevelName; + + @ApiModelProperty(value = "卡状态 10:正常 20:挂失中 30:冻结 40:注销(作废)50:已过期") + private String cardStatus; + + private String customerId; + + @ApiModelProperty(value = "会员卡入会店铺字段") + private String createShopId; + + @ApiModelProperty(value = "入会店铺名称") + private String createShopName; + + @ApiModelProperty(value = "卡号") + private String cardNo; + + @ApiModelProperty(value = "姓名") + private String customerName; + + @ApiModelProperty(value = " 手机号") + private String customerMobile; + + @ApiModelProperty(value = "性别 0:女 1:男 2:未知") + private Integer customerSex; + + @ApiModelProperty(value = "生日") + private String customerBirthday; + + @ApiModelProperty(value = "卡余额") + private BigDecimal cardBalance; + + @ApiModelProperty(value = "积分余额") + private BigDecimal pointBalance; + + @ApiModelProperty(value = "累计储值金额") + private BigDecimal saveMoneyTotal; + + @ApiModelProperty(value = "累计消费金额") + private BigDecimal consumptionTotal; + + @ApiModelProperty(value = "累计消费次数") + private Integer consumptionCount; + + @ApiModelProperty(value = "当前等级积分") + private Integer grade; + + @ApiModelProperty(value = "下一等级积分") + private Integer nextLevelGrade; + + @ApiModelProperty(value = "有效期至(yyyyMMddHHmmss) 0:表示永久有效") + private String expireTime; + + @ApiModelProperty(value = "最后一次交易时间") + private String lastTransTime; + + @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/apps/entity/HualalaCardBenefits.java b/src/main/java/com/gxwebsoft/apps/entity/HualalaCardBenefits.java new file mode 100644 index 0000000..e0c0708 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/HualalaCardBenefits.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.apps.entity; + +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-01-08 12:22:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HualalaCardBenefits对象", description = "会员权益") +@TableName("apps_hualala_card_benefits") +public class HualalaCardBenefits implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "会员等级名称") + private String cardLevelName; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "内容") + private String content; + + @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/apps/entity/HualalaCart.java b/src/main/java/com/gxwebsoft/apps/entity/HualalaCart.java new file mode 100644 index 0000000..85730e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/HualalaCart.java @@ -0,0 +1,16 @@ +package com.gxwebsoft.apps.entity; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 购物车 + */ +@Data +public class HualalaCart { + List items;// 商品列表 + BigDecimal totalPrice; // 总结 + int totalNum; // 总数 +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/HualalaCartFood.java b/src/main/java/com/gxwebsoft/apps/entity/HualalaCartFood.java new file mode 100644 index 0000000..560dbc4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/HualalaCartFood.java @@ -0,0 +1,78 @@ +package com.gxwebsoft.apps.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +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-01-14 14:46:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HualalaCartFood对象", description = "购物车商品") +@TableName("apps_hualala_cart_food") +public class HualalaCartFood implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "总数量") + private Integer foodId; + + @ApiModelProperty(value = "菜品名称") + private String foodName; + + @ApiModelProperty(value = "skuId") + private String skuId; + + @ApiModelProperty(value = "店铺id") + private Integer shopId; + + @ApiModelProperty(value = "店铺名称") + private String shopName; + + @ApiModelProperty(value = "店铺标志") + private String shopLogo; + + @ApiModelProperty(value = "商品图") + private String coverUrl; + + @ApiModelProperty(value = "已放入购物车数量") + @TableField(exist = false) + private Long num; + + @ApiModelProperty(value = "售价") + private BigDecimal sellPrice; + + @ApiModelProperty(value = "库存") + private Integer stock; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/HualalaFood.java b/src/main/java/com/gxwebsoft/apps/entity/HualalaFood.java new file mode 100644 index 0000000..76b1196 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/HualalaFood.java @@ -0,0 +1,300 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 菜品分类 + * + * @author 科技小王子 + * @since 2023-01-12 15:34:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HualalaFood对象", description = "菜品分类") +@TableName("apps_hualala_food") +public class HualalaFood implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "菜品ID") + private String foodId; + + @ApiModelProperty(value = "菜品Key") + private String foodKey; + + @ApiModelProperty(value = "集团ID") + private String groupId; + + @ApiModelProperty(value = "店铺ID") + private String shopId; + + @ApiModelProperty(value = "菜品条目数") + private String foodCount; + + @ApiModelProperty(value = "加入购物车数量") + @TableField(exist = false) + private Integer cartNum; + + @ApiModelProperty(value = "售价") + @TableField(exist = false) + private BigDecimal sellPrice; + + @ApiModelProperty("子菜单") + @TableField(exist = false) + private List children; +// +// @ApiModelProperty(value = "pos菜品分类ID") +// private String foodCategoryId; +// +// @ApiModelProperty(value = "pos菜品分类Key") +// private String foodCategoryKey; +// +// @ApiModelProperty(value = "pos菜品分类名称") +// private String foodCategoryName; + + @ApiModelProperty(value = "线上菜品分类ID") + private String foodOnlineCategoryId; + + @ApiModelProperty(value = "线上菜品分类Key") + private String foodOnlineCategoryKey; + + @ApiModelProperty(value = "线上菜品分类名称") + private String foodOnlineCategoryName; + + @ApiModelProperty(value = "是/否是配料,false:不是 true:是") + private Integer isBatching; + + @ApiModelProperty(value = "是/否可单独销售 0:不单独销售(默认) 1:可单独销售") + private Integer isSingleSale; + + @ApiModelProperty(value = "此菜品关联的收入科目key,例如冷菜收入、热菜收入、酒水收入") + private String foodSubjectKey; + + @ApiModelProperty(value = "对应出品部门Key列表") + private String departmentKeyLst; + + @ApiModelProperty(value = "配菜的分类key,在这里选择配菜") + private String batchingFoodCategoryKey; + + @ApiModelProperty(value = "菜品名称") + private String foodName; + + @ApiModelProperty(value = "菜品编号 可用于与三方菜品数据做映射") + private String foodCode; + + @ApiModelProperty(value = "菜品别名") + private String foodAliasName; + + @ApiModelProperty(value = "菜品注记码") + private String foodMnemonicCode; + + @ApiModelProperty(value = "配菜的分类key,在这里选择配菜") + private Integer isDiscount; + + @ApiModelProperty(value = "规格") + private Object units; + + @ApiModelProperty(value = "起售") + private String minOrderCount; + + @ApiModelProperty(value = "分类编号") + private String foodCategoryCode; + + @ApiModelProperty(value = "分类英文名") + private String foodCategoryEnName; + + @ApiModelProperty(value = "分类分组名称") + private String foodCategoryGroupName; + + @ApiModelProperty(value = "0:堂食 1:堂食,外送,自提 2:外送,自提 3:自提 4:外送 5:堂食,自提 6:堂食,外送") + private String takeawayTag; + + @ApiModelProperty(value = "菜品图片") + private String imgePath; + + @ApiModelProperty(value = "结算系数") + private String settlementProportion; + + @ApiModelProperty(value = "分类显示排序值") + private Integer sortIndex; + + @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; + +// private Integer isComments; +// +// private Integer isActive; +// +// private Integer isOpen; +// +// private Integer isSetFood; +// +// private Object setFoodDetailJson; +// +// private Integer isTempFood; +// +// private String py; +// +// +// private String tasteList; +// +// private Object tasteGroupList; +// +// private Object makingMethodList; +// +// private Object makingMethodGroupList; +// +// private Integer isSpecialty; +// +// private Integer isRecommend; +// +// private Integer isNews; +// +// private String hotTag; +// +// private String salesCount; +// +// private Integer isNeedConfirmFoodNumber; +// +// private String takeoutPackagingFee; +// +// private String incrementUnit; + +// private Integer isHasImage; +// +// private String imageHwp; +// +// private String starLevel; +// +// private String foodTagIds; +// + private String parentFoodId; +// +// private String foodEnName; +// +// private Integer isAutoAdd; +// +// private Integer isCanRefund; +// +// private Integer setPerson; +// +// private Integer tasteIsRequired; +// +// private Integer tasteIsMultiple; +// +// private Integer makingMethodIsRequired; +// +// private Integer makingMethodIsMultiple; +// +// private String initClickAmount; +// +// private String actualClickAmount; +// +// private String recentClickAmount; +// +// private String clickAlertMess; +// +// private String sourceFoodId; +// +// private String salesCommission; +// +// private String foodKeyElementLst; +// +// private String foodSortIndex; +// +// private String actionTime; +// +// private String foodSubjectName; +// +// private String foodSubjectCode; +// +// private String departmentId; +// +// private String departmentKey; +// +// private String popularity; +// +// private String detailSplit; +// +// private String batchingIsFoodNumberRate; + +// @ApiModelProperty(value = "特价") +// private String specialPrice; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice2; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice3; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice4; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice5; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice6; +// +// @ApiModelProperty(value = "特价2") +// private String onlineWmPrice; +// +// @ApiModelProperty(value = "标签ids") +// private String tagIds; +// +// @ApiModelProperty(value = "标签名称") +// private String tagNames; +// +// @ApiModelProperty(value = "礼品券ID") +// private String giftItemId; +// +// @ApiModelProperty(value = "礼品券有效期") +// private String giftValidPeriod; +// +// @ApiModelProperty(value = "菜品分类说明") +// private String description; +// +// @ApiModelProperty(value = "记录状态") +// private String action; + +// @ApiModelProperty(value = "封面图") +// private String image; +// +// @ApiModelProperty(value = "内容") +// private String content; +// +// @ApiModelProperty(value = "排序(数字越小越靠前)") +// private Integer sortNumber; +// +// @ApiModelProperty(value = "备注") +// private String comments; + +// private String workingLunchTag; +// +// private String adsId; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/HualalaFoodCategory.java b/src/main/java/com/gxwebsoft/apps/entity/HualalaFoodCategory.java new file mode 100644 index 0000000..3175e6d --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/HualalaFoodCategory.java @@ -0,0 +1,111 @@ +package com.gxwebsoft.apps.entity; + +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-01-12 09:49:46 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HualalaFoodCategory对象", description = "菜品分类") +@TableName("apps_hualala_food_category") +public class HualalaFoodCategory implements Serializable { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "是/否配料分类 0:不是(默认) 1:是") + private Integer type; + + @ApiModelProperty(value = "名称") + private String foodCategoryName; + + @ApiModelProperty(value = "收入名称") + private String foodSubjectName; + + @ApiModelProperty(value = "菜品Key") + private String foodKey; + + @ApiModelProperty(value = "菜品条目数") + private String foodCount; + + @ApiModelProperty(value = "分类ID") + private String foodCategoryId; + + @ApiModelProperty(value = "分类ID") + private String foodCategoryGroupName; + + @ApiModelProperty(value = "分类Key") + private String foodCategoryKey; + + @ApiModelProperty(value = "记录状态") + private String action; + + @ApiModelProperty(value = "结算系数") + private String settlementProportion; + + @ApiModelProperty(value = "是否启用") + private Integer isActive; + + @ApiModelProperty(value = "是/否配料分类 0:不是(默认) 1:是") + private Integer isBatching; + + @ApiModelProperty(value = "是/否可单独销售 0:不单独销售(默认) 1:可单独销售") + private Integer isSingleSale; + + @ApiModelProperty(value = "分类显示排序值") + private Integer sortIndex; + + @ApiModelProperty(value = "介绍页id") + private Integer adsId; + + @ApiModelProperty(value = "店铺ID") + private String shopId; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "内容") + private String content; + + @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/apps/entity/HualalaShop.java b/src/main/java/com/gxwebsoft/apps/entity/HualalaShop.java new file mode 100644 index 0000000..f6c01b7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/HualalaShop.java @@ -0,0 +1,117 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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-01-12 18:24:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "HualalaShop对象", description = "哗啦啦门店管理") +@TableName("apps_hualala_shop") +public class HualalaShop implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "店铺ID") + private Long shopId; + + @ApiModelProperty(value = "店铺名称") + private String shopName; + + @ApiModelProperty(value = "店铺logo") + private String logoUrl; + + @ApiModelProperty(value = "所在城市ID") + private String shopCity; + + @ApiModelProperty(value = "所在城市") + private String shopCityName; + + @ApiModelProperty(value = "营业时间") + private String shopOpenTime; + + @ApiModelProperty(value = "店内电话") + private String shopPhone; + + @ApiModelProperty(value = "HLL") + private String acspType; + + @ApiModelProperty(value = "1") + private String action; + + @ApiModelProperty(value = "20230111104803") + private String actionTime; + + @ApiModelProperty(value = "品牌ID") + private String brandId; + + @ApiModelProperty(value = "品牌名称") + private String brandName; + + @ApiModelProperty(value = "1") + private String businessModel; + + @ApiModelProperty(value = "图片") + private String imagePath; + + @ApiModelProperty(value = "22.7913010") + private Double mapLatitudeValueBaiDu; + + @ApiModelProperty(value = "108.3312800") + private Double mapLongitudeValueBaiDu; + + @ApiModelProperty(value = "0") + private Integer operationMode; + + @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 payMerchantNo; + + @ApiModelProperty(value = "小通云缴秘钥") + private String paySecret; + + @ApiModelProperty(value = "客户ID") + private Integer customerId; + + @ApiModelProperty(value = "距离") + @TableField(exist = false) + private Double distance; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/ItemVo.java b/src/main/java/com/gxwebsoft/apps/entity/ItemVo.java new file mode 100644 index 0000000..60b37f6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/ItemVo.java @@ -0,0 +1,20 @@ +package com.gxwebsoft.apps.entity; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 操作购物车信息 + */ +@Data +public class ItemVo { + private String userId; // 用户ID + private String shopId; // 店铺ID + private Integer foodId; // 菜品ID + private Integer num; // 数量 + private BigDecimal price; // 售价 + private String imge; // 菜品图片 + private String foodName; // 菜品名称 + private String foodUnitID; // 规格ID +} diff --git a/src/main/java/com/gxwebsoft/apps/entity/Link.java b/src/main/java/com/gxwebsoft/apps/entity/Link.java new file mode 100644 index 0000000..006b829 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/Link.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.apps.entity; + +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 2022-11-25 12:55:33 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Link对象", description = "常用链接推荐记录表") +@TableName("apps_link") +public class Link implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "链接ID") + @TableId(value = "link_id", type = IdType.AUTO) + private Integer linkId; + + @ApiModelProperty(value = "链接名称") + private String linkName; + + @ApiModelProperty(value = "链接图标") + private String linkIcon; + + @ApiModelProperty(value = "路由地址") + private String linkPath; + + @ApiModelProperty(value = "组件路径") + private String linkComponent; + + @ApiModelProperty(value = "链接类型") + private String type; + + @ApiModelProperty(value = "点击次数") + private Integer clicks; + + @ApiModelProperty(value = "推荐理由") + private String comments; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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/apps/entity/TestData.java b/src/main/java/com/gxwebsoft/apps/entity/TestData.java new file mode 100644 index 0000000..232e598 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/entity/TestData.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +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-02-01 12:13:46 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TestData对象", description = "测试数据表") +@TableName("apps_test_data") +public class TestData implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/BcAgentMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/BcAgentMapper.java new file mode 100644 index 0000000..cbb956a --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/BcAgentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.BcAgent; +import com.gxwebsoft.apps.param.BcAgentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 代报餐管理Mapper + * + * @author 科技小王子 + * @since 2023-04-24 19:25:59 + */ +public interface BcAgentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BcAgentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BcAgentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/BcCookbookMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/BcCookbookMapper.java new file mode 100644 index 0000000..06c057f --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/BcCookbookMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.BcCookbook; +import com.gxwebsoft.apps.param.BcCookbookParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 常用菜谱Mapper + * + * @author 科技小王子 + * @since 2023-05-05 14:56:54 + */ +public interface BcCookbookMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BcCookbookParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BcCookbookParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/BcEquipmentMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/BcEquipmentMapper.java new file mode 100644 index 0000000..4a9b7b1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/BcEquipmentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.BcEquipment; +import com.gxwebsoft.apps.param.BcEquipmentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 报餐设备管理Mapper + * + * @author 科技小王子 + * @since 2023-05-02 10:34:40 + */ +public interface BcEquipmentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BcEquipmentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BcEquipmentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/BcExportMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/BcExportMapper.java new file mode 100644 index 0000000..75345d9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/BcExportMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.BcExport; +import com.gxwebsoft.apps.param.BcExportParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 报餐统计导出Mapper + * + * @author 科技小王子 + * @since 2023-06-01 21:47:02 + */ +public interface BcExportMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BcExportParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BcExportParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/BcFoodMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/BcFoodMapper.java new file mode 100644 index 0000000..957d632 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/BcFoodMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.BcFood; +import com.gxwebsoft.apps.param.BcFoodParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 发布菜品明细Mapper + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +public interface BcFoodMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BcFoodParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BcFoodParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/BcPlanMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/BcPlanMapper.java new file mode 100644 index 0000000..bc93d98 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/BcPlanMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.BcPlan; +import com.gxwebsoft.apps.param.BcPlanParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 菜品发布管理Mapper + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +public interface BcPlanMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BcPlanParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BcPlanParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/BcTemporaryMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/BcTemporaryMapper.java new file mode 100644 index 0000000..22cebef --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/BcTemporaryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.BcTemporary; +import com.gxwebsoft.apps.param.BcTemporaryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 临时报餐管理Mapper + * + * @author 科技小王子 + * @since 2023-04-24 21:47:57 + */ +public interface BcTemporaryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") BcTemporaryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") BcTemporaryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/CashierMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/CashierMapper.java new file mode 100644 index 0000000..7e5585e --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/CashierMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.Cashier; +import com.gxwebsoft.apps.param.CashierParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 海牛收银台记录表Mapper + * + * @author WebSoft + * @since 2022-11-18 11:47:09 + */ +public interface CashierMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CashierParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CashierParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/EquipmentAlarmMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentAlarmMapper.java new file mode 100644 index 0000000..9131be8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentAlarmMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.EquipmentAlarm; +import com.gxwebsoft.apps.param.EquipmentAlarmParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 故障报警记录Mapper + * + * @author 科技小王子 + * @since 2022-12-01 23:49:44 + */ +public interface EquipmentAlarmMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") EquipmentAlarmParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") EquipmentAlarmParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/EquipmentFaultMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentFaultMapper.java new file mode 100644 index 0000000..9b7f9f8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentFaultMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.EquipmentFault; +import com.gxwebsoft.apps.param.EquipmentFaultParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 故障电池Mapper + * + * @author 科技小王子 + * @since 2022-12-01 18:40:25 + */ +public interface EquipmentFaultMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") EquipmentFaultParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") EquipmentFaultParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/EquipmentGoodsMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentGoodsMapper.java new file mode 100644 index 0000000..bbe47c9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentGoodsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.EquipmentGoods; +import com.gxwebsoft.apps.param.EquipmentGoodsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 电池管理记录表Mapper + * + * @author 科技小王子 + * @since 2023-02-28 22:40:50 + */ +public interface EquipmentGoodsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") EquipmentGoodsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") EquipmentGoodsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/EquipmentMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentMapper.java new file mode 100644 index 0000000..905ba86 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.apps.param.EquipmentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备管理Mapper + * + * @author 科技小王子 + * @since 2022-11-30 02:11:16 + */ +public interface EquipmentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") EquipmentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") EquipmentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/EquipmentOrderGoodsMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentOrderGoodsMapper.java new file mode 100644 index 0000000..88c3887 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentOrderGoodsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.EquipmentOrderGoods; +import com.gxwebsoft.apps.param.EquipmentOrderGoodsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 电池管理记录表Mapper + * + * @author 科技小王子 + * @since 2023-05-11 19:10:13 + */ +public interface EquipmentOrderGoodsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") EquipmentOrderGoodsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") EquipmentOrderGoodsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/EquipmentOrderMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentOrderMapper.java new file mode 100644 index 0000000..f3ba899 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentOrderMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.EquipmentOrder; +import com.gxwebsoft.apps.param.EquipmentOrderParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 订单记录表Mapper + * + * @author 科技小王子 + * @since 2023-04-14 21:24:31 + */ +public interface EquipmentOrderMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") EquipmentOrderParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") EquipmentOrderParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/EquipmentRecordMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentRecordMapper.java new file mode 100644 index 0000000..7f9244f --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/EquipmentRecordMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.EquipmentRecord; +import com.gxwebsoft.apps.param.EquipmentRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 前世今生Mapper + * + * @author 科技小王子 + * @since 2022-12-03 01:23:53 + */ +public interface EquipmentRecordMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") EquipmentRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") EquipmentRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/HualalaCardBenefitsMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/HualalaCardBenefitsMapper.java new file mode 100644 index 0000000..139a468 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/HualalaCardBenefitsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.HualalaCardBenefits; +import com.gxwebsoft.apps.param.HualalaCardBenefitsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员权益Mapper + * + * @author 科技小王子 + * @since 2023-01-08 12:22:50 + */ +public interface HualalaCardBenefitsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HualalaCardBenefitsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HualalaCardBenefitsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/HualalaCardMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/HualalaCardMapper.java new file mode 100644 index 0000000..3f64ff3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/HualalaCardMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.HualalaCard; +import com.gxwebsoft.apps.param.HualalaCardParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * Mapper + * + * @author 科技小王子 + * @since 2023-01-08 12:22:50 + */ +public interface HualalaCardMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HualalaCardParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HualalaCardParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/HualalaCartFoodMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/HualalaCartFoodMapper.java new file mode 100644 index 0000000..7f1cedd --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/HualalaCartFoodMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.HualalaCartFood; +import com.gxwebsoft.apps.param.HualalaCartFoodParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 购物车商品Mapper + * + * @author 科技小王子 + * @since 2023-01-14 14:46:44 + */ +public interface HualalaCartFoodMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HualalaCartFoodParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HualalaCartFoodParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/HualalaFoodCategoryMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/HualalaFoodCategoryMapper.java new file mode 100644 index 0000000..b4f33c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/HualalaFoodCategoryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.HualalaFoodCategory; +import com.gxwebsoft.apps.param.HualalaFoodCategoryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 菜品分类Mapper + * + * @author 科技小王子 + * @since 2023-01-12 09:49:46 + */ +public interface HualalaFoodCategoryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HualalaFoodCategoryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HualalaFoodCategoryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/HualalaFoodMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/HualalaFoodMapper.java new file mode 100644 index 0000000..3886d45 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/HualalaFoodMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.HualalaFood; +import com.gxwebsoft.apps.param.HualalaFoodParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 菜品分类Mapper + * + * @author 科技小王子 + * @since 2023-01-12 15:34:55 + */ +public interface HualalaFoodMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HualalaFoodParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HualalaFoodParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/HualalaMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/HualalaMapper.java new file mode 100644 index 0000000..286aeef --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/HualalaMapper.java @@ -0,0 +1,20 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.Hualala; +import com.gxwebsoft.apps.entity.Link; +import com.gxwebsoft.apps.param.LinkParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 哗啦啦Mapper + * + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +public interface HualalaMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/HualalaShopMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/HualalaShopMapper.java new file mode 100644 index 0000000..84eff72 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/HualalaShopMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.apps.param.HualalaShopParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 哗啦啦门店管理Mapper + * + * @author 科技小王子 + * @since 2023-01-12 18:24:44 + */ +public interface HualalaShopMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") HualalaShopParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") HualalaShopParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/LinkMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/LinkMapper.java new file mode 100644 index 0000000..5a2c573 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/LinkMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.Link; +import com.gxwebsoft.apps.param.LinkParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 常用链接推荐记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +public interface LinkMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") LinkParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") LinkParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/TestDataMapper.java b/src/main/java/com/gxwebsoft/apps/mapper/TestDataMapper.java new file mode 100644 index 0000000..ddb858e --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/TestDataMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.apps.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.apps.entity.TestData; +import com.gxwebsoft.apps.param.TestDataParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 测试数据表Mapper + * + * @author 科技小王子 + * @since 2023-02-01 12:13:46 + */ +public interface TestDataMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TestDataParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TestDataParam param); + +} diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/BcAgentMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcAgentMapper.xml new file mode 100644 index 0000000..b0c71fb --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcAgentMapper.xml @@ -0,0 +1,44 @@ + + + + + + + SELECT a.*,b.nickname,c.nickname as parentName + FROM apps_bc_agent a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN sys_user c ON a.parent_id = c.user_id + + + AND a.agent_id = #{param.agentId} + + + AND a.user_id = #{param.userId} + + + AND a.parent_id = #{param.parentId} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + AND b.deleted = 0 AND c.deleted = 0 + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/BcCookbookMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcCookbookMapper.xml new file mode 100644 index 0000000..577901f --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcCookbookMapper.xml @@ -0,0 +1,53 @@ + + + + + + + SELECT a.* + FROM apps_bc_cookbook a + + + AND a.cookbook_id = #{param.cookbookId} + + + AND a.plan_id = #{param.planId} + + + AND a.period LIKE CONCAT('%', #{param.period}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/BcEquipmentMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcEquipmentMapper.xml new file mode 100644 index 0000000..2461118 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcEquipmentMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM apps_bc_equipment a + + + AND a.bc_equipment_id = #{param.bcEquipmentId} + + + AND a.equipment_name LIKE CONCAT('%', #{param.equipmentName}, '%') + + + AND a.equipment_code LIKE CONCAT('%', #{param.equipmentCode}, '%') + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.user_id = #{param.userId} + + + 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/apps/mapper/xml/BcExportMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcExportMapper.xml new file mode 100644 index 0000000..75c3fb8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcExportMapper.xml @@ -0,0 +1,83 @@ + + + + + + + SELECT a.* + FROM apps_bc_export a + + + AND a.export_id = #{param.exportId} + + + AND a.organization_name LIKE CONCAT('%', #{param.organizationName}, '%') + + + AND a.expend_money = #{param.expendMoney} + + + AND a.breakfast_post = #{param.breakfastPost} + + + AND a.breakfast_sign = #{param.breakfastSign} + + + AND a.lunch_post = #{param.lunchPost} + + + AND a.lunch_sign = #{param.lunchSign} + + + AND a.dinner_post = #{param.dinnerPost} + + + AND a.dinner_sign = #{param.dinnerSign} + + + AND a.goods_price = #{param.goodsPrice} + + + AND a.delivery_time LIKE CONCAT('%', #{param.deliveryTime}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.order_id = #{param.orderId} + + + AND a.organization_id = #{param.organizationId} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/BcFoodMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcFoodMapper.xml new file mode 100644 index 0000000..d0fbaaf --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcFoodMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.*,b.nickname + FROM apps_bc_food a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.bc_food_id = #{param.bcFoodId} + + + AND a.plan_id = #{param.planId} + + + AND a.period LIKE CONCAT('%', #{param.period}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( b.nickname LIKE CONCAT('%', #{param.keywords}, '%') ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/BcPlanMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcPlanMapper.xml new file mode 100644 index 0000000..e7732c7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcPlanMapper.xml @@ -0,0 +1,67 @@ + + + + + + + SELECT a.*,b.nickname + FROM apps_bc_plan a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.bc_plan_id = #{param.bcPlanId} + + + AND a.day_time LIKE CONCAT('%', #{param.dayTime}, '%') + + + AND a.week = #{param.week} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.day_time >= #{param.createTimeStart} + + + AND a.day_time <= #{param.createTimeEnd} + + + AND a.day_time = #{param.oldTime} + + + + AND ( b.nickname LIKE CONCAT('%', #{param.keywords}, '%') OR a.day_time LIKE CONCAT('%', #{param.keywords}, '%') ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/BcTemporaryMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcTemporaryMapper.xml new file mode 100644 index 0000000..a82fdc4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/BcTemporaryMapper.xml @@ -0,0 +1,54 @@ + + + + + + + SELECT a.*,b.nickname + FROM apps_bc_temporary a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.temporary_id = #{param.temporaryId} + + + AND a.user_id = #{param.userId} + + + AND a.parent_id = #{param.parentId} + + + AND a.status = #{param.status} + + + AND a.apply_status = #{param.applyStatus} + + + AND a.expiration_time >= #{param.dayTime} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/CashierMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/CashierMapper.xml new file mode 100644 index 0000000..5a9e915 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/CashierMapper.xml @@ -0,0 +1,86 @@ + + + + + + + SELECT a.* + FROM apps_cashier a + + + AND a.cashier_id = #{param.cashierId} + + + AND a.buyer_id LIKE CONCAT('%', #{param.buyerId}, '%') + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.msg LIKE CONCAT('%', #{param.msg}, '%') + + + AND a.out_trade_no LIKE CONCAT('%', #{param.outTradeNo}, '%') + + + AND a.amount LIKE CONCAT('%', #{param.amount}, '%') + + + AND a.pay_time LIKE CONCAT('%', #{param.payTime}, '%') + + + AND a.pay_type LIKE CONCAT('%', #{param.payType}, '%') + + + AND a.total_amount = #{param.totalAmount} + + + AND a.receipt_amount = #{param.receiptAmount} + + + AND a.fee_amount = #{param.feeAmount} + + + AND a.settle_amount = #{param.settleAmount} + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.mobile LIKE CONCAT('%', #{param.mobile}, '%') + + + AND a.order_remark LIKE CONCAT('%', #{param.orderRemark}, '%') + + + AND a.order_status LIKE CONCAT('%', #{param.orderStatus}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentAlarmMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentAlarmMapper.xml new file mode 100644 index 0000000..e8860d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentAlarmMapper.xml @@ -0,0 +1,70 @@ + + + + + + + SELECT a.*, + b.merchant_name,b.merchant_code + FROM apps_equipment_alarm a + LEFT JOIN shop_merchant b ON a.merchant_code = b.merchant_code + + + AND a.id = #{param.id} + + + AND a.equipment_code LIKE CONCAT('%', #{param.equipmentCode}, '%') + + + AND a.alarm_type LIKE CONCAT('%', #{param.alarmType}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.handle_time LIKE CONCAT('%', #{param.handleTime}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + 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} + + + AND b.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND b.merchant_code = #{param.merchantCode} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentFaultMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentFaultMapper.xml new file mode 100644 index 0000000..ce6bf2e --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentFaultMapper.xml @@ -0,0 +1,70 @@ + + + + + + + SELECT a.*, + b.merchant_name,b.merchant_code + FROM apps_equipment_fault a + LEFT JOIN shop_merchant b ON a.merchant_code = b.merchant_code + + + AND a.id = #{param.id} + + + AND a.equipment_code = #{param.equipmentCode} + + + AND a.fault_type LIKE CONCAT('%', #{param.faultType}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.handle_time LIKE CONCAT('%', #{param.handleTime}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + 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} + + + AND b.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND b.merchant_code = #{param.merchantCode} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentGoodsMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentGoodsMapper.xml new file mode 100644 index 0000000..7136e08 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentGoodsMapper.xml @@ -0,0 +1,94 @@ + + + + + + + SELECT a.*, + b.merchant_name,b.merchant_code + FROM apps_equipment_goods a + LEFT JOIN shop_merchant b ON a.merchant_code = b.merchant_code + + + AND a.goods_id = #{param.goodsId} + + + AND a.equipment_category LIKE CONCAT('%', #{param.equipment_category}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.goods_name LIKE CONCAT('%', #{param.goodsName}, '%') + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.category_id = #{param.categoryId} + + + AND a.battery_model LIKE CONCAT('%', #{param.batteryModel}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.battery_rent = #{param.batteryRent} + + + AND a.battery_price = #{param.batteryPrice} + + + AND a.battery_deposit = #{param.batteryDeposit} + + + AND a.battery_insurance = #{param.batteryInsurance} + + + AND a.user_id = #{param.userId} + + + 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} + + + AND a.merchant_code <= #{param.merchantCode} + + + AND b.merchant_name <= #{param.merchantName} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentMapper.xml new file mode 100644 index 0000000..043de45 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentMapper.xml @@ -0,0 +1,121 @@ + + + + + + + SELECT a.*, + b.merchant_name,b.merchant_code + FROM apps_equipment a + LEFT JOIN shop_merchant b ON a.merchant_code = b.merchant_code + + + AND a.equipment_id = #{param.equipmentId} + + + AND a.equipment_name LIKE CONCAT('%', #{param.equipmentName}, '%') + + + AND a.equipment_code LIKE CONCAT('%', #{param.equipmentCode}, '%') + + + AND a.equipment_category LIKE CONCAT('%', #{param.equipmentCategory}, '%') + + + AND a.equipment_avatar LIKE CONCAT('%', #{param.equipmentAvatar}, '%') + + + AND a.battery_model LIKE CONCAT('%', #{param.batteryModel}, '%') + + + AND a.bms LIKE CONCAT('%', #{param.bms}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.is_ctive LIKE CONCAT('%', #{param.isCtive}, '%') + + + AND a.working_status LIKE CONCAT('%', #{param.workingStatus}, '%') + + + AND a.lease_status LIKE CONCAT('%', #{param.leaseStatus}, '%') + + + AND a.battery_status LIKE CONCAT('%', #{param.batteryStatus}, '%') + + + AND a.battery_power LIKE CONCAT('%', #{param.batteryPower}, '%') + + + AND a.is_online LIKE CONCAT('%', #{param.isOnline}, '%') + + + AND a.total_voltage LIKE CONCAT('%', #{param.totalVoltage}, '%') + + + AND a.bms_brand LIKE CONCAT('%', #{param.bmsBrand}, '%') + + + AND a.surplus_capacity LIKE CONCAT('%', #{param.surplusCapacity}, '%') + + + AND a.iccid LIKE CONCAT('%', #{param.iccid}, '%') + + + AND a.ctive_time LIKE CONCAT('%', #{param.ctiveTime}, '%') + + + AND a.battery_delivery_time LIKE CONCAT('%', #{param.batteryDeliveryTime}, '%') + + + AND a.order_id = #{param.orderId} + + + AND a.user_id = #{param.userId} + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND b.merchant_code = #{param.merchantCode} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentOrderGoodsMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentOrderGoodsMapper.xml new file mode 100644 index 0000000..0a75b05 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentOrderGoodsMapper.xml @@ -0,0 +1,110 @@ + + + + + + + SELECT a.* + FROM apps_equipment_order_goods a + + + AND a.order_goods_id = #{param.orderGoodsId} + + + AND a.goods_name LIKE CONCAT('%', #{param.goodsName}, '%') + + + AND a.equipment_category LIKE CONCAT('%', #{param.equipmentCategory}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.category_id = #{param.categoryId} + + + AND a.battery_model LIKE CONCAT('%', #{param.batteryModel}, '%') + + + AND a.selling_point LIKE CONCAT('%', #{param.sellingPoint}, '%') + + + AND a.stock_total = #{param.stockTotal} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.battery_rent = #{param.batteryRent} + + + AND a.battery_price = #{param.batteryPrice} + + + AND a.battery_deposit = #{param.batteryDeposit} + + + AND a.battery_insurance = #{param.batteryInsurance} + + + AND a.down_payment = #{param.downPayment} + + + AND a.periods = #{param.periods} + + + AND a.repayment = #{param.repayment} + + + AND a.service_charges = #{param.serviceCharges} + + + AND a.periods_type = #{param.periodsType} + + + AND a.order_id = #{param.orderId} + + + AND a.user_id = #{param.userId} + + + 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/apps/mapper/xml/EquipmentOrderMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentOrderMapper.xml new file mode 100644 index 0000000..bf65d02 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentOrderMapper.xml @@ -0,0 +1,194 @@ + + + + + + + SELECT a.* + FROM apps_equipment_order a + + + AND a.order_id = #{param.orderId} + + + AND a.subject LIKE CONCAT('%', #{param.subject}, '%') + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.total_price = #{param.totalPrice} + + + AND a.order_price = #{param.orderPrice} + + + AND a.coupon_id = #{param.couponId} + + + AND a.coupon_money = #{param.couponMoney} + + + AND a.points_money = #{param.pointsMoney} + + + AND a.points_num = #{param.pointsNum} + + + AND a.pay_price = #{param.payPrice} + + + AND a.receipt_amount = #{param.receiptAmount} + + + AND a.update_price = #{param.updatePrice} + + + AND a.buyer_remark LIKE CONCAT('%', #{param.buyerRemark}, '%') + + + AND a.pay_type = #{param.payType} + + + AND a.pay_method LIKE CONCAT('%', #{param.payMethod}, '%') + + + AND a.pay_status = #{param.payStatus} + + + AND a.pay_time LIKE CONCAT('%', #{param.payTime}, '%') + + + AND a.trade_id LIKE CONCAT('%', #{param.tradeId}, '%') + + + AND a.delivery_type = #{param.deliveryType} + + + AND a.extract_shop_id = #{param.extractShopId} + + + AND a.extract_clerk_id = #{param.extractClerkId} + + + AND a.express_price = #{param.expressPrice} + + + AND a.express_id = #{param.expressId} + + + AND a.express_no LIKE CONCAT('%', #{param.expressNo}, '%') + + + AND a.delivery_status = #{param.deliveryStatus} + + + AND a.delivery_time LIKE CONCAT('%', #{param.deliveryTime}, '%') + + + AND a.receipt_status = #{param.receiptStatus} + + + AND a.receipt_time LIKE CONCAT('%', #{param.receiptTime}, '%') + + + AND a.order_status = #{param.orderStatus} + + + AND a.points_bonus = #{param.pointsBonus} + + + AND a.merchant_remark LIKE CONCAT('%', #{param.merchantRemark}, '%') + + + AND a.is_settled = #{param.isSettled} + + + AND a.rent_order_id = #{param.rentOrderId} + + + AND a.transaction_id LIKE CONCAT('%', #{param.transactionId}, '%') + + + AND a.is_comment = #{param.isComment} + + + AND a.order_source = #{param.orderSource} + + + AND a.order_source_id = #{param.orderSourceId} + + + AND a.order_source_data LIKE CONCAT('%', #{param.orderSourceData}, '%') + + + AND a.battery_rent = #{param.batteryRent} + + + AND a.battery_deposit = #{param.batteryDeposit} + + + AND a.battery_insurance = #{param.batteryInsurance} + + + AND a.month = #{param.month} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.platform LIKE CONCAT('%', #{param.platform}, '%') + + + AND a.is_renew = #{param.isRenew} + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + AND a.goods_id = #{param.goodsId} + + + AND a.equipment_id = #{param.equipmentId} + + + 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/apps/mapper/xml/EquipmentRecordMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentRecordMapper.xml new file mode 100644 index 0000000..7213717 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/EquipmentRecordMapper.xml @@ -0,0 +1,78 @@ + + + + + + + SELECT a.*, + b.merchant_name,b.merchant_code, + c.nickname,c.user_id + FROM apps_equipment_record a + LEFT JOIN shop_merchant b ON a.merchant_code = b.merchant_code + LEFT JOIN sys_user c ON a.user_id = c.user_id + + + AND a.id = #{param.id} + + + AND a.equipment_code LIKE CONCAT('%', #{param.equipmentCode}, '%') + + + AND a.event_type LIKE CONCAT('%', #{param.eventType}, '%') + + + AND a.params LIKE CONCAT('%', #{param.params}, '%') + + + AND a.user_id = #{param.userId} + + + 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} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.order_id = #{param.orderId} + + + AND b.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND b.merchant_code = #{param.merchantCode} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaCardBenefitsMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaCardBenefitsMapper.xml new file mode 100644 index 0000000..4614721 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaCardBenefitsMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.* + FROM apps_hualala_card_benefits a + + + AND a.id = #{param.id} + + + AND a.card_level_name LIKE CONCAT('%', #{param.cardLevelName}, '%') + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + 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/apps/mapper/xml/HualalaCardMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaCardMapper.xml new file mode 100644 index 0000000..1ff3515 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaCardMapper.xml @@ -0,0 +1,125 @@ + + + + + + + SELECT a.* + FROM apps_hualala_card a + + + AND a.id = #{param.id} + + + AND a.group_id LIKE CONCAT('%', #{param.groupId}, '%') + + + AND a.shop_id LIKE CONCAT('%', #{param.shopId}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.card_id LIKE CONCAT('%', #{param.cardId}, '%') + + + AND a.card_type_id LIKE CONCAT('%', #{param.cardTypeId}, '%') + + + AND a.card_level_id LIKE CONCAT('%', #{param.cardLevelId}, '%') + + + AND a.card_level_name LIKE CONCAT('%', #{param.cardLevelName}, '%') + + + AND a.card_status LIKE CONCAT('%', #{param.cardStatus}, '%') + + + AND a.customer_id LIKE CONCAT('%', #{param.customerId}, '%') + + + AND a.create_shop_id LIKE CONCAT('%', #{param.createShopId}, '%') + + + AND a.create_shop_name LIKE CONCAT('%', #{param.createShopName}, '%') + + + AND a.card_no LIKE CONCAT('%', #{param.cardNo}, '%') + + + AND a.customer_name LIKE CONCAT('%', #{param.customerName}, '%') + + + AND a.customer_mobile LIKE CONCAT('%', #{param.customerMobile}, '%') + + + AND a.customer_sex = #{param.customerSex} + + + AND a.customer_birthday LIKE CONCAT('%', #{param.customerBirthday}, '%') + + + AND a.card_balance = #{param.cardBalance} + + + AND a.point_balance = #{param.pointBalance} + + + AND a.save_money_total = #{param.saveMoneyTotal} + + + AND a.consumption_total = #{param.consumptionTotal} + + + AND a.consumption_count = #{param.consumptionCount} + + + AND a.grade = #{param.grade} + + + AND a.next_level_grade = #{param.nextLevelGrade} + + + AND a.expire_time LIKE CONCAT('%', #{param.expireTime}, '%') + + + AND a.last_trans_time LIKE CONCAT('%', #{param.lastTransTime}, '%') + + + 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/apps/mapper/xml/HualalaCartFoodMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaCartFoodMapper.xml new file mode 100644 index 0000000..e4d0a9d --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaCartFoodMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.* + FROM apps_hualala_cart_food a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.food_id = #{param.foodId} + + + AND a.food_name LIKE CONCAT('%', #{param.foodName}, '%') + + + AND a.sku_id LIKE CONCAT('%', #{param.skuId}, '%') + + + AND a.shop_id = #{param.shopId} + + + AND a.shop_name LIKE CONCAT('%', #{param.shopName}, '%') + + + AND a.shop_logo LIKE CONCAT('%', #{param.shopLogo}, '%') + + + AND a.cover_url LIKE CONCAT('%', #{param.coverUrl}, '%') + + + AND a.sell_price = #{param.sellPrice} + + + AND a.stock = #{param.stock} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaFoodCategoryMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaFoodCategoryMapper.xml new file mode 100644 index 0000000..8d9040e --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaFoodCategoryMapper.xml @@ -0,0 +1,104 @@ + + + + + + + SELECT a.* + FROM apps_hualala_food_category a + + + AND a.id = #{param.id} + + + AND a.type = #{param.type} + + + AND a.food_category_name LIKE CONCAT('%', #{param.foodCategoryName}, '%') + + + AND a.food_subject_name LIKE CONCAT('%', #{param.foodSubjectName}, '%') + + + AND a.food_key LIKE CONCAT('%', #{param.foodKey}, '%') + + + AND a.food_count LIKE CONCAT('%', #{param.foodCount}, '%') + + + AND a.food_category_id LIKE CONCAT('%', #{param.foodCategoryId}, '%') + + + AND a.food_category_group_name LIKE CONCAT('%', #{param.foodCategoryGroupName}, '%') + + + AND a.food_category_key LIKE CONCAT('%', #{param.foodCategoryKey}, '%') + + + AND a.action LIKE CONCAT('%', #{param.action}, '%') + + + AND a.settlement_proportion LIKE CONCAT('%', #{param.settlementProportion}, '%') + + + AND a.is_active = #{param.isActive} + + + AND a.is_batching = #{param.isBatching} + + + AND a.is_single_sale = #{param.isSingleSale} + + + AND a.sort_index = #{param.sortIndex} + + + AND a.ads_id = #{param.adsId} + + + AND a.shop_id LIKE CONCAT('%', #{param.shopId}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + 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/apps/mapper/xml/HualalaFoodMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaFoodMapper.xml new file mode 100644 index 0000000..0e56981 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaFoodMapper.xml @@ -0,0 +1,335 @@ + + + + + + + SELECT a.* + FROM apps_hualala_food a + + + AND a.id = #{param.id} + + + AND a.food_id LIKE CONCAT('%', #{param.foodId}, '%') + + + AND a.food_key LIKE CONCAT('%', #{param.foodKey}, '%') + + + AND a.group_id LIKE CONCAT('%', #{param.groupId}, '%') + + + AND a.shop_id LIKE CONCAT('%', #{param.shopId}, '%') + + + AND a.food_count LIKE CONCAT('%', #{param.foodCount}, '%') + + + AND a.food_category_id LIKE CONCAT('%', #{param.foodCategoryId}, '%') + + + AND a.food_category_key LIKE CONCAT('%', #{param.foodCategoryKey}, '%') + + + AND a.food_category_name LIKE CONCAT('%', #{param.foodCategoryName}, '%') + + + AND a.food_online_category_id LIKE CONCAT('%', #{param.foodOnlineCategoryId}, '%') + + + AND a.food_online_category_key LIKE CONCAT('%', #{param.foodOnlineCategoryKey}, '%') + + + AND a.food_online_category_name LIKE CONCAT('%', #{param.foodOnlineCategoryName}, '%') + + + AND a.is_batching = #{param.isBatching} + + + AND a.is_single_sale = #{param.isSingleSale} + + + AND a.food_subject_key LIKE CONCAT('%', #{param.foodSubjectKey}, '%') + + + AND a.department_key_lst LIKE CONCAT('%', #{param.departmentKeyLst}, '%') + + + AND a.batching_food_category_key LIKE CONCAT('%', #{param.batchingFoodCategoryKey}, '%') + + + AND a.food_name LIKE CONCAT('%', #{param.foodName}, '%') + + + AND a.food_code LIKE CONCAT('%', #{param.foodCode}, '%') + + + AND a.food_alias_name LIKE CONCAT('%', #{param.foodAliasName}, '%') + + + AND a.food_mnemonic_code LIKE CONCAT('%', #{param.foodMnemonicCode}, '%') + + + AND a.is_discount = #{param.isDiscount} + + + AND a.is_comments = #{param.isComments} + + + AND a.is_active = #{param.isActive} + + + AND a.is_open = #{param.isOpen} + + + AND a.is_set_food = #{param.isSetFood} + + + AND a.set_food_detail_json LIKE CONCAT('%', #{param.setFoodDetailJson}, '%') + + + AND a.is_temp_food = #{param.isTempFood} + + + AND a.units LIKE CONCAT('%', #{param.units}, '%') + + + AND a.py LIKE CONCAT('%', #{param.py}, '%') + + + AND a.min_order_count LIKE CONCAT('%', #{param.minOrderCount}, '%') + + + AND a.taste_list LIKE CONCAT('%', #{param.tasteList}, '%') + + + AND a.taste_group_list LIKE CONCAT('%', #{param.tasteGroupList}, '%') + + + AND a.making_method_list LIKE CONCAT('%', #{param.makingMethodList}, '%') + + + AND a.making_method_group_list LIKE CONCAT('%', #{param.makingMethodGroupList}, '%') + + + AND a.is_specialty = #{param.isSpecialty} + + + AND a.is_recommend = #{param.isRecommend} + + + AND a.is_news = #{param.isNews} + + + AND a.hot_tag LIKE CONCAT('%', #{param.hotTag}, '%') + + + AND a.sales_count LIKE CONCAT('%', #{param.salesCount}, '%') + + + AND a.is_need_confirm_food_number = #{param.isNeedConfirmFoodNumber} + + + AND a.takeout_packaging_fee LIKE CONCAT('%', #{param.takeoutPackagingFee}, '%') + + + AND a.increment_unit LIKE CONCAT('%', #{param.incrementUnit}, '%') + + + AND a.takeaway_tag LIKE CONCAT('%', #{param.takeawayTag}, '%') + + + AND a.working_lunch_tag LIKE CONCAT('%', #{param.workingLunchTag}, '%') + + + AND a.ads_id LIKE CONCAT('%', #{param.adsId}, '%') + + + AND a.imge_path LIKE CONCAT('%', #{param.imgePath}, '%') + + + AND a.is_has_image = #{param.isHasImage} + + + AND a.image_hwp LIKE CONCAT('%', #{param.imageHwp}, '%') + + + AND a.star_level LIKE CONCAT('%', #{param.starLevel}, '%') + + + AND a.food_tag_ids LIKE CONCAT('%', #{param.foodTagIds}, '%') + + + AND a.parent_food_id LIKE CONCAT('%', #{param.parentFoodId}, '%') + + + AND a.food_en_name LIKE CONCAT('%', #{param.foodEnName}, '%') + + + AND a.is_auto_add = #{param.isAutoAdd} + + + AND a.is_can_refund = #{param.isCanRefund} + + + AND a.set_person = #{param.setPerson} + + + AND a.taste_is_required = #{param.tasteIsRequired} + + + AND a.taste_is_multiple = #{param.tasteIsMultiple} + + + AND a.making_method_is_required = #{param.makingMethodIsRequired} + + + AND a.making_method_is_multiple = #{param.makingMethodIsMultiple} + + + AND a.init_click_amount LIKE CONCAT('%', #{param.initClickAmount}, '%') + + + AND a.actual_click_amount LIKE CONCAT('%', #{param.actualClickAmount}, '%') + + + AND a.recent_click_amount LIKE CONCAT('%', #{param.recentClickAmount}, '%') + + + AND a.click_alert_mess LIKE CONCAT('%', #{param.clickAlertMess}, '%') + + + AND a.source_food_id LIKE CONCAT('%', #{param.sourceFoodId}, '%') + + + AND a.sales_commission LIKE CONCAT('%', #{param.salesCommission}, '%') + + + AND a.food_key_element_lst LIKE CONCAT('%', #{param.foodKeyElementLst}, '%') + + + AND a.food_sort_index LIKE CONCAT('%', #{param.foodSortIndex}, '%') + + + AND a.action_time LIKE CONCAT('%', #{param.actionTime}, '%') + + + AND a.food_subject_name LIKE CONCAT('%', #{param.foodSubjectName}, '%') + + + AND a.food_subject_code LIKE CONCAT('%', #{param.foodSubjectCode}, '%') + + + AND a.department_id LIKE CONCAT('%', #{param.departmentId}, '%') + + + AND a.department_key LIKE CONCAT('%', #{param.departmentKey}, '%') + + + AND a.popularity LIKE CONCAT('%', #{param.popularity}, '%') + + + AND a.detail_split LIKE CONCAT('%', #{param.detailSplit}, '%') + + + AND a.batching_is_food_number_rate LIKE CONCAT('%', #{param.batchingIsFoodNumberRate}, '%') + + + AND a.food_category_code LIKE CONCAT('%', #{param.foodCategoryCode}, '%') + + + AND a.food_category_en_name LIKE CONCAT('%', #{param.foodCategoryEnName}, '%') + + + AND a.food_category_group_name LIKE CONCAT('%', #{param.foodCategoryGroupName}, '%') + + + AND a.special_price LIKE CONCAT('%', #{param.specialPrice}, '%') + + + AND a.special_price2 LIKE CONCAT('%', #{param.specialPrice2}, '%') + + + AND a.special_price3 LIKE CONCAT('%', #{param.specialPrice3}, '%') + + + AND a.special_price4 LIKE CONCAT('%', #{param.specialPrice4}, '%') + + + AND a.special_price5 LIKE CONCAT('%', #{param.specialPrice5}, '%') + + + AND a.special_price6 LIKE CONCAT('%', #{param.specialPrice6}, '%') + + + AND a.online_wm_price LIKE CONCAT('%', #{param.onlineWmPrice}, '%') + + + AND a.tag_ids LIKE CONCAT('%', #{param.tagIds}, '%') + + + AND a.tag_names LIKE CONCAT('%', #{param.tagNames}, '%') + + + AND a.gift_item_id LIKE CONCAT('%', #{param.giftItemId}, '%') + + + AND a.gift_valid_period LIKE CONCAT('%', #{param.giftValidPeriod}, '%') + + + AND a.description LIKE CONCAT('%', #{param.description}, '%') + + + AND a.action LIKE CONCAT('%', #{param.action}, '%') + + + AND a.settlement_proportion LIKE CONCAT('%', #{param.settlementProportion}, '%') + + + AND a.sort_index = #{param.sortIndex} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + 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/apps/mapper/xml/HualalaMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaMapper.xml new file mode 100644 index 0000000..83ff23d --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaShopMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaShopMapper.xml new file mode 100644 index 0000000..ba77d82 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/HualalaShopMapper.xml @@ -0,0 +1,98 @@ + + + + + + + SELECT a.* + FROM apps_hualala_shop a + + + AND a.shop_id = #{param.shopId} + + + AND a.shop_name LIKE CONCAT('%', #{param.shopName}, '%') + + + AND a.logo_url LIKE CONCAT('%', #{param.logoUrl}, '%') + + + AND a.shop_city LIKE CONCAT('%', #{param.shopCity}, '%') + + + AND a.shop_city_name LIKE CONCAT('%', #{param.shopCityName}, '%') + + + AND a.shop_open_time LIKE CONCAT('%', #{param.shopOpenTime}, '%') + + + AND a.shop_phone LIKE CONCAT('%', #{param.shopPhone}, '%') + + + AND a.acsp_type LIKE CONCAT('%', #{param.acspType}, '%') + + + AND a.action LIKE CONCAT('%', #{param.action}, '%') + + + AND a.action_time LIKE CONCAT('%', #{param.actionTime}, '%') + + + AND a.brand_id LIKE CONCAT('%', #{param.brandId}, '%') + + + AND a.brand_name LIKE CONCAT('%', #{param.brandName}, '%') + + + AND a.business_model LIKE CONCAT('%', #{param.businessModel}, '%') + + + AND a.image_path LIKE CONCAT('%', #{param.imagePath}, '%') + + + AND a.map_latitude_value_bai_du LIKE CONCAT('%', #{param.mapLatitudeValueBaiDu}, '%') + + + AND a.map_longitude_value_bai_du LIKE CONCAT('%', #{param.mapLongitudeValueBaiDu}, '%') + + + AND a.operation_mode = #{param.operationMode} + + + 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.customer_id = #{param.customerId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/LinkMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/LinkMapper.xml new file mode 100644 index 0000000..e16e103 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/LinkMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.* + FROM apps_link a + + + AND a.link_id = #{param.linkId} + + + AND a.link_name LIKE CONCAT('%', #{param.linkName}, '%') + + + AND a.link_icon LIKE CONCAT('%', #{param.linkIcon}, '%') + + + AND a.link_path LIKE CONCAT('%', #{param.linkPath}, '%') + + + AND a.link_component LIKE CONCAT('%', #{param.linkComponent}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.clicks = #{param.clicks} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id = #{param.userId} + + + AND a.merchant_code = #{param.merchantCode} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/mapper/xml/TestDataMapper.xml b/src/main/java/com/gxwebsoft/apps/mapper/xml/TestDataMapper.xml new file mode 100644 index 0000000..88d5d46 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/mapper/xml/TestDataMapper.xml @@ -0,0 +1,38 @@ + + + + + + + SELECT a.* + FROM apps_test_data a + + + AND a.id = #{param.id} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/apps/param/BcAgentParam.java b/src/main/java/com/gxwebsoft/apps/param/BcAgentParam.java new file mode 100644 index 0000000..2a660c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/BcAgentParam.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.apps.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; + +/** + * 代报餐管理查询参数 + * + * @author 科技小王子 + * @since 2023-04-24 19:25:59 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BcAgentParam对象", description = "代报餐管理查询参数") +public class BcAgentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer agentId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "工单ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/BcCookbookParam.java b/src/main/java/com/gxwebsoft/apps/param/BcCookbookParam.java new file mode 100644 index 0000000..0079279 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/BcCookbookParam.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.apps.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; + +/** + * 常用菜谱查询参数 + * + * @author 科技小王子 + * @since 2023-05-05 14:56:54 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BcCookbookParam对象", description = "常用菜谱查询参数") +public class BcCookbookParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer cookbookId; + + @ApiModelProperty(value = "菜品计划") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "餐段 早餐 午餐 晚餐") + private String period; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "发布人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/BcEquipmentParam.java b/src/main/java/com/gxwebsoft/apps/param/BcEquipmentParam.java new file mode 100644 index 0000000..d787b36 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/BcEquipmentParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.apps.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; + +/** + * 报餐设备管理查询参数 + * + * @author 科技小王子 + * @since 2023-05-02 10:34:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BcEquipmentParam对象", description = "报餐设备管理查询参数") +public class BcEquipmentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "设备ID") + @QueryField(type = QueryType.EQ) + private Integer bcEquipmentId; + + @ApiModelProperty(value = "设备名称") + private String equipmentName; + + @ApiModelProperty(value = "设备编码") + private String equipmentCode; + + @ApiModelProperty(value = "所属档口") + private Integer gear; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "员工工号") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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/apps/param/BcExportParam.java b/src/main/java/com/gxwebsoft/apps/param/BcExportParam.java new file mode 100644 index 0000000..4c9b1bb --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/BcExportParam.java @@ -0,0 +1,98 @@ +package com.gxwebsoft.apps.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; + +import java.math.BigDecimal; + +/** + * 报餐统计导出查询参数 + * + * @author 科技小王子 + * @since 2023-06-01 21:47:02 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BcExportParam对象", description = "报餐统计导出查询参数") +public class BcExportParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer exportId; + + @ApiModelProperty(value = "机构名称") + private String organizationName; + + @ApiModelProperty(value = "实际消费的金额(不含退款)") + @QueryField(type = QueryType.EQ) + private BigDecimal expendMoney; + + @ApiModelProperty(value = "早餐报餐次数") + @QueryField(type = QueryType.EQ) + private Integer breakfastPost; + + @ApiModelProperty(value = "早餐签到次数") + @QueryField(type = QueryType.EQ) + private Integer breakfastSign; + + @ApiModelProperty(value = "午餐报餐次数") + @QueryField(type = QueryType.EQ) + private Integer lunchPost; + + @ApiModelProperty(value = "午餐签到次数") + @QueryField(type = QueryType.EQ) + private Integer lunchSign; + + @ApiModelProperty(value = "晚餐报餐次数") + @QueryField(type = QueryType.EQ) + private Integer dinnerPost; + + @ApiModelProperty(value = "晚餐签到次数") + @QueryField(type = QueryType.EQ) + private Integer dinnerSign; + + @ApiModelProperty(value = "商品价格(单价)") + @QueryField(type = QueryType.EQ) + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "发货时间") + private String deliveryTime; + + @ApiModelProperty(value = "起始时间") + private String deliveryTimeStart; + + @ApiModelProperty(value = "结束时间") + private String deliveryTimeEnd; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "订单号") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "发布人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/BcFoodParam.java b/src/main/java/com/gxwebsoft/apps/param/BcFoodParam.java new file mode 100644 index 0000000..73f43e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/BcFoodParam.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.apps.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; + +/** + * 发布菜品明细查询参数 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BcFoodParam对象", description = "发布菜品明细查询参数") +public class BcFoodParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer bcFoodId; + + @ApiModelProperty(value = "菜品计划") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "餐段 早餐 午餐 晚餐") + private String period; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "发布人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/BcPlanParam.java b/src/main/java/com/gxwebsoft/apps/param/BcPlanParam.java new file mode 100644 index 0000000..001ba13 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/BcPlanParam.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.apps.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; + +/** + * 菜品发布管理查询参数 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BcPlanParam对象", description = "菜品发布管理查询参数") +public class BcPlanParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer bcPlanId; + + @ApiModelProperty(value = "发布日期") + private String dayTime; + + @ApiModelProperty(value = "星期几") + private Integer week; + + @ApiModelProperty(value = "发布类型") + private String type; + + @ApiModelProperty(value = "餐段") + private String period; + + @ApiModelProperty(value = "多天菜品是否重复") + private Integer isRepeat; + + @ApiModelProperty(value = "菜品分类") + private Integer categoryId; + + @ApiModelProperty(value = "失效时间") + private String expirationTime; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "发布人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "使用往日菜单") + @QueryField(type = QueryType.EQ) + private String oldTime; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/BcTemporaryParam.java b/src/main/java/com/gxwebsoft/apps/param/BcTemporaryParam.java new file mode 100644 index 0000000..9c32893 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/BcTemporaryParam.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.apps.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.util.Date; + +/** + * 临时报餐管理查询参数 + * + * @author 科技小王子 + * @since 2023-04-24 21:47:57 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "BcTemporaryParam对象", description = "临时报餐管理查询参数") +public class BcTemporaryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer temporaryId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "工单ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "申请状态") + @QueryField(type = QueryType.EQ) + private Integer applyStatus; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "报餐日期") + private Date dayTime; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "失效时间") + private Date expirationTime; + + @ApiModelProperty(value = "昵称") + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/CashierParam.java b/src/main/java/com/gxwebsoft/apps/param/CashierParam.java new file mode 100644 index 0000000..7413dc5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/CashierParam.java @@ -0,0 +1,87 @@ +package com.gxwebsoft.apps.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 WebSoft + * @since 2022-11-18 11:47:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CashierParam对象", description = "海牛收银台记录表查询参数") +public class CashierParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer cashierId; + + @ApiModelProperty(value = "客户ID") + private String buyerId; + + @ApiModelProperty(value = "设备ID") + private String merchantCode; + + @ApiModelProperty(value = "支付标识") + private String code; + + @ApiModelProperty(value = "返回消息") + private String msg; + + @ApiModelProperty(value = "客户端交易订单编号") + private String outTradeNo; + + @ApiModelProperty(value = "数量") + private String amount; + + @ApiModelProperty(value = "支付时间") + private String payTime; + + @ApiModelProperty(value = "支付方式") + private String payType; + + @ApiModelProperty(value = "交易金额") + @QueryField(type = QueryType.EQ) + private BigDecimal totalAmount; + + @ApiModelProperty(value = "实收金额") + @QueryField(type = QueryType.EQ) + private BigDecimal receiptAmount; + + @ApiModelProperty(value = "第三方交易手续费") + @QueryField(type = QueryType.EQ) + private BigDecimal feeAmount; + + @ApiModelProperty(value = "第三方结算金额") + @QueryField(type = QueryType.EQ) + private BigDecimal settleAmount; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "手机号码") + private String mobile; + + @ApiModelProperty(value = "订单备注") + private String orderRemark; + + @ApiModelProperty(value = "订单状态") + private String orderStatus; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/EquipmentAlarmParam.java b/src/main/java/com/gxwebsoft/apps/param/EquipmentAlarmParam.java new file mode 100644 index 0000000..2705b6d --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/EquipmentAlarmParam.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.apps.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 故障报警记录查询参数 + * + * @author 科技小王子 + * @since 2022-12-01 23:49:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "EquipmentAlarmParam对象", description = "故障报警记录查询参数") +public class EquipmentAlarmParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "记录ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "设备编码") + private String equipmentCode; + + @ApiModelProperty(value = "报警类型") + private String alarmType; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "处理时间") + private String handleTime; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @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; + + @ApiModelProperty(value = "所属商户名称") + @TableField(exist = false) + private String merchantName; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/EquipmentFaultParam.java b/src/main/java/com/gxwebsoft/apps/param/EquipmentFaultParam.java new file mode 100644 index 0000000..46f6368 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/EquipmentFaultParam.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.apps.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; + +/** + * 故障电池查询参数 + * + * @author 科技小王子 + * @since 2022-12-01 18:40:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "EquipmentFaultParam对象", description = "故障电池查询参数") +public class EquipmentFaultParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "记录ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "设备编号") + @QueryField(type = QueryType.EQ) + private String equipmentCode; + + @ApiModelProperty(value = "故障原因") + private String faultType; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "处理时间") + private String handleTime; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @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; + + @ApiModelProperty(value = "所属商户名称") + @QueryField(type = QueryType.EQ) + private String merchantName; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/EquipmentGoodsParam.java b/src/main/java/com/gxwebsoft/apps/param/EquipmentGoodsParam.java new file mode 100644 index 0000000..1aaf3a1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/EquipmentGoodsParam.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.apps.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; + +import java.math.BigDecimal; + +/** + * 电池管理记录表查询参数 + * + * @author 科技小王子 + * @since 2023-02-28 22:40:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "EquipmentGoodsParam对象", description = "电池管理记录表查询参数") +public class EquipmentGoodsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + @QueryField(type = QueryType.LIKE) + private String goodsName; + + @ApiModelProperty(value = "下单类型") + private String equipmentCategory; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "电池型号") + private String batteryModel; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "商品卖点") + @QueryField(type = QueryType.LIKE) + private String sellingPoint; + + @ApiModelProperty(value = "电池租金") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryRent; + + @ApiModelProperty(value = "电池价格") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryPrice; + + @ApiModelProperty(value = "电池押金") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryDeposit; + + @ApiModelProperty(value = "电池保险") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryInsurance; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "首付款") + private BigDecimal downPayment; + + @ApiModelProperty(value = "分期期数") + private BigDecimal periods; + + @ApiModelProperty(value = "每期还款") + private BigDecimal repayment; + + @ApiModelProperty(value = "手续费") + private BigDecimal serviceCharges; + + @ApiModelProperty(value = "分期方式") + private Integer periodsType; + + @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; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/EquipmentOrderGoodsParam.java b/src/main/java/com/gxwebsoft/apps/param/EquipmentOrderGoodsParam.java new file mode 100644 index 0000000..218ba59 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/EquipmentOrderGoodsParam.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.apps.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-05-11 19:10:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "EquipmentOrderGoodsParam对象", description = "电池管理记录表查询参数") +public class EquipmentOrderGoodsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer orderGoodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "下单类型") + private String equipmentCategory; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "电池型号") + private String batteryModel; + + @ApiModelProperty(value = "商品卖点") + private String sellingPoint; + + @ApiModelProperty(value = "库存总量") + @QueryField(type = QueryType.EQ) + private Integer stockTotal; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "电池租金") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryRent; + + @ApiModelProperty(value = "电池价格") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryPrice; + + @ApiModelProperty(value = "电池押金") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryDeposit; + + @ApiModelProperty(value = "电池保险") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryInsurance; + + @ApiModelProperty(value = "首付款") + @QueryField(type = QueryType.EQ) + private BigDecimal downPayment; + + @ApiModelProperty(value = "分期期数") + @QueryField(type = QueryType.EQ) + private BigDecimal periods; + + @ApiModelProperty(value = "分期还款") + @QueryField(type = QueryType.EQ) + private BigDecimal repayment; + + @ApiModelProperty(value = "手续费") + @QueryField(type = QueryType.EQ) + private BigDecimal serviceCharges; + + @ApiModelProperty(value = "分期方式 10按周 20按月") + @QueryField(type = QueryType.EQ) + private Integer periodsType; + + @ApiModelProperty(value = "订单编号") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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; + + @ApiModelProperty(value = "旧商品ID") + private Integer goodsId; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/EquipmentOrderParam.java b/src/main/java/com/gxwebsoft/apps/param/EquipmentOrderParam.java new file mode 100644 index 0000000..865e3eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/EquipmentOrderParam.java @@ -0,0 +1,227 @@ +package com.gxwebsoft.apps.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-04-14 21:24:31 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "EquipmentOrderParam对象", description = "订单记录表查询参数") +public class EquipmentOrderParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单标题") + private String subject; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "商品总金额(不含优惠折扣)") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "订单金额(含优惠折扣)") + @QueryField(type = QueryType.EQ) + private BigDecimal orderPrice; + + @ApiModelProperty(value = "优惠券ID") + @QueryField(type = QueryType.EQ) + private Integer couponId; + + @ApiModelProperty(value = "优惠券抵扣金额") + @QueryField(type = QueryType.EQ) + private BigDecimal couponMoney; + + @ApiModelProperty(value = "积分抵扣金额") + @QueryField(type = QueryType.EQ) + private BigDecimal pointsMoney; + + @ApiModelProperty(value = "积分抵扣数量") + @QueryField(type = QueryType.EQ) + private Integer pointsNum; + + @ApiModelProperty(value = "实际付款金额(包含运费)") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "第三方支付实收金额") + @QueryField(type = QueryType.EQ) + private BigDecimal receiptAmount; + + @ApiModelProperty(value = "后台修改的订单金额(差价)") + @QueryField(type = QueryType.EQ) + private BigDecimal updatePrice; + + @ApiModelProperty(value = "买家留言") + private String buyerRemark; + + @ApiModelProperty(value = "支付方式(废弃)") + @QueryField(type = QueryType.EQ) + private Integer payType; + + @ApiModelProperty(value = "支付方式(余额10/微信20/支付宝30/通联支付40/其他支付50)") + private String payMethod; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "付款时间") + private String payTime; + + @ApiModelProperty(value = "第三方交易记录ID") + private String tradeId; + + @ApiModelProperty(value = "配送方式(10快递配送 20门店自提)") + @QueryField(type = QueryType.EQ) + private Integer deliveryType; + + @ApiModelProperty(value = "自提门店ID") + @QueryField(type = QueryType.EQ) + private Integer extractShopId; + + @ApiModelProperty(value = "核销店员ID") + @QueryField(type = QueryType.EQ) + private Integer extractClerkId; + + @ApiModelProperty(value = "运费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal expressPrice; + + @ApiModelProperty(value = "物流公司ID (废弃)") + @QueryField(type = QueryType.EQ) + private Integer expressId; + + @ApiModelProperty(value = "物流单号 (废弃)") + private String expressNo; + + @ApiModelProperty(value = "发货状态(10未发货 20已发货 30部分发货)") + @QueryField(type = QueryType.EQ) + private Integer deliveryStatus; + + @ApiModelProperty(value = "发货时间") + private String deliveryTime; + + @ApiModelProperty(value = "收货状态(10未收货 20已收货)") + @QueryField(type = QueryType.EQ) + private Integer receiptStatus; + + @ApiModelProperty(value = "收货时间") + private String receiptTime; + + @ApiModelProperty(value = "订单状态(10进行中 20取消 21待取消 30已完成)") + @QueryField(type = QueryType.EQ) + private Integer orderStatus; + + @ApiModelProperty(value = "赠送的积分数量") + @QueryField(type = QueryType.EQ) + private Integer pointsBonus; + + @ApiModelProperty(value = "商家备注") + private String merchantRemark; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Integer isSettled; + + @ApiModelProperty(value = "续租订单的关联单号") + @QueryField(type = QueryType.EQ) + private Integer rentOrderId; + + @ApiModelProperty(value = "微信支付交易号(废弃)") + private String transactionId; + + @ApiModelProperty(value = "是否已评价(0否 1是)") + @QueryField(type = QueryType.EQ) + private Integer isComment; + + @ApiModelProperty(value = "订单来源(10普通订单 20砍价订单 30秒杀订单)") + @QueryField(type = QueryType.EQ) + private Integer orderSource; + + @ApiModelProperty(value = "来源记录ID") + @QueryField(type = QueryType.EQ) + private Integer orderSourceId; + + @ApiModelProperty(value = "来源记录的参数 (json格式)") + private String orderSourceData; + + @ApiModelProperty(value = "电池租金") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryRent; + + @ApiModelProperty(value = "电池押金") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryDeposit; + + @ApiModelProperty(value = "保险") + @QueryField(type = QueryType.EQ) + private BigDecimal batteryInsurance; + + @ApiModelProperty(value = "购买月份数量") + @QueryField(type = QueryType.EQ) + private Integer month; + + @ApiModelProperty(value = "服务到期时间") + private String expirationTime; + + @ApiModelProperty(value = "来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "是否续费订单") + @QueryField(type = QueryType.EQ) + private Integer isRenew; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "电池商品ID") + @QueryField(type = QueryType.EQ) + private Integer equipmentId; + + @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/apps/param/EquipmentParam.java b/src/main/java/com/gxwebsoft/apps/param/EquipmentParam.java new file mode 100644 index 0000000..4500138 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/EquipmentParam.java @@ -0,0 +1,127 @@ +package com.gxwebsoft.apps.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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-30 02:11:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "EquipmentParam对象", description = "设备管理查询参数") +public class EquipmentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "设备ID") + @QueryField(type = QueryType.EQ) + private Integer equipmentId; + + @ApiModelProperty(value = "设备名称") + private String equipmentName; + + @ApiModelProperty(value = "设备分类") + private String equipmentCategory; + + @ApiModelProperty(value = "设备编码") + private String equipmentCode; + + @ApiModelProperty(value = "商品分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "头像") + private String equipmentAvatar; + + @ApiModelProperty(value = "电池型号") + private String batteryModel; + + @ApiModelProperty(value = "BMS") + private String bms; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "是否激活") + private String isCtive; + + @ApiModelProperty(value = "工作状态") + private String workingStatus; + + @ApiModelProperty(value = "租赁状态") + private String leaseStatus; + + @ApiModelProperty(value = "电池状态") + private String batteryStatus; + + @ApiModelProperty(value = "电池电量") + private String batteryPower; + + @ApiModelProperty(value = "是否在线") + private String isOnline; + + @ApiModelProperty(value = "总电压") + private String totalVoltage; + + @ApiModelProperty(value = "BMS板供应商") + private String bmsBrand; + + @ApiModelProperty(value = "剩余容量") + private String surplusCapacity; + + @ApiModelProperty(value = "ICCID") + private String iccid; + + @ApiModelProperty(value = "设备激活时间") + private String ctiveTime; + + @ApiModelProperty(value = "电池出厂时间") + private String batteryDeliveryTime; + + @ApiModelProperty(value = "绑定的订单") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + @QueryField(type = QueryType.LIKE) + 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 = "所属商户ID") + @TableField(exist = false) + private Integer merchantId; + + @ApiModelProperty(value = "商户编号") + @QueryField(type = QueryType.EQ) + private String merchantCode; + + @ApiModelProperty(value = "所属商户名称") + @QueryField(type = QueryType.EQ) + private String merchantName; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/EquipmentRecordParam.java b/src/main/java/com/gxwebsoft/apps/param/EquipmentRecordParam.java new file mode 100644 index 0000000..c0cf3bb --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/EquipmentRecordParam.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.apps.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; + +/** + * 前世今生查询参数 + * + * @author 科技小王子 + * @since 2022-12-03 01:23:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "EquipmentRecordParam对象", description = "前世今生查询参数") +public class EquipmentRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "记录ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "设备编码") + private String equipmentCode; + + @ApiModelProperty(value = "事件类型") + private String eventType; + + @ApiModelProperty(value = "请求参数") + private String params; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @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 = "商户编码") + @QueryField(type = QueryType.EQ) + private String merchantCode; + + @ApiModelProperty(value = "商户名称") + @QueryField(type = QueryType.LIKE) + private String merchantName; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/HualalaCardBenefitsParam.java b/src/main/java/com/gxwebsoft/apps/param/HualalaCardBenefitsParam.java new file mode 100644 index 0000000..a7b47a5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/HualalaCardBenefitsParam.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.apps.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; + +/** + * 会员权益查询参数 + * + * @author 科技小王子 + * @since 2023-01-08 12:22:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HualalaCardBenefitsParam对象", description = "会员权益查询参数") +public class HualalaCardBenefitsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "会员等级名称") + private String cardLevelName; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "内容") + private String content; + + @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/apps/param/HualalaCardParam.java b/src/main/java/com/gxwebsoft/apps/param/HualalaCardParam.java new file mode 100644 index 0000000..399f08a --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/HualalaCardParam.java @@ -0,0 +1,130 @@ +package com.gxwebsoft.apps.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-01-08 12:22:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HualalaCardParam对象", description = "查询参数") +public class HualalaCardParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "groupID") + private String groupId; + + @ApiModelProperty(value = "shopID") + private String shopId; + + @ApiModelProperty(value = "网速会员id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "会员卡ID") + private String cardId; + + private String cardTypeId; + + @ApiModelProperty(value = "会员卡等级ID") + private String cardLevelId; + + @ApiModelProperty(value = "会员卡等级名称") + private String cardLevelName; + + @ApiModelProperty(value = "卡状态 10:正常 20:挂失中 30:冻结 40:注销(作废)50:已过期") + private String cardStatus; + + private String customerId; + + @ApiModelProperty(value = "会员卡入会店铺字段") + private String createShopId; + + @ApiModelProperty(value = "入会店铺名称") + private String createShopName; + + @ApiModelProperty(value = "卡号") + private String cardNo; + + @ApiModelProperty(value = "姓名") + private String customerName; + + @ApiModelProperty(value = " 手机号") + private String customerMobile; + + @ApiModelProperty(value = "性别 0:女 1:男 2:未知") + @QueryField(type = QueryType.EQ) + private Integer customerSex; + + @ApiModelProperty(value = "生日") + private String customerBirthday; + + @ApiModelProperty(value = "卡余额") + @QueryField(type = QueryType.EQ) + private BigDecimal cardBalance; + + @ApiModelProperty(value = "积分余额") + @QueryField(type = QueryType.EQ) + private BigDecimal pointBalance; + + @ApiModelProperty(value = "累计储值金额") + @QueryField(type = QueryType.EQ) + private BigDecimal saveMoneyTotal; + + @ApiModelProperty(value = "累计消费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal consumptionTotal; + + @ApiModelProperty(value = "累计消费次数") + @QueryField(type = QueryType.EQ) + private Integer consumptionCount; + + @ApiModelProperty(value = "当前等级积分") + @QueryField(type = QueryType.EQ) + private Integer grade; + + @ApiModelProperty(value = "下一等级积分") + @QueryField(type = QueryType.EQ) + private Integer nextLevelGrade; + + @ApiModelProperty(value = "有效期至(yyyyMMddHHmmss) 0:表示永久有效") + private String expireTime; + + @ApiModelProperty(value = "最后一次交易时间") + private String lastTransTime; + + @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/apps/param/HualalaCartFoodParam.java b/src/main/java/com/gxwebsoft/apps/param/HualalaCartFoodParam.java new file mode 100644 index 0000000..ded0f37 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/HualalaCartFoodParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.apps.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-01-14 14:46:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HualalaCartFoodParam对象", description = "购物车商品查询参数") +public class HualalaCartFoodParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "总数量") + @QueryField(type = QueryType.EQ) + private Integer foodId; + + @ApiModelProperty(value = "菜品名称") + private String foodName; + + @ApiModelProperty(value = "skuId") + private String skuId; + + @ApiModelProperty(value = "店铺id") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @ApiModelProperty(value = "店铺名称") + private String shopName; + + @ApiModelProperty(value = "店铺标志") + private String shopLogo; + + @ApiModelProperty(value = "商品图") + private String coverUrl; + + @ApiModelProperty(value = "售价") + @QueryField(type = QueryType.EQ) + private BigDecimal sellPrice; + + @ApiModelProperty(value = "库存") + @QueryField(type = QueryType.EQ) + private Integer stock; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/HualalaFoodCategoryParam.java b/src/main/java/com/gxwebsoft/apps/param/HualalaFoodCategoryParam.java new file mode 100644 index 0000000..acd1cde --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/HualalaFoodCategoryParam.java @@ -0,0 +1,106 @@ +package com.gxwebsoft.apps.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; + +/** + * 菜品分类查询参数 + * + * @author 科技小王子 + * @since 2023-01-12 09:49:46 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HualalaFoodCategoryParam对象", description = "菜品分类查询参数") +public class HualalaFoodCategoryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "是/否配料分类 0:不是(默认) 1:是") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "名称") + private String foodCategoryName; + + @ApiModelProperty(value = "收入名称") + private String foodSubjectName; + + @ApiModelProperty(value = "菜品Key") + private String foodKey; + + @ApiModelProperty(value = "菜品条目数") + private String foodCount; + + @ApiModelProperty(value = "分类ID") + private String foodCategoryId; + + @ApiModelProperty(value = "分类ID") + private String foodCategoryGroupName; + + @ApiModelProperty(value = "分类Key") + private String foodCategoryKey; + + @ApiModelProperty(value = "记录状态") + private String action; + + @ApiModelProperty(value = "结算系数") + private String settlementProportion; + + @ApiModelProperty(value = "是否启用") + @QueryField(type = QueryType.EQ) + private Integer isActive; + + @ApiModelProperty(value = "是/否配料分类 0:不是(默认) 1:是") + @QueryField(type = QueryType.EQ) + private Integer isBatching; + + @ApiModelProperty(value = "是/否可单独销售 0:不单独销售(默认) 1:可单独销售") + @QueryField(type = QueryType.EQ) + private Integer isSingleSale; + + @ApiModelProperty(value = "分类显示排序值") + @QueryField(type = QueryType.EQ) + private Integer sortIndex; + + @ApiModelProperty(value = "介绍页id") + @QueryField(type = QueryType.EQ) + private Integer adsId; + + @ApiModelProperty(value = "店铺ID") + private String shopId; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "内容") + private String content; + + @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/apps/param/HualalaFoodParam.java b/src/main/java/com/gxwebsoft/apps/param/HualalaFoodParam.java new file mode 100644 index 0000000..a0b33d2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/HualalaFoodParam.java @@ -0,0 +1,299 @@ +package com.gxwebsoft.apps.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; + +/** + * 菜品分类查询参数 + * + * @author 科技小王子 + * @since 2023-01-12 15:34:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HualalaFoodParam对象", description = "菜品分类查询参数") +public class HualalaFoodParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "菜品ID") + private String foodId; + + @ApiModelProperty(value = "菜品Key") + private String foodKey; + + @ApiModelProperty(value = "集团ID") + private String groupId; + + @ApiModelProperty(value = "店铺ID") + private String shopId; + + @ApiModelProperty(value = "菜品条目数") + private String foodCount; + + @ApiModelProperty(value = "pos菜品分类ID") + private String foodCategoryId; + + @ApiModelProperty(value = "pos菜品分类Key") + private String foodCategoryKey; + + @ApiModelProperty(value = "pos菜品分类名称") + private String foodCategoryName; + + @ApiModelProperty(value = "线上菜品分类ID") + private String foodOnlineCategoryId; + + @ApiModelProperty(value = "线上菜品分类Key") + private String foodOnlineCategoryKey; + + @ApiModelProperty(value = "线上菜品分类名称") + private String foodOnlineCategoryName; + + @ApiModelProperty(value = "是/否是配料,false:不是 true:是") + @QueryField(type = QueryType.EQ) + private Integer isBatching; + + @ApiModelProperty(value = "是/否可单独销售 0:不单独销售(默认) 1:可单独销售") + @QueryField(type = QueryType.EQ) + private Integer isSingleSale; + +// @ApiModelProperty(value = "此菜品关联的收入科目key,例如冷菜收入、热菜收入、酒水收入") +// private String foodSubjectKey; +// +// @ApiModelProperty(value = "对应出品部门Key列表") +// private String departmentKeyLst; +// +// @ApiModelProperty(value = "配菜的分类key,在这里选择配菜") +// private String batchingFoodCategoryKey; +// +// @ApiModelProperty(value = "菜品名称") +// private String foodName; +// +// @ApiModelProperty(value = "菜品编号 可用于与三方菜品数据做映射") +// private String foodCode; +// +// @ApiModelProperty(value = "菜品别名") +// private String foodAliasName; +// +// @ApiModelProperty(value = "菜品注记码") +// private String foodMnemonicCode; +// +// @ApiModelProperty(value = "配菜的分类key,在这里选择配菜") +// @QueryField(type = QueryType.EQ) +// private Integer isDiscount; +// +// @QueryField(type = QueryType.EQ) +// private Integer isComments; +// +// @QueryField(type = QueryType.EQ) +// private Integer isActive; +// +// @QueryField(type = QueryType.EQ) +// private Integer isOpen; +// +// @QueryField(type = QueryType.EQ) +// private Integer isSetFood; +// +// private String setFoodDetailJson; +// +// @QueryField(type = QueryType.EQ) +// private Integer isTempFood; +// +// private String units; +// +// private String py; +// +// private String minOrderCount; +// +// private String tasteList; +// +// private String tasteGroupList; +// +// private String makingMethodList; +// +// private String makingMethodGroupList; +// +// @QueryField(type = QueryType.EQ) +// private Integer isSpecialty; +// +// @QueryField(type = QueryType.EQ) +// private Integer isRecommend; +// +// @QueryField(type = QueryType.EQ) +// private Integer isNews; +// +// private String hotTag; +// +// private String salesCount; +// +// @QueryField(type = QueryType.EQ) +// private Integer isNeedConfirmFoodNumber; +// +// private String takeoutPackagingFee; +// +// private String incrementUnit; +// +// @ApiModelProperty(value = "0:堂食 1:堂食,外送,自提 2:外送,自提 3:自提 4:外送 5:堂食,自提 6:堂食,外送") +// private String takeawayTag; +// +// private String workingLunchTag; +// +// private String adsId; +// +// private String imgePath; +// +// @QueryField(type = QueryType.EQ) +// private Integer isHasImage; +// +// private String imageHwp; +// +// private String starLevel; +// +// private String foodTagIds; +// +// private String parentFoodId; +// +// private String foodEnName; +// +// @QueryField(type = QueryType.EQ) +// private Integer isAutoAdd; +// +// @QueryField(type = QueryType.EQ) +// private Integer isCanRefund; +// +// @QueryField(type = QueryType.EQ) +// private Integer setPerson; +// +// @QueryField(type = QueryType.EQ) +// private Integer tasteIsRequired; +// +// @QueryField(type = QueryType.EQ) +// private Integer tasteIsMultiple; +// +// @QueryField(type = QueryType.EQ) +// private Integer makingMethodIsRequired; +// +// @QueryField(type = QueryType.EQ) +// private Integer makingMethodIsMultiple; +// +// private String initClickAmount; +// +// private String actualClickAmount; +// +// private String recentClickAmount; +// +// private String clickAlertMess; +// +// private String sourceFoodId; +// +// private String salesCommission; +// +// private String foodKeyElementLst; +// +// private String foodSortIndex; +// +// private String actionTime; +// +// private String foodSubjectName; +// +// private String foodSubjectCode; +// +// private String departmentId; +// +// private String departmentKey; +// +// private String popularity; +// +// private String detailSplit; +// +// private String batchingIsFoodNumberRate; +// + @ApiModelProperty(value = "分类编号") + private String foodCategoryCode; +// +// @ApiModelProperty(value = "分类英文名") +// private String foodCategoryEnName; +// +// @ApiModelProperty(value = "分类分组名称") +// private String foodCategoryGroupName; +// +// @ApiModelProperty(value = "特价") +// private String specialPrice; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice2; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice3; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice4; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice5; +// +// @ApiModelProperty(value = "特价2") +// private String specialPrice6; +// +// @ApiModelProperty(value = "特价2") +// private String onlineWmPrice; +// +// @ApiModelProperty(value = "标签ids") +// private String tagIds; +// +// @ApiModelProperty(value = "标签名称") +// private String tagNames; +// +// @ApiModelProperty(value = "礼品券ID") +// private String giftItemId; +// +// @ApiModelProperty(value = "礼品券有效期") +// private String giftValidPeriod; +// +// @ApiModelProperty(value = "菜品分类说明") +// private String description; +// +// @ApiModelProperty(value = "记录状态") +// private String action; +// +// @ApiModelProperty(value = "结算系数") +// private String settlementProportion; +// +// @ApiModelProperty(value = "分类显示排序值") +// @QueryField(type = QueryType.EQ) +// private Integer sortIndex; +// +// @ApiModelProperty(value = "封面图") +// private String image; +// +// @ApiModelProperty(value = "内容") +// private String content; +// +// @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/apps/param/HualalaParam.java b/src/main/java/com/gxwebsoft/apps/param/HualalaParam.java new file mode 100644 index 0000000..256288d --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/HualalaParam.java @@ -0,0 +1,34 @@ +package com.gxwebsoft.apps.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.util.HashMap; + +/** + * 常用链接推荐记录表查询参数 + * + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HualalaParam对象", description = "哗啦啦请求参数") +public class HualalaParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "接口地址") + private String apiUrl; + + @ApiModelProperty(value = "请求参数") + private HashMap params; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/HualalaShopParam.java b/src/main/java/com/gxwebsoft/apps/param/HualalaShopParam.java new file mode 100644 index 0000000..295711d --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/HualalaShopParam.java @@ -0,0 +1,97 @@ +package com.gxwebsoft.apps.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; + +/** + * 哗啦啦门店管理查询参数 + * + * @author 科技小王子 + * @since 2023-01-12 18:24:44 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "HualalaShopParam对象", description = "哗啦啦门店管理查询参数") +public class HualalaShopParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "店铺ID") + @QueryField(type = QueryType.EQ) + private Long shopId; + + @ApiModelProperty(value = "店铺名称") + private String shopName; + + @ApiModelProperty(value = "店铺logo") + private String logoUrl; + + @ApiModelProperty(value = "所在城市ID") + private String shopCity; + + @ApiModelProperty(value = "所在城市") + private String shopCityName; + + @ApiModelProperty(value = "营业时间") + private String shopOpenTime; + + @ApiModelProperty(value = "店内电话") + private String shopPhone; + + @ApiModelProperty(value = "HLL") + private String acspType; + + @ApiModelProperty(value = "1") + private String action; + + @ApiModelProperty(value = "20230111104803") + private String actionTime; + + @ApiModelProperty(value = "品牌ID") + private String brandId; + + @ApiModelProperty(value = "品牌名称") + private String brandName; + + @ApiModelProperty(value = "1") + private String businessModel; + + @ApiModelProperty(value = "图片") + private String imagePath; + + @ApiModelProperty(value = "22.7913010") + private String mapLatitudeValueBaiDu; + + @ApiModelProperty(value = "108.3312800") + private String mapLongitudeValueBaiDu; + + @ApiModelProperty(value = "0") + @QueryField(type = QueryType.EQ) + private Integer operationMode; + + @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 = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/HxzParam.java b/src/main/java/com/gxwebsoft/apps/param/HxzParam.java new file mode 100644 index 0000000..7f8b7a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/HxzParam.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 消费机请求参数 + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "消费机请求参数", description = "消费机请求参数") +public class HxzParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "交易模式(0:扣费 1:充值3:信息查询)") + @TableField(exist = false) + private String Mode; + + @ApiModelProperty(value = "扣费类型(0:手动 1:菜单 2:定值 3:取餐 4:计时)") + @TableField(exist = false) + private Integer PayType; + + @ApiModelProperty(value = "消费金额(Mode为3时,此字段传入值可能为0)") + @TableField(exist = false) + private BigDecimal Amount; + + @ApiModelProperty(value = "消费菜品列表") + @TableField(exist = false) + private List Menus; + + @ApiModelProperty(value = "扫描到的二维码字符串(最大长度为200)") + @TableField(exist = false) + private String QR; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/LinkParam.java b/src/main/java/com/gxwebsoft/apps/param/LinkParam.java new file mode 100644 index 0000000..30cf914 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/LinkParam.java @@ -0,0 +1,71 @@ +package com.gxwebsoft.apps.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; + +/** + * 常用链接推荐记录表查询参数 + * + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "LinkParam对象", description = "常用链接推荐记录表查询参数") +public class LinkParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "链接ID") + @QueryField(type = QueryType.EQ) + private Integer linkId; + + @ApiModelProperty(value = "链接名称") + private String linkName; + + @ApiModelProperty(value = "链接图标") + private String linkIcon; + + @ApiModelProperty(value = "路由地址") + private String linkPath; + + @ApiModelProperty(value = "组件路径") + private String linkComponent; + + @ApiModelProperty(value = "链接类型") + private String type; + + @ApiModelProperty(value = "点击次数") + @QueryField(type = QueryType.EQ) + private Integer clicks; + + @ApiModelProperty(value = "推荐理由") + private String comments; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "商户编号") + @QueryField(type = QueryType.EQ) + private String merchantCode; + +} diff --git a/src/main/java/com/gxwebsoft/apps/param/TestDataParam.java b/src/main/java/com/gxwebsoft/apps/param/TestDataParam.java new file mode 100644 index 0000000..44d6d61 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/param/TestDataParam.java @@ -0,0 +1,35 @@ +package com.gxwebsoft.apps.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; + +/** + * 测试数据表查询参数 + * + * @author 科技小王子 + * @since 2023-02-01 12:13:46 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TestDataParam对象", description = "测试数据表查询参数") +public class TestDataParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "内容") + private String content; + +} diff --git a/src/main/java/com/gxwebsoft/apps/result/AllShopResult.java b/src/main/java/com/gxwebsoft/apps/result/AllShopResult.java new file mode 100644 index 0000000..0416489 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/result/AllShopResult.java @@ -0,0 +1,33 @@ +package com.gxwebsoft.apps.result; + +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.shop.entity.Merchant; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 店铺菜品返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "店铺详情结果") +public class AllShopResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("返回参数") + private Object result; + + @ApiModelProperty("店铺详情") + private List shopInfoList; + +} diff --git a/src/main/java/com/gxwebsoft/apps/result/CartResult.java b/src/main/java/com/gxwebsoft/apps/result/CartResult.java new file mode 100644 index 0000000..524d75d --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/result/CartResult.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.apps.result; + +import com.gxwebsoft.apps.entity.BcCart; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 操作购物车信息 + */ +@Data +public class CartResult { + String deliveryTime; // 预定日期 + Integer totalNum; // 总数 + BigDecimal totalPrice; // 总结 + List items;// 商品列表 +} diff --git a/src/main/java/com/gxwebsoft/apps/result/FoodCategoryResult.java b/src/main/java/com/gxwebsoft/apps/result/FoodCategoryResult.java new file mode 100644 index 0000000..0b10470 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/result/FoodCategoryResult.java @@ -0,0 +1,33 @@ +package com.gxwebsoft.apps.result; + +import com.gxwebsoft.apps.entity.HualalaFood; +import com.gxwebsoft.apps.entity.HualalaFoodCategory; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 店铺菜品返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "店铺菜品结果") +public class FoodCategoryResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("公共返回参数") + private Object result; + + @ApiModelProperty("菜品分类") + private List foodCategory; + +} diff --git a/src/main/java/com/gxwebsoft/apps/result/OpenFoodResult.java b/src/main/java/com/gxwebsoft/apps/result/OpenFoodResult.java new file mode 100644 index 0000000..bbefe3e --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/result/OpenFoodResult.java @@ -0,0 +1,36 @@ +package com.gxwebsoft.apps.result; + +import com.gxwebsoft.apps.entity.HualalaFood; +import com.gxwebsoft.shop.entity.Merchant; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 店铺菜品返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "店铺菜品列表结果") +public class OpenFoodResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("返回参数") + private Object result; + + @ApiModelProperty("店铺菜品列表") + private List foodList; + + @ApiModelProperty(value = "记录数") + private Integer count; + +} diff --git a/src/main/java/com/gxwebsoft/apps/result/OperateVo.java b/src/main/java/com/gxwebsoft/apps/result/OperateVo.java new file mode 100644 index 0000000..6c36a3f --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/result/OperateVo.java @@ -0,0 +1,17 @@ +package com.gxwebsoft.apps.result; + +import com.gxwebsoft.apps.entity.ItemVo; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 操作购物车信息 + */ +@Data +public class OperateVo { + private Integer totalNum;// 总数 + private BigDecimal totalPrice;// 售价 + private List items; // 菜品列表列表(选择购物车时使用) +} diff --git a/src/main/java/com/gxwebsoft/apps/result/ShopBaseInfoResult.java b/src/main/java/com/gxwebsoft/apps/result/ShopBaseInfoResult.java new file mode 100644 index 0000000..5567476 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/result/ShopBaseInfoResult.java @@ -0,0 +1,32 @@ +package com.gxwebsoft.apps.result; + +import com.gxwebsoft.apps.entity.HualalaFoodCategory; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 店铺菜品返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "店铺详情结果") +public class ShopBaseInfoResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("返回参数") + private Object result; + + @ApiModelProperty("店铺详情") + private Object shopBaseInfo; + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/BcAgentService.java b/src/main/java/com/gxwebsoft/apps/service/BcAgentService.java new file mode 100644 index 0000000..53cf4e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/BcAgentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.BcAgent; +import com.gxwebsoft.apps.param.BcAgentParam; + +import java.util.List; + +/** + * 代报餐管理Service + * + * @author 科技小王子 + * @since 2023-04-24 19:25:59 + */ +public interface BcAgentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BcAgentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BcAgentParam param); + + /** + * 根据id查询 + * + * @param agentId 自增ID + * @return BcAgent + */ + BcAgent getByIdRel(Integer agentId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/BcCookbookService.java b/src/main/java/com/gxwebsoft/apps/service/BcCookbookService.java new file mode 100644 index 0000000..3f69500 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/BcCookbookService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.BcCookbook; +import com.gxwebsoft.apps.param.BcCookbookParam; + +import java.util.List; + +/** + * 常用菜谱Service + * + * @author 科技小王子 + * @since 2023-05-05 14:56:54 + */ +public interface BcCookbookService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BcCookbookParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BcCookbookParam param); + + /** + * 根据id查询 + * + * @param cookbookId 自增ID + * @return BcCookbook + */ + BcCookbook getByIdRel(Integer cookbookId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/BcEquipmentService.java b/src/main/java/com/gxwebsoft/apps/service/BcEquipmentService.java new file mode 100644 index 0000000..242e855 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/BcEquipmentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.BcEquipment; +import com.gxwebsoft.apps.param.BcEquipmentParam; + +import java.util.List; + +/** + * 报餐设备管理Service + * + * @author 科技小王子 + * @since 2023-05-02 10:34:40 + */ +public interface BcEquipmentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BcEquipmentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BcEquipmentParam param); + + /** + * 根据id查询 + * + * @param bcEquipmentId 设备ID + * @return BcEquipment + */ + BcEquipment getByIdRel(Integer bcEquipmentId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/BcExportService.java b/src/main/java/com/gxwebsoft/apps/service/BcExportService.java new file mode 100644 index 0000000..48b1cb5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/BcExportService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.BcExport; +import com.gxwebsoft.apps.param.BcExportParam; + +import java.util.List; + +/** + * 报餐统计导出Service + * + * @author 科技小王子 + * @since 2023-06-01 21:47:02 + */ +public interface BcExportService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BcExportParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BcExportParam param); + + /** + * 根据id查询 + * + * @param exportId 自增ID + * @return BcExport + */ + BcExport getByIdRel(Integer exportId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/BcFoodService.java b/src/main/java/com/gxwebsoft/apps/service/BcFoodService.java new file mode 100644 index 0000000..6add5ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/BcFoodService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.BcFood; +import com.gxwebsoft.apps.param.BcFoodParam; + +import java.util.List; + +/** + * 发布菜品明细Service + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +public interface BcFoodService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BcFoodParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BcFoodParam param); + + /** + * 根据id查询 + * + * @param bcFoodId 自增ID + * @return BcFood + */ + BcFood getByIdRel(Integer bcFoodId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/BcPlanService.java b/src/main/java/com/gxwebsoft/apps/service/BcPlanService.java new file mode 100644 index 0000000..f47d9c0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/BcPlanService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.BcPlan; +import com.gxwebsoft.apps.param.BcPlanParam; + +import java.util.List; + +/** + * 菜品发布管理Service + * + * @author 科技小王子 + * @since 2023-04-27 17:59:40 + */ +public interface BcPlanService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BcPlanParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BcPlanParam param); + + /** + * 根据id查询 + * + * @param bcPlanId 自增ID + * @return BcPlan + */ + BcPlan getByIdRel(Integer bcPlanId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/BcTemporaryService.java b/src/main/java/com/gxwebsoft/apps/service/BcTemporaryService.java new file mode 100644 index 0000000..d56f39b --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/BcTemporaryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.BcTemporary; +import com.gxwebsoft.apps.param.BcTemporaryParam; + +import java.util.List; + +/** + * 临时报餐管理Service + * + * @author 科技小王子 + * @since 2023-04-24 21:47:57 + */ +public interface BcTemporaryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(BcTemporaryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(BcTemporaryParam param); + + /** + * 根据id查询 + * + * @param temporaryId 自增ID + * @return BcTemporary + */ + BcTemporary getByIdRel(Integer temporaryId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/CashierService.java b/src/main/java/com/gxwebsoft/apps/service/CashierService.java new file mode 100644 index 0000000..918f481 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/CashierService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.Cashier; +import com.gxwebsoft.apps.param.CashierParam; + +import java.util.List; + +/** + * 海牛收银台记录表Service + * + * @author WebSoft + * @since 2022-11-18 11:47:09 + */ +public interface CashierService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CashierParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CashierParam param); + + /** + * 根据id查询 + * + * @param cashierId ID + * @return Cashier + */ + Cashier getByIdRel(Integer cashierId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/EquipmentAlarmService.java b/src/main/java/com/gxwebsoft/apps/service/EquipmentAlarmService.java new file mode 100644 index 0000000..5c46a13 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/EquipmentAlarmService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.EquipmentAlarm; +import com.gxwebsoft.apps.param.EquipmentAlarmParam; + +import java.util.List; + +/** + * 故障报警记录Service + * + * @author 科技小王子 + * @since 2022-12-01 23:49:44 + */ +public interface EquipmentAlarmService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(EquipmentAlarmParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(EquipmentAlarmParam param); + + /** + * 根据id查询 + * + * @param id 记录ID + * @return EquipmentAlarm + */ + EquipmentAlarm getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/EquipmentFaultService.java b/src/main/java/com/gxwebsoft/apps/service/EquipmentFaultService.java new file mode 100644 index 0000000..513bed5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/EquipmentFaultService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.EquipmentFault; +import com.gxwebsoft.apps.param.EquipmentFaultParam; + +import java.util.List; + +/** + * 故障电池Service + * + * @author 科技小王子 + * @since 2022-12-01 18:40:25 + */ +public interface EquipmentFaultService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(EquipmentFaultParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(EquipmentFaultParam param); + + /** + * 根据id查询 + * + * @param id 记录ID + * @return EquipmentFault + */ + EquipmentFault getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/EquipmentGoodsService.java b/src/main/java/com/gxwebsoft/apps/service/EquipmentGoodsService.java new file mode 100644 index 0000000..26b88d7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/EquipmentGoodsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.EquipmentGoods; +import com.gxwebsoft.apps.param.EquipmentGoodsParam; + +import java.util.List; + +/** + * 电池管理记录表Service + * + * @author 科技小王子 + * @since 2023-02-28 22:40:50 + */ +public interface EquipmentGoodsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(EquipmentGoodsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(EquipmentGoodsParam param); + + /** + * 根据id查询 + * + * @param goodsId 商品ID + * @return EquipmentGoods + */ + EquipmentGoods getByIdRel(Integer goodsId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/EquipmentOrderGoodsService.java b/src/main/java/com/gxwebsoft/apps/service/EquipmentOrderGoodsService.java new file mode 100644 index 0000000..3b96ce5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/EquipmentOrderGoodsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.EquipmentOrderGoods; +import com.gxwebsoft.apps.param.EquipmentOrderGoodsParam; + +import java.util.List; + +/** + * 电池管理记录表Service + * + * @author 科技小王子 + * @since 2023-05-11 19:10:13 + */ +public interface EquipmentOrderGoodsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(EquipmentOrderGoodsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(EquipmentOrderGoodsParam param); + + /** + * 根据id查询 + * + * @param orderGoodsId 商品ID + * @return EquipmentOrderGoods + */ + EquipmentOrderGoods getByIdRel(Integer orderGoodsId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/EquipmentOrderService.java b/src/main/java/com/gxwebsoft/apps/service/EquipmentOrderService.java new file mode 100644 index 0000000..c754615 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/EquipmentOrderService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.EquipmentOrder; +import com.gxwebsoft.apps.param.EquipmentOrderParam; + +import java.util.List; + +/** + * 订单记录表Service + * + * @author 科技小王子 + * @since 2023-04-14 21:24:31 + */ +public interface EquipmentOrderService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(EquipmentOrderParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(EquipmentOrderParam param); + + /** + * 根据id查询 + * + * @param orderId 订单ID + * @return EquipmentOrder + */ + EquipmentOrder getByIdRel(Integer orderId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/EquipmentRecordService.java b/src/main/java/com/gxwebsoft/apps/service/EquipmentRecordService.java new file mode 100644 index 0000000..d4655a2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/EquipmentRecordService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.EquipmentRecord; +import com.gxwebsoft.apps.param.EquipmentRecordParam; + +import java.util.List; + +/** + * 前世今生Service + * + * @author 科技小王子 + * @since 2022-12-03 01:23:53 + */ +public interface EquipmentRecordService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(EquipmentRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(EquipmentRecordParam param); + + /** + * 根据id查询 + * + * @param id 记录ID + * @return EquipmentRecord + */ + EquipmentRecord getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/EquipmentService.java b/src/main/java/com/gxwebsoft/apps/service/EquipmentService.java new file mode 100644 index 0000000..246e367 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/EquipmentService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.apps.param.EquipmentParam; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 设备管理Service + * + * @author 科技小王子 + * @since 2022-11-30 02:11:16 + */ +public interface EquipmentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(EquipmentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(EquipmentParam param); + + /** + * 根据id查询 + * + * @param equipmentId 设备ID + * @return Equipment + */ + Equipment getByIdRel(Integer equipmentId); + + Equipment getByEquipmentCode(String equipmentCode); +} diff --git a/src/main/java/com/gxwebsoft/apps/service/HualalaCardBenefitsService.java b/src/main/java/com/gxwebsoft/apps/service/HualalaCardBenefitsService.java new file mode 100644 index 0000000..d23c787 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/HualalaCardBenefitsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.HualalaCardBenefits; +import com.gxwebsoft.apps.param.HualalaCardBenefitsParam; + +import java.util.List; + +/** + * 会员权益Service + * + * @author 科技小王子 + * @since 2023-01-08 12:22:50 + */ +public interface HualalaCardBenefitsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HualalaCardBenefitsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HualalaCardBenefitsParam param); + + /** + * 根据id查询 + * + * @param id + * @return HualalaCardBenefits + */ + HualalaCardBenefits getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/HualalaCardService.java b/src/main/java/com/gxwebsoft/apps/service/HualalaCardService.java new file mode 100644 index 0000000..2d2da4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/HualalaCardService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.HualalaCard; +import com.gxwebsoft.apps.param.HualalaCardParam; + +import java.util.List; + +/** + * Service + * + * @author 科技小王子 + * @since 2023-01-08 12:22:50 + */ +public interface HualalaCardService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HualalaCardParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HualalaCardParam param); + + /** + * 根据id查询 + * + * @param id + * @return HualalaCard + */ + HualalaCard getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/HualalaCartFoodService.java b/src/main/java/com/gxwebsoft/apps/service/HualalaCartFoodService.java new file mode 100644 index 0000000..4c6a591 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/HualalaCartFoodService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.HualalaCartFood; +import com.gxwebsoft.apps.param.HualalaCartFoodParam; + +import java.util.List; + +/** + * 购物车商品Service + * + * @author 科技小王子 + * @since 2023-01-14 14:46:44 + */ +public interface HualalaCartFoodService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HualalaCartFoodParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HualalaCartFoodParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return HualalaCartFood + */ + HualalaCartFood getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/HualalaFoodCategoryService.java b/src/main/java/com/gxwebsoft/apps/service/HualalaFoodCategoryService.java new file mode 100644 index 0000000..33b298f --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/HualalaFoodCategoryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.HualalaFoodCategory; +import com.gxwebsoft.apps.param.HualalaFoodCategoryParam; + +import java.util.List; + +/** + * 菜品分类Service + * + * @author 科技小王子 + * @since 2023-01-12 09:49:46 + */ +public interface HualalaFoodCategoryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HualalaFoodCategoryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HualalaFoodCategoryParam param); + + /** + * 根据id查询 + * + * @param id + * @return HualalaFoodCategory + */ + HualalaFoodCategory getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/HualalaFoodService.java b/src/main/java/com/gxwebsoft/apps/service/HualalaFoodService.java new file mode 100644 index 0000000..6da9cb5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/HualalaFoodService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.HualalaFood; +import com.gxwebsoft.apps.param.HualalaFoodParam; + +import java.util.List; + +/** + * 菜品分类Service + * + * @author 科技小王子 + * @since 2023-01-12 15:34:55 + */ +public interface HualalaFoodService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HualalaFoodParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HualalaFoodParam param); + + /** + * 根据id查询 + * + * @param id + * @return HualalaFood + */ + HualalaFood getByIdRel(Integer id); + + HualalaFood getByFoodId(Integer foodId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/HualalaService.java b/src/main/java/com/gxwebsoft/apps/service/HualalaService.java new file mode 100644 index 0000000..a64d839 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/HualalaService.java @@ -0,0 +1,32 @@ +package com.gxwebsoft.apps.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.apps.entity.Hualala; +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.apps.entity.Link; +import com.gxwebsoft.apps.param.HualalaShopParam; +import com.gxwebsoft.apps.param.LinkParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Order; + +import java.util.List; +import java.util.Map; + +/** + * 哗啦啦Service + * + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +public interface HualalaService extends IService { + + /** + * 请求哗啦啦接口并返回结果 + * @param requestBody + * @return + */ + JSONObject doPost(String url, Map requestBody); + + JSONObject doExpress(Order orderInfo); +} diff --git a/src/main/java/com/gxwebsoft/apps/service/HualalaShopService.java b/src/main/java/com/gxwebsoft/apps/service/HualalaShopService.java new file mode 100644 index 0000000..f4b73a5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/HualalaShopService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.apps.param.HualalaShopParam; + +import java.util.List; + +/** + * 哗啦啦门店管理Service + * + * @author 科技小王子 + * @since 2023-01-12 18:24:44 + */ +public interface HualalaShopService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(HualalaShopParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(HualalaShopParam param); + + /** + * 根据id查询 + * + * @param shopId 店铺ID + * @return HualalaShop + */ + HualalaShop getByIdRel(Integer shopId); + + List listByGeo(HualalaShopParam param); + void saveGeoPointToRedis(); +} diff --git a/src/main/java/com/gxwebsoft/apps/service/LinkService.java b/src/main/java/com/gxwebsoft/apps/service/LinkService.java new file mode 100644 index 0000000..29291d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/LinkService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.Link; +import com.gxwebsoft.apps.param.LinkParam; + +import java.util.List; + +/** + * 常用链接推荐记录表Service + * + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +public interface LinkService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(LinkParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(LinkParam param); + + /** + * 根据id查询 + * + * @param linkId 链接ID + * @return Link + */ + Link getByIdRel(Integer linkId); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/TestDataService.java b/src/main/java/com/gxwebsoft/apps/service/TestDataService.java new file mode 100644 index 0000000..e5878f2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/TestDataService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.apps.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.apps.entity.TestData; +import com.gxwebsoft.apps.param.TestDataParam; + +import java.util.List; + +/** + * 测试数据表Service + * + * @author 科技小王子 + * @since 2023-02-01 12:13:46 + */ +public interface TestDataService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TestDataParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TestDataParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return TestData + */ + TestData getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/BcAgentServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/BcAgentServiceImpl.java new file mode 100644 index 0000000..87416aa --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/BcAgentServiceImpl.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.BcAgentMapper; +import com.gxwebsoft.apps.service.BcAgentService; +import com.gxwebsoft.apps.entity.BcAgent; +import com.gxwebsoft.apps.param.BcAgentParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 代报餐管理Service实现 + * + * @author 科技小王子 + * @since 2023-04-24 19:25:59 + */ +@Service +public class BcAgentServiceImpl extends ServiceImpl implements BcAgentService { + + @Resource + private UserService userService; + + @Override + public PageResult pageRel(BcAgentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); +// list.forEach( d-> { +// d.setUser(userService.getById(d.getUserId())); +// d.setParentUser(userService.getById(d.getParentId())); +// }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BcAgentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public BcAgent getByIdRel(Integer agentId) { + BcAgentParam param = new BcAgentParam(); + param.setAgentId(agentId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/BcCookbookServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/BcCookbookServiceImpl.java new file mode 100644 index 0000000..826e319 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/BcCookbookServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.BcCookbookMapper; +import com.gxwebsoft.apps.service.BcCookbookService; +import com.gxwebsoft.apps.entity.BcCookbook; +import com.gxwebsoft.apps.param.BcCookbookParam; +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-05-05 14:56:54 + */ +@Service +public class BcCookbookServiceImpl extends ServiceImpl implements BcCookbookService { + + @Override + public PageResult pageRel(BcCookbookParam 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(BcCookbookParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public BcCookbook getByIdRel(Integer cookbookId) { + BcCookbookParam param = new BcCookbookParam(); + param.setCookbookId(cookbookId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/BcEquipmentServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/BcEquipmentServiceImpl.java new file mode 100644 index 0000000..e6a59d9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/BcEquipmentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.BcEquipmentMapper; +import com.gxwebsoft.apps.service.BcEquipmentService; +import com.gxwebsoft.apps.entity.BcEquipment; +import com.gxwebsoft.apps.param.BcEquipmentParam; +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-05-02 10:34:40 + */ +@Service +public class BcEquipmentServiceImpl extends ServiceImpl implements BcEquipmentService { + + @Override + public PageResult pageRel(BcEquipmentParam 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(BcEquipmentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public BcEquipment getByIdRel(Integer bcEquipmentId) { + BcEquipmentParam param = new BcEquipmentParam(); + param.setBcEquipmentId(bcEquipmentId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/BcExportServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/BcExportServiceImpl.java new file mode 100644 index 0000000..3bb6921 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/BcExportServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.BcExportMapper; +import com.gxwebsoft.apps.service.BcExportService; +import com.gxwebsoft.apps.entity.BcExport; +import com.gxwebsoft.apps.param.BcExportParam; +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-06-01 21:47:02 + */ +@Service +public class BcExportServiceImpl extends ServiceImpl implements BcExportService { + + @Override + public PageResult pageRel(BcExportParam 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(BcExportParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public BcExport getByIdRel(Integer exportId) { + BcExportParam param = new BcExportParam(); + param.setExportId(exportId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/BcFoodServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/BcFoodServiceImpl.java new file mode 100644 index 0000000..8ba309f --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/BcFoodServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.BcFoodMapper; +import com.gxwebsoft.apps.service.BcFoodService; +import com.gxwebsoft.apps.entity.BcFood; +import com.gxwebsoft.apps.param.BcFoodParam; +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-04-27 17:59:40 + */ +@Service +public class BcFoodServiceImpl extends ServiceImpl implements BcFoodService { + + @Override + public PageResult pageRel(BcFoodParam 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(BcFoodParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public BcFood getByIdRel(Integer bcFoodId) { + BcFoodParam param = new BcFoodParam(); + param.setBcFoodId(bcFoodId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/BcPlanServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/BcPlanServiceImpl.java new file mode 100644 index 0000000..1e01cb2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/BcPlanServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.BcPlanMapper; +import com.gxwebsoft.apps.service.BcPlanService; +import com.gxwebsoft.apps.entity.BcPlan; +import com.gxwebsoft.apps.param.BcPlanParam; +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-04-27 17:59:40 + */ +@Service +public class BcPlanServiceImpl extends ServiceImpl implements BcPlanService { + + @Override + public PageResult pageRel(BcPlanParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("day_time desc, create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(BcPlanParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("day_time desc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public BcPlan getByIdRel(Integer bcPlanId) { + BcPlanParam param = new BcPlanParam(); + param.setBcPlanId(bcPlanId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/BcTemporaryServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/BcTemporaryServiceImpl.java new file mode 100644 index 0000000..e261632 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/BcTemporaryServiceImpl.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.BcTemporaryMapper; +import com.gxwebsoft.apps.service.BcTemporaryService; +import com.gxwebsoft.apps.entity.BcTemporary; +import com.gxwebsoft.apps.param.BcTemporaryParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 临时报餐管理Service实现 + * + * @author 科技小王子 + * @since 2023-04-24 21:47:57 + */ +@Service +public class BcTemporaryServiceImpl extends ServiceImpl implements BcTemporaryService { + + @Resource + private UserService userService; + + @Override + public PageResult pageRel(BcTemporaryParam 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(BcTemporaryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public BcTemporary getByIdRel(Integer temporaryId) { + BcTemporaryParam param = new BcTemporaryParam(); + param.setTemporaryId(temporaryId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/CashierServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/CashierServiceImpl.java new file mode 100644 index 0000000..5e10978 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/CashierServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.CashierMapper; +import com.gxwebsoft.apps.service.CashierService; +import com.gxwebsoft.apps.entity.Cashier; +import com.gxwebsoft.apps.param.CashierParam; +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 WebSoft + * @since 2022-11-18 11:47:09 + */ +@Service +public class CashierServiceImpl extends ServiceImpl implements CashierService { + + @Override + public PageResult pageRel(CashierParam 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(CashierParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Cashier getByIdRel(Integer cashierId) { + CashierParam param = new CashierParam(); + param.setCashierId(cashierId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentAlarmServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentAlarmServiceImpl.java new file mode 100644 index 0000000..a724c4a --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentAlarmServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.EquipmentAlarmMapper; +import com.gxwebsoft.apps.service.EquipmentAlarmService; +import com.gxwebsoft.apps.entity.EquipmentAlarm; +import com.gxwebsoft.apps.param.EquipmentAlarmParam; +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 2022-12-01 23:49:44 + */ +@Service +public class EquipmentAlarmServiceImpl extends ServiceImpl implements EquipmentAlarmService { + + @Override + public PageResult pageRel(EquipmentAlarmParam 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(EquipmentAlarmParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public EquipmentAlarm getByIdRel(Integer id) { + EquipmentAlarmParam param = new EquipmentAlarmParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentFaultServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentFaultServiceImpl.java new file mode 100644 index 0000000..8cc4a12 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentFaultServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.EquipmentFaultMapper; +import com.gxwebsoft.apps.service.EquipmentFaultService; +import com.gxwebsoft.apps.entity.EquipmentFault; +import com.gxwebsoft.apps.param.EquipmentFaultParam; +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 2022-12-01 18:40:25 + */ +@Service +public class EquipmentFaultServiceImpl extends ServiceImpl implements EquipmentFaultService { + + @Override + public PageResult pageRel(EquipmentFaultParam 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(EquipmentFaultParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public EquipmentFault getByIdRel(Integer id) { + EquipmentFaultParam param = new EquipmentFaultParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentGoodsServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentGoodsServiceImpl.java new file mode 100644 index 0000000..97449e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentGoodsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.EquipmentGoodsMapper; +import com.gxwebsoft.apps.service.EquipmentGoodsService; +import com.gxwebsoft.apps.entity.EquipmentGoods; +import com.gxwebsoft.apps.param.EquipmentGoodsParam; +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-02-28 22:40:50 + */ +@Service +public class EquipmentGoodsServiceImpl extends ServiceImpl implements EquipmentGoodsService { + + @Override + public PageResult pageRel(EquipmentGoodsParam 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(EquipmentGoodsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public EquipmentGoods getByIdRel(Integer goodsId) { + EquipmentGoodsParam param = new EquipmentGoodsParam(); + param.setGoodsId(goodsId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentOrderGoodsServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentOrderGoodsServiceImpl.java new file mode 100644 index 0000000..346bfcd --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentOrderGoodsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.EquipmentOrderGoodsMapper; +import com.gxwebsoft.apps.service.EquipmentOrderGoodsService; +import com.gxwebsoft.apps.entity.EquipmentOrderGoods; +import com.gxwebsoft.apps.param.EquipmentOrderGoodsParam; +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-05-11 19:10:13 + */ +@Service +public class EquipmentOrderGoodsServiceImpl extends ServiceImpl implements EquipmentOrderGoodsService { + + @Override + public PageResult pageRel(EquipmentOrderGoodsParam 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(EquipmentOrderGoodsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public EquipmentOrderGoods getByIdRel(Integer orderGoodsId) { + EquipmentOrderGoodsParam param = new EquipmentOrderGoodsParam(); + param.setOrderGoodsId(orderGoodsId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentOrderServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentOrderServiceImpl.java new file mode 100644 index 0000000..17dc8b8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentOrderServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.EquipmentOrderMapper; +import com.gxwebsoft.apps.service.EquipmentOrderService; +import com.gxwebsoft.apps.entity.EquipmentOrder; +import com.gxwebsoft.apps.param.EquipmentOrderParam; +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-04-14 21:24:31 + */ +@Service +public class EquipmentOrderServiceImpl extends ServiceImpl implements EquipmentOrderService { + + @Override + public PageResult pageRel(EquipmentOrderParam 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(EquipmentOrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public EquipmentOrder getByIdRel(Integer orderId) { + EquipmentOrderParam param = new EquipmentOrderParam(); + param.setOrderId(orderId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentRecordServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentRecordServiceImpl.java new file mode 100644 index 0000000..153194a --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentRecordServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.EquipmentRecordMapper; +import com.gxwebsoft.apps.service.EquipmentRecordService; +import com.gxwebsoft.apps.entity.EquipmentRecord; +import com.gxwebsoft.apps.param.EquipmentRecordParam; +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 2022-12-03 01:23:53 + */ +@Service +public class EquipmentRecordServiceImpl extends ServiceImpl implements EquipmentRecordService { + + @Override + public PageResult pageRel(EquipmentRecordParam 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(EquipmentRecordParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public EquipmentRecord getByIdRel(Integer id) { + EquipmentRecordParam param = new EquipmentRecordParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentServiceImpl.java new file mode 100644 index 0000000..ad81d60 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/EquipmentServiceImpl.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.EquipmentMapper; +import com.gxwebsoft.apps.service.EquipmentService; +import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.apps.param.EquipmentParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 设备管理Service实现 + * + * @author 科技小王子 + * @since 2022-11-30 02:11:16 + */ +@Service +public class EquipmentServiceImpl extends ServiceImpl implements EquipmentService { + @Resource + private UserService userService; + + @Override + public PageResult pageRel(EquipmentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + // 查询绑定电池的用户 + for(Equipment equipment : list){ + if(!equipment.getUserId().equals(0)){ + equipment.setUser(userService.getById(equipment.getUserId())); + } + } + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(EquipmentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Equipment getByIdRel(Integer equipmentId) { + EquipmentParam param = new EquipmentParam(); + param.setEquipmentId(equipmentId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public Equipment getByEquipmentCode(String equipmentCode) { + return query().eq("equipment_code", equipmentCode).one(); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCardBenefitsServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCardBenefitsServiceImpl.java new file mode 100644 index 0000000..7b0cf3b --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCardBenefitsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.HualalaCardBenefitsMapper; +import com.gxwebsoft.apps.service.HualalaCardBenefitsService; +import com.gxwebsoft.apps.entity.HualalaCardBenefits; +import com.gxwebsoft.apps.param.HualalaCardBenefitsParam; +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-01-08 12:22:50 + */ +@Service +public class HualalaCardBenefitsServiceImpl extends ServiceImpl implements HualalaCardBenefitsService { + + @Override + public PageResult pageRel(HualalaCardBenefitsParam 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(HualalaCardBenefitsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public HualalaCardBenefits getByIdRel(Integer id) { + HualalaCardBenefitsParam param = new HualalaCardBenefitsParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCardServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCardServiceImpl.java new file mode 100644 index 0000000..30dff53 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCardServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.HualalaCardMapper; +import com.gxwebsoft.apps.service.HualalaCardService; +import com.gxwebsoft.apps.entity.HualalaCard; +import com.gxwebsoft.apps.param.HualalaCardParam; +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-01-08 12:22:50 + */ +@Service +public class HualalaCardServiceImpl extends ServiceImpl implements HualalaCardService { + + @Override + public PageResult pageRel(HualalaCardParam 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(HualalaCardParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public HualalaCard getByIdRel(Integer id) { + HualalaCardParam param = new HualalaCardParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCartFoodServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCartFoodServiceImpl.java new file mode 100644 index 0000000..64249f2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaCartFoodServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.HualalaCartFoodMapper; +import com.gxwebsoft.apps.service.HualalaCartFoodService; +import com.gxwebsoft.apps.entity.HualalaCartFood; +import com.gxwebsoft.apps.param.HualalaCartFoodParam; +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-01-14 14:46:44 + */ +@Service +public class HualalaCartFoodServiceImpl extends ServiceImpl implements HualalaCartFoodService { + + @Override + public PageResult pageRel(HualalaCartFoodParam 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(HualalaCartFoodParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public HualalaCartFood getByIdRel(Integer id) { + HualalaCartFoodParam param = new HualalaCartFoodParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/HualalaFoodCategoryServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaFoodCategoryServiceImpl.java new file mode 100644 index 0000000..81543fd --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaFoodCategoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.HualalaFoodCategoryMapper; +import com.gxwebsoft.apps.service.HualalaFoodCategoryService; +import com.gxwebsoft.apps.entity.HualalaFoodCategory; +import com.gxwebsoft.apps.param.HualalaFoodCategoryParam; +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-01-12 09:49:46 + */ +@Service +public class HualalaFoodCategoryServiceImpl extends ServiceImpl implements HualalaFoodCategoryService { + + @Override + public PageResult pageRel(HualalaFoodCategoryParam 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(HualalaFoodCategoryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public HualalaFoodCategory getByIdRel(Integer id) { + HualalaFoodCategoryParam param = new HualalaFoodCategoryParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/HualalaFoodServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaFoodServiceImpl.java new file mode 100644 index 0000000..6b85ae5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaFoodServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.HualalaFoodMapper; +import com.gxwebsoft.apps.service.HualalaFoodService; +import com.gxwebsoft.apps.entity.HualalaFood; +import com.gxwebsoft.apps.param.HualalaFoodParam; +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-01-12 15:34:55 + */ +@Service +public class HualalaFoodServiceImpl extends ServiceImpl implements HualalaFoodService { + + @Override + public PageResult pageRel(HualalaFoodParam 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(HualalaFoodParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public HualalaFood getByIdRel(Integer id) { + HualalaFoodParam param = new HualalaFoodParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public HualalaFood getByFoodId(Integer foodId) { + return query().like("foodId", foodId).one(); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/HualalaServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaServiceImpl.java new file mode 100644 index 0000000..6150635 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaServiceImpl.java @@ -0,0 +1,178 @@ +package com.gxwebsoft.apps.service.impl; + +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.digest.DigestUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.entity.Hualala; +import com.gxwebsoft.apps.entity.HualalaFoodCategory; +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.apps.mapper.HualalaMapper; +import com.gxwebsoft.apps.param.HualalaShopParam; +import com.gxwebsoft.apps.service.HualalaService; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.mapper.OrderGoodsMapper; +import com.gxwebsoft.shop.param.MerchantParam; +import com.gxwebsoft.shop.service.OrderGoodsService; +import lombok.SneakyThrows; +import lombok.val; +import org.apache.commons.codec.binary.Base64; +import org.springframework.data.geo.*; +import org.springframework.data.redis.connection.RedisGeoCommands; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.util.*; +import java.util.stream.Collectors; + +import static com.gxwebsoft.apps.constants.HualalaConstants.*; +import static com.gxwebsoft.apps.constants.SfExpressConstants.*; +import static com.gxwebsoft.common.core.constants.RedisConstants.MERCHANT_GEO_KEY; + +/** + * 哗啦啦Service实现 + * + * @author 科技小王子 + * @since 2022-11-25 12:55:33 + */ +@Service +public class HualalaServiceImpl extends ServiceImpl implements HualalaService { + @Resource + private OrderGoodsMapper orderGoodsMapper; + + @Override + public JSONObject doPost(String url, Map requestBody) { + // 当前时间戳 + Long timestamp = System.currentTimeMillis(); + // 店铺ID + String shopId = null; + if(requestBody.get("shopId") != null){ + shopId = requestBody.get("shopId").toString(); + } + HashMap map = new HashMap<>(); + map.put("timestamp",timestamp); + map.put("appKey",APP_KEY); + map.put("signature",getSignature(timestamp,requestBody)); + map.put("version",VERSION); + map.put("requestBody", JSON.toJSONString(requestBody)); + System.out.println("map = " + map); + // 执行post请求 + String result = HttpRequest.post(API_URL.concat(url)) + .header("traceID", UUID.randomUUID().toString()) + .header("groupID", GROUP_ID) + .header("shopId",shopId) + .form(map) + .timeout(20000) + .execute() + .body(); +// System.out.println("result0 = " + result); + + // 返回数据 + return JSON.parseObject(result); + } + + @Override + public JSONObject doExpress(Order orderInfo) { + List orderGoods = orderGoodsMapper.selectByOrderId(orderInfo.getOrderId()); + + JSONObject json = new JSONObject(); + json.put("dev_id",DEV_ID); // 同城开发者ID + json.put("shop_id",SHOP_ID); // 店铺ID + json.put("shop_order_id", orderInfo.getOrderNo()); // 商家订单号 不允许重复(使用相同商家订单号会幂等返回) + json.put("order_source","微信小程序"); // 订单接入来源 1:美团;2:饿了么;3:饿了么零售;4:口碑; 其他请直接填写中文字符串值 + long timestamp = new Date().getTime(); + System.out.println("timestamp = " + timestamp); + json.put("order_time",timestamp/1000); // 用户下单时间 + json.put("push_time",timestamp/1000); // 推单时间 + json.put("version",19); // 版本号 19 + + // 收货人信息 + JSONObject receive = new JSONObject(); + receive.put("user_name","顺丰同城"); // 用户姓名 + receive.put("user_phone","18978189563");// 用户电话 + receive.put("user_address","北京市海淀区学清嘉创大厦A座15层"); // 用户地址 + receive.put("user_lng","116.354787"); // 用户经度 + receive.put("user_lat","40.030613"); // 用户纬度 + json.put("receive",receive); + + // 物品详情 + ArrayList productDetail = new ArrayList<>(); + orderGoods.forEach(goods -> { + JSONObject item = new JSONObject(); + item.put("product_name",goods.getGoodsName()); + item.put("product_id",goods.getGoodsId()); + item.put("product_num",goods.getTotalNum()); + item.put("product_price",goods.getTotalPrice()); + item.put("product_unit","份"); + item.put("item_detail",""); + productDetail.add(item); + }); + + // 订单详情 + JSONObject orderDetail = new JSONObject(); + orderDetail.put("total_price",orderInfo.getTotalPrice()); // 用户订单商品总金额(单位:分) + orderDetail.put("product_type",21); // 物品类型 21:中餐 + orderDetail.put("weight_gram",0); // 物品重量(单位:克) + orderDetail.put("product_num",1); // 物品个数 + orderDetail.put("product_type_num",1);// 物品种类个数 + orderDetail.put("product_detail",productDetail); // 物品详情 + json.put("order_detail",orderDetail); + String postData = json.toString(); + + System.out.println("postData = " + postData); + + String url = SERVER_HOST.concat("/open/api/external/createorder?sign=").concat(generateOpenSign(postData)); + String result = HttpUtil.post(url, postData); + JSONObject jsonObject = JSON.parseObject(result); + return JSON.parseObject(jsonObject.getString("result")); + } + + // 生成签名(哗啦啦) + private String getSignature(Long timestamp,Map params) { + // 拼接字符串 + String sign = ""; + params.put("groupID",GROUP_ID); + String concat = sign.concat(APP_KEY).concat(APP_SECRET).concat(timestamp.toString()).concat(JSON.toJSONString(params)); +// System.out.println("签名加密前字符串为 = " + concat); + // md5加密 + String md5 = DigestUtil.md5Hex(concat); +// System.out.println("md5加密后获得签名 = " + md5); + return md5; + } + + // 生成签名(顺丰速递) + @SneakyThrows + private static String generateOpenSign(String postData) { + StringBuilder sb = new StringBuilder(); + sb.append(postData); + sb.append("&" + DEV_ID + "&" + DEV_KEY); + System.out.println("sb = " + sb); + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] md5 = md.digest(sb.toString().getBytes(StandardCharsets.UTF_8)); + int i; + StringBuffer buf = new StringBuffer(""); + for (int offset = 0; offset < md5.length; offset++) { + i = md5[offset]; + if (i < 0) { + i += 256; + } + if (i < 16) { + buf.append("0"); + } + buf.append(Integer.toHexString(i)); + } + + return Base64.encodeBase64String(buf.toString().getBytes(StandardCharsets.UTF_8)); + } +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/HualalaShopServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaShopServiceImpl.java new file mode 100644 index 0000000..8295245 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/HualalaShopServiceImpl.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.apps.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.HualalaShopMapper; +import com.gxwebsoft.apps.service.HualalaShopService; +import com.gxwebsoft.apps.entity.HualalaShop; +import com.gxwebsoft.apps.param.HualalaShopParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Merchant; +import org.springframework.data.geo.*; +import org.springframework.data.redis.connection.RedisGeoCommands; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.RedisConstants.MERCHANT_GEO_KEY; +import static com.gxwebsoft.common.core.constants.RedisConstants.haulalaGeoKey; + +/** + * 哗啦啦门店管理Service实现 + * + * @author 科技小王子 + * @since 2023-01-12 18:24:44 + */ +@Service +public class HualalaShopServiceImpl extends ServiceImpl implements HualalaShopService { + + @Resource + private StringRedisTemplate stringRedisTemplate; + + @Override + public PageResult pageRel(HualalaShopParam 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(HualalaShopParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public HualalaShop getByIdRel(Integer shopId) { + HualalaShopParam param = new HualalaShopParam(); + param.setShopId(Long.valueOf(shopId)); + return param.getOne(baseMapper.selectListRel(param)); + } + + + @Override + public List listByGeo(HualalaShopParam param) { + // 1. 是否按距离排序 +// if (param.getMapLongitudeValueBaiDu() == null) { +// System.out.println("param = " + param); +// // 无定位信息 +// return list(); +// } +// System.out.println("param333 = " + param); + // 2. 查询10公里内的10家店铺 + final Point point = new Point(Double.parseDouble(param.getMapLongitudeValueBaiDu()), Double.parseDouble(param.getMapLatitudeValueBaiDu())); +// System.out.println("point = " + point); + RedisGeoCommands.GeoRadiusCommandArgs geoRadiusCommandArgs = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs(); +// final Distance distance1 = new Distance(5, Metrics.KILOMETERS); + GeoResults> results = stringRedisTemplate.opsForGeo().radius(haulalaGeoKey, new Circle(point, 200000), geoRadiusCommandArgs.includeDistance().limit(30)); +// System.out.println("results = " + results); + assert results != null; + final List>> list = results.getContent(); + System.out.println("list.size() = " + list.size()); + // 如查找不到店铺点位则批量写入 + if (list.size() == 0) { + this.saveGeoPointToRedis(); + return null; + } + List ids = new ArrayList<>(list.size()); + Map distanceMap = new HashMap<>(list.size()); + list.forEach(d -> { + // 获取店铺ID + String shopId = d.getContent().getName(); + ids.add(shopId); + // 获取距离 + Distance distance = d.getDistance(); +// System.out.println("distance = " + distance); + distanceMap.put(shopId, distance); + }); +// System.out.println("ids = " + ids); +// System.out.println("distanceMap = " + distanceMap); + final List shops = query().in("shop_id", ids).last("ORDER BY FIELD(shop_id," + StrUtil.join(",", ids) + ")").list(); +// System.out.println("shops = " + shops); + for (HualalaShop shop : shops) { + shop.setDistance(distanceMap.get(StrUtil.toString(shop.getShopId())).getValue()); + } + + return shops; + } + + + /** + * 更新所有商户点位信息 + */ + @Override + public void saveGeoPointToRedis() { + // 1.查询所有商户 + final List list = list(); + // 2.然后按品牌分组,把品牌id一致的放到一个集合 + final Map> map = list.stream().collect(Collectors.groupingBy(HualalaShop::getShopId)); + // 3.分批完成写入Redis + for (Map.Entry> entry : map.entrySet()) { + // 3.1 获取商户的集合 + List value = entry.getValue(); + List> locatioins = new ArrayList<>(value.size()); + // 3.2 写入redis GEOADD key 经度 维度 member + for (HualalaShop shop : value) { + locatioins.add(new RedisGeoCommands.GeoLocation<>(shop.getShopId().toString(), new Point(shop.getMapLongitudeValueBaiDu(), shop.getMapLatitudeValueBaiDu()))); + } +// System.out.println("locatioins = " + locatioins); + stringRedisTemplate.opsForGeo().add(haulalaGeoKey, locatioins); + } + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/LinkServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/LinkServiceImpl.java new file mode 100644 index 0000000..7631ca6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/LinkServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.LinkMapper; +import com.gxwebsoft.apps.service.LinkService; +import com.gxwebsoft.apps.entity.Link; +import com.gxwebsoft.apps.param.LinkParam; +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 2022-11-25 12:55:33 + */ +@Service +public class LinkServiceImpl extends ServiceImpl implements LinkService { + + @Override + public PageResult pageRel(LinkParam 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(LinkParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Link getByIdRel(Integer linkId) { + LinkParam param = new LinkParam(); + param.setLinkId(linkId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/service/impl/TestDataServiceImpl.java b/src/main/java/com/gxwebsoft/apps/service/impl/TestDataServiceImpl.java new file mode 100644 index 0000000..69f79a4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/service/impl/TestDataServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.apps.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.mapper.TestDataMapper; +import com.gxwebsoft.apps.service.TestDataService; +import com.gxwebsoft.apps.entity.TestData; +import com.gxwebsoft.apps.param.TestDataParam; +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-02-01 12:13:46 + */ +@Service +public class TestDataServiceImpl extends ServiceImpl implements TestDataService { + + @Override + public PageResult pageRel(TestDataParam 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(TestDataParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TestData getByIdRel(Integer id) { + TestDataParam param = new TestDataParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/apps/utils/BcUtil.java b/src/main/java/com/gxwebsoft/apps/utils/BcUtil.java new file mode 100644 index 0000000..1eb1d3b --- /dev/null +++ b/src/main/java/com/gxwebsoft/apps/utils/BcUtil.java @@ -0,0 +1,118 @@ +package com.gxwebsoft.apps.utils; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.HashMap; + +/** + * 报餐系统工具类 + * @author 科技小王子 + * + */ +@Component +public class BcUtil { + private final StringRedisTemplate stringRedisTemplate; + public Integer categoryId; + public Integer tenantId; + + public BcUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + // 判断当前餐段 + public Integer getCurrentPeriod(Integer tenantId) { + // 今天开始时间 2023-05-01 00:00:00 + DateTime parse = DateUtil.parse(DateUtil.today()); + // 早餐开始时间 2023-05-01 07:00:00 + DateTime breakfastStart = DateUtil.offsetMinute(parse, 7*60); + // 早餐截止时间 2023-05-01 07:55:00 + DateTime breakfastEnd = DateUtil.offsetMinute(parse, 7*60 + 55); + // 午餐开始时间 2023-05-01 13:00:00 + DateTime lunchStart = DateUtil.offsetMinute(parse, 11*60 + 50); + // 午餐截止时间 2023-05-01 13:00:00 + DateTime lunchEnd = DateUtil.offsetMinute(parse, 13*60); + // 晚餐截止时间 2023-05-01 19:30:00 + DateTime dinnerStart = DateUtil.offsetMinute(parse, 17*60 + 30); + // 晚餐截止时间 2023-05-01 19:30:00 + DateTime dinnerEnd = DateUtil.offsetMinute(parse, 19*60 + 30); + + // 读取后台配置 +// String key = "cache" + tenantId + ":setting:BaoCan"; +// System.out.println("读取后台配置 = " + key); +// final String cache = stringRedisTemplate.opsForValue().get(key); +// if(cache != null){ +// DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); +// final JSONObject jsonObject = JSONObject.parseObject(cache); +// System.out.println("jsonObject = " + jsonObject); +// final String breakfastStartTime = jsonObject.getString("breakfastStartTime"); +// final String breakfastEndTime = jsonObject.getString("breakfastEndTime"); +// final String lunchStartTime = jsonObject.getString("lunchStartTime"); +// final String lunchEndTime = jsonObject.getString("lunchEndTime"); +// final String dinnerStartTime = jsonObject.getString("dinnerStartTime"); +// final String dinnerEndTime = jsonObject.getString("dinnerEndTime"); +// breakfastStart = DateUtil.parse(DateUtil.format(DateUtil.parse(breakfastStartTime), df)); +// breakfastEnd = DateUtil.parse(DateUtil.format(DateUtil.parse(breakfastEndTime), df)); +// lunchStart = DateUtil.parse(DateUtil.format(DateUtil.parse(lunchStartTime), df)); +// lunchEnd = DateUtil.parse(DateUtil.format(DateUtil.parse(lunchEndTime), df)); +// dinnerStart = DateUtil.parse(DateUtil.format(DateUtil.parse(dinnerStartTime), df)); +// dinnerEnd = DateUtil.parse(DateUtil.format(DateUtil.parse(dinnerEndTime), df)); +// +// System.out.println("breakfastStart = " + breakfastStart); +// System.out.println("breakfastEndTime = " + breakfastEndTime); +// System.out.println("lunchStartTime = " + lunchStartTime); +// System.out.println("lunchEndTime = " + lunchEndTime); +// System.out.println("dinnerStartTime = " + dinnerStartTime); +// System.out.println("dinnerEndTime = " + dinnerEndTime); +// +// } + + // 早餐时间段 + if(DateUtil.date().compareTo(breakfastStart) > 0 && DateUtil.date().compareTo(breakfastEnd) < 0){ + System.out.println("早餐时间段 = "); + this.categoryId = 25; + return 25; + } + // 午餐时间段 + if(DateUtil.date().compareTo(lunchStart) > 0 && DateUtil.date().compareTo(lunchEnd) < 0){ + System.out.println("午餐时间段 = "); + this.categoryId = 26; + return 26; + } + // 晚餐时间段 + if(DateUtil.date().compareTo(dinnerStart) > 0 && DateUtil.date().compareTo(dinnerEnd) < 0){ + System.out.println("晚餐时间段 = "); + this.categoryId = 27; + return 27; + } + return 0; + } + + // 发送消息提醒 + public void send(String content) { + // 1.获取access_token + String key = "cache10048:ww:access_token"; + String access_token = stringRedisTemplate.opsForValue().get(key); + System.out.println("access_token = " + access_token); + String url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=" + access_token; + final ArrayList toUsers = new ArrayList<>(); + toUsers.add("ZhaiLing"); + toUsers.add("LiangYun"); + toUsers.add("zhaozhonglin"); + final HashMap map = new HashMap<>(); + map.put("msgtype","text"); + map.put("agentid","wxa040285bc1c223ae"); +// map.put("toall",1); + map.put("touser",toUsers); + final HashMap text = new HashMap<>(); + text.put("content",content); + map.put("text",text); + System.out.println("发送消息提醒 = " + JSONObject.toJSONString(map)); + final String post = HttpUtil.post(url, JSONObject.toJSONString(map)); + } +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/ArticleCategoryController.java b/src/main/java/com/gxwebsoft/cms/controller/ArticleCategoryController.java new file mode 100644 index 0000000..9df3500 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/ArticleCategoryController.java @@ -0,0 +1,141 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.ArticleCategoryService; +import com.gxwebsoft.cms.entity.ArticleCategory; +import com.gxwebsoft.cms.param.ArticleCategoryParam; +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 com.gxwebsoft.common.system.entity.User; +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-22 17:49:15 + */ +@Api(tags = "文章分类表管理") +@RestController +@RequestMapping("/api/cms/article-category") +public class ArticleCategoryController extends BaseController { + @Resource + private ArticleCategoryService articleCategoryService; + + @PreAuthorize("hasAuthority('cms:articleCategory:list')") + @OperationLog + @ApiOperation("分页查询文章分类表") + @GetMapping("/page") + public ApiResult> page(ArticleCategoryParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); + page.setDefaultOrder("sort_number"); + return success(articleCategoryService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(articleCategoryService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('cms:articleCategory:list')") + @OperationLog + @ApiOperation("查询全部文章分类表") + @GetMapping() + public ApiResult> list(ArticleCategoryParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); + page.setDefaultOrder("sort_number"); + return success(articleCategoryService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(articleCategoryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:articleCategory:list')") + @OperationLog + @ApiOperation("根据id查询文章分类表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(articleCategoryService.getById(id)); + // 使用关联查询 + //return success(articleCategoryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('cms:articleCategory:save')") + @OperationLog + @ApiOperation("添加文章分类表") + @PostMapping() + public ApiResult save(@RequestBody ArticleCategory articleCategory) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + articleCategory.setUserId(loginUser.getUserId()); + } + if (articleCategoryService.save(articleCategory)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:articleCategory:update')") + @OperationLog + @ApiOperation("修改文章分类表") + @PutMapping() + public ApiResult update(@RequestBody ArticleCategory articleCategory) { + if (articleCategoryService.updateById(articleCategory)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:articleCategory:remove')") + @OperationLog + @ApiOperation("删除文章分类表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (articleCategoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:articleCategory:save')") + @OperationLog + @ApiOperation("批量添加文章分类表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (articleCategoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:articleCategory:update')") + @OperationLog + @ApiOperation("批量修改文章分类表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(articleCategoryService, "category_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:articleCategory:remove')") + @OperationLog + @ApiOperation("批量删除文章分类表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (articleCategoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/ArticleCommentController.java b/src/main/java/com/gxwebsoft/cms/controller/ArticleCommentController.java new file mode 100644 index 0000000..d5b9391 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/ArticleCommentController.java @@ -0,0 +1,170 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.cms.entity.Article; +import com.gxwebsoft.cms.entity.ArticleComment; +import com.gxwebsoft.cms.param.ArticleCommentParam; +import com.gxwebsoft.cms.param.ArticleParam; +import com.gxwebsoft.cms.service.ArticleCommentService; +import com.gxwebsoft.cms.service.ArticleService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.love.socketio.cache.ClientCache; +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-07-07 14:14:35 + */ +@Api(tags = "文章评论表管理") +@RestController +@RequestMapping("/api/cms/article-comment") +public class ArticleCommentController extends BaseController { + @Resource + private ArticleCommentService articleCommentService; + @Resource + private ArticleService articleService; + + @Resource + private ClientCache clientCache; + + + @PreAuthorize("hasAuthority('cms:articleComment:list')") + @OperationLog + @ApiOperation("获取未读评论数") + @GetMapping("/unread") + public ApiResult page() { + User loginUser = getLoginUser(); + return success(articleCommentService.getUserUnReadCount(loginUser.getUserId())); + } + + @PreAuthorize("hasAuthority('cms:articleComment:list')") + @OperationLog + @ApiOperation("分页查询文章评论表") + @GetMapping("/page") + public ApiResult> page(ArticleCommentParam param) { + User loginUser = getLoginUser(); + // 使用关联查询 + if(loginUser != null){ + param.setLoginUserId(getLoginUserId()); + } + // 使用关联查询 + return success(articleCommentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('cms:articleComment:list')") + @OperationLog + @ApiOperation("查询全部文章评论表") + @GetMapping() + public ApiResult> list(ArticleCommentParam param) { + // 使用关联查询 + return success(articleCommentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:articleComment:list')") + @OperationLog + @ApiOperation("根据id查询文章评论表") + @GetMapping("/{id}") + public ApiResult> get(@PathVariable("id") Integer id) { + final ArticleComment comment = articleCommentService.getByIdRel(id); + // 查询文章 + ArticleParam param = new ArticleParam(); + param.setArticleId(comment.getArticleId()); + comment.setStatus(1); + articleCommentService.updateById(comment); + final PageResult
result = articleService.pageRel(param); + return success(result); + } + + @PreAuthorize("hasAuthority('cms:articleComment:save')") + @OperationLog + @ApiOperation("添加文章评论表") + @PostMapping() + public ApiResult save(@RequestBody ArticleComment articleComment) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + articleComment.setUserId(loginUser.getUserId()); + } + if (articleCommentService.save(articleComment)) { + // 累加文章评论数量 + final Article article = articleService.getById(articleComment.getArticleId()); + article.setCommentNumbers(articleComment.getCountComment() + 1); + articleService.updateById(article); + // 获取未读评论数 + int count = articleCommentService.getUserUnReadCount(articleComment.getToUserId()); + if(!articleComment.getUserId().equals(articleComment.getToUserId())){ + clientCache.sendUserEvent(articleComment.getToUserId() + "", "pyq", count); + } + return success("发表成功",article); + } + return fail("发表失败"); + } + + @PreAuthorize("hasAuthority('cms:articleComment:update')") + @OperationLog + @ApiOperation("修改文章评论表") + @PutMapping() + public ApiResult update(@RequestBody ArticleComment articleComment) { + if (articleCommentService.updateById(articleComment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:articleComment:remove')") + @OperationLog + @ApiOperation("删除文章评论表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (articleCommentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:articleComment:save')") + @OperationLog + @ApiOperation("批量添加文章评论表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (articleCommentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:articleComment:update')") + @OperationLog + @ApiOperation("批量修改文章评论表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(articleCommentService, "comment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:articleComment:remove')") + @OperationLog + @ApiOperation("批量删除文章评论表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (articleCommentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/ArticleController.java b/src/main/java/com/gxwebsoft/cms/controller/ArticleController.java new file mode 100644 index 0000000..fdf4d0c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/ArticleController.java @@ -0,0 +1,142 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.cms.entity.Article; +import com.gxwebsoft.cms.param.ArticleParam; +import com.gxwebsoft.cms.service.ArticleService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +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 WebSoft + * @since 2022-11-16 11:40:27 + */ +@Api(tags = "文章记录表管理") +@RestController +@RequestMapping("/api/cms/article") +public class ArticleController extends BaseController { + @Resource + private ArticleService articleService; + + @PreAuthorize("hasAuthority('cms:article:list')") + @OperationLog + @ApiOperation("分页查询文章记录表") + @GetMapping("/page") + public ApiResult> page(ArticleParam param) { + User loginUser = getLoginUser(); + if (loginUser != null) { + param.setLoginUserId(loginUser.getUserId()); + // 按用户所在城市查询 + if (param.getScene() != null && param.getScene().equals("intraCity")) { + param.setCity(loginUser.getCity()); + } + } + return success(articleService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('cms:article:list')") + @OperationLog + @ApiOperation("查询全部文章记录表") + @GetMapping() + public ApiResult> list(ArticleParam param) { + // 使用关联查询 + return success(articleService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:article:list')") + @OperationLog + @ApiOperation("根据id查询文章记录表") + @GetMapping("/{id}") + public ApiResult
get(@PathVariable("id") Integer id) { + // 使用关联查询 + Article article = articleService.getByIdRel(id); + article.setArticleId(id); + article.setVirtualViews(article.getVirtualViews()+1); + articleService.saveOrUpdate(article); + return success(article); + } + + @PreAuthorize("hasAuthority('cms:article:save')") + @OperationLog + @ApiOperation("添加文章记录表") + @PostMapping() + public ApiResult save(@RequestBody Article article) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null && article.getUserId() == null) { + article.setUserId(loginUser.getUserId()); + } + if (articleService.save(article)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:article:update')") + @OperationLog + @ApiOperation("修改文章记录表") + @PutMapping() + public ApiResult update(@RequestBody Article article) { + if (articleService.updateById(article)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:article:remove')") + @OperationLog + @ApiOperation("删除文章记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (articleService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:article:save')") + @OperationLog + @ApiOperation("批量添加文章记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List
list) { + if (articleService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:article:update')") + @OperationLog + @ApiOperation("批量修改文章记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam
batchParam) { + if (batchParam.update(articleService, "article_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:article:remove')") + @OperationLog + @ApiOperation("批量删除文章记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (articleService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/ArticleLikeController.java b/src/main/java/com/gxwebsoft/cms/controller/ArticleLikeController.java new file mode 100644 index 0000000..33401fb --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/ArticleLikeController.java @@ -0,0 +1,162 @@ +package com.gxwebsoft.cms.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.cms.entity.Article; +import com.gxwebsoft.cms.entity.ArticleLike; +import com.gxwebsoft.cms.param.ArticleLikeParam; +import com.gxwebsoft.cms.service.ArticleLikeService; +import com.gxwebsoft.cms.service.ArticleService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +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-07-07 13:00:03 + */ +@Api(tags = "点赞文章管理") +@RestController +@RequestMapping("/api/cms/article-like") +public class ArticleLikeController extends BaseController { + @Resource + private ArticleLikeService articleLikeService; + @Resource + private ArticleService articleService; + + @PreAuthorize("hasAuthority('cms:articleLike:list')") + @OperationLog + @ApiOperation("分页查询点赞文章") + @GetMapping("/page") + public ApiResult> page(ArticleLikeParam param) { + User loginUser = getLoginUser(); + if (loginUser != null) { + param.setUserId(loginUser.getUserId()); + } + return success(articleLikeService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('cms:articleLike:list')") + @OperationLog + @ApiOperation("查询全部点赞文章") + @GetMapping() + public ApiResult> list(ArticleLikeParam param) { + // 使用关联查询 + return success(articleLikeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:articleLike:list')") + @OperationLog + @ApiOperation("根据id查询点赞文章") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(articleLikeService.getByIdRel(id)); + } + + @ApiOperation("添加点赞文章") + @PostMapping() + public ApiResult save(@RequestBody ArticleLike articleLike) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser == null) { + return fail("请先登录",null); + } + // 获取文章 + Article article = articleService.getById(articleLike.getArticleId()); + // 我是否已点赞 + ArticleLike one = articleLikeService.getOne(new LambdaQueryWrapper() + .eq(ArticleLike::getArticleId, articleLike.getArticleId()) + .eq(ArticleLike::getUserId, loginUser.getUserId())); + + articleLike.setUserId(loginUser.getUserId()); + + if (!articleLike.getLiked() && one == null) { + // 点赞行为 + articleLikeService.save(articleLike); + // 更新点赞数量 + article.setLikes(article.getLikes() + 1); + article.setLiked(true); + articleService.updateById(article); + return success("点赞成功",article); + }else if(articleLike.getLiked() && one != null) { + // 取消点赞 + articleLikeService.removeById(one.getId()); + // 更新点赞数量 + article.setLikes(article.getLikes() - 1); + article.setLiked(false); + articleService.updateById(article); + return success("已取消点赞",article); + }else { + article.setLiked(!articleLike.getLiked()); + return success("操作失败",article); + } + } + + @PreAuthorize("hasAuthority('cms:articleLike:update')") + @OperationLog + @ApiOperation("修改点赞文章") + @PutMapping() + public ApiResult update(@RequestBody ArticleLike articleLike) { + if (articleLikeService.updateById(articleLike)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:articleLike:remove')") + @OperationLog + @ApiOperation("删除点赞文章") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (articleLikeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:articleLike:save')") + @OperationLog + @ApiOperation("批量添加点赞文章") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (articleLikeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:articleLike:update')") + @OperationLog + @ApiOperation("批量修改点赞文章") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(articleLikeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:articleLike:remove')") + @OperationLog + @ApiOperation("批量删除点赞文章") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (articleLikeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/controller/DocsController.java b/src/main/java/com/gxwebsoft/cms/controller/DocsController.java new file mode 100644 index 0000000..5a9e925 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/controller/DocsController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.cms.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.cms.service.DocsService; +import com.gxwebsoft.cms.entity.Docs; +import com.gxwebsoft.cms.param.DocsParam; +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 com.gxwebsoft.common.system.entity.User; +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-16 11:40:27 + */ +@Api(tags = "文档管理记录表管理") +@RestController +@RequestMapping("/api/cms/docs") +public class DocsController extends BaseController { + @Resource + private DocsService docsService; + + @PreAuthorize("hasAuthority('cms:docs:list')") + @OperationLog + @ApiOperation("分页查询文档管理记录表") + @GetMapping("/page") + public ApiResult> page(DocsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc,create_time asc"); + return success(docsService.page(page, page.getWrapper())); + // 使用关联查询 +// return success(docsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('cms:docs:list')") + @OperationLog + @ApiOperation("查询全部文档管理记录表") + @GetMapping() + public ApiResult> list(DocsParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("sort_number asc,create_time asc"); +// return success(docsService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(docsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('cms:docs:list')") + @OperationLog + @ApiOperation("根据id查询文档管理记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(docsService.getById(id)); + // 使用关联查询 + //return success(docsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('cms:docs:save')") + @OperationLog + @ApiOperation("添加文档管理记录表") + @PostMapping() + public ApiResult save(@RequestBody Docs docs) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + docs.setUserId(loginUser.getUserId()); + } + if (docsService.save(docs)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:update')") + @OperationLog + @ApiOperation("修改文档管理记录表") + @PutMapping() + public ApiResult update(@RequestBody Docs docs) { + if (docsService.updateById(docs)) { + return success("保存成功"); + } + return fail("保存失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:remove')") + @OperationLog + @ApiOperation("删除文档管理记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (docsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:save')") + @OperationLog + @ApiOperation("批量添加文档管理记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (docsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:update')") + @OperationLog + @ApiOperation("批量修改文档管理记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(docsService, "docs_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:remove')") + @OperationLog + @ApiOperation("批量删除文档管理记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (docsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/Article.java b/src/main/java/com/gxwebsoft/cms/entity/Article.java new file mode 100644 index 0000000..c8128bc --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/Article.java @@ -0,0 +1,151 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文章记录表 + * + * @author WebSoft + * @since 2022-11-16 11:40:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Article对象", description = "文章记录表") +@TableName("cms_article") +public class Article implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文章ID") + @TableId(value = "article_id", type = IdType.AUTO) + private Integer articleId; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "列表显示方式(10小图展示 20大图展示)") + private Integer showType; + + @ApiModelProperty(value = "话题") + private String topic; + + @ApiModelProperty(value = "文章分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "来源") + private String source; + + @ApiModelProperty(value = "文章内容") + private String content; + + @ApiModelProperty(value = "虚拟阅读量(仅用作展示)") + private Integer virtualViews; + + @ApiModelProperty(value = "实际阅读量") + private Integer actualViews; + + @ApiModelProperty(value = "发布来源客户端") + private String platform; + + @ApiModelProperty(value = "文章附件") + private String files; + + @ApiModelProperty(value = "视频文件地址") + private String video; + + @ApiModelProperty(value = "上传文件类型") + private String accept; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty("文章发布地点") + private String address; + + @ApiModelProperty("获赞数") + private Integer likes; + + @ApiModelProperty("评论数") + private Integer commentNumbers; + + @ApiModelProperty("提醒谁看") + private String toUsers; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String userAvatar; + + @ApiModelProperty(value = "所在城市") + @TableField(exist = false) + private String userCity; + + @ApiModelProperty(value = "是否关注") + @TableField(exist = false) + private Boolean follow; + + @ApiModelProperty(value = "是否点赞") + @TableField(exist = false) + private Boolean liked; + + @ApiModelProperty(value = "年龄") + @TableField(exist = false) + private String age; + + @ApiModelProperty(value = "年龄") + @TableField(exist = false) + private String position; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/ArticleCategory.java b/src/main/java/com/gxwebsoft/cms/entity/ArticleCategory.java new file mode 100644 index 0000000..d53ff6e --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/ArticleCategory.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文章分类表 + * + * @author 科技小王子 + * @since 2022-11-22 17:49:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ArticleCategory对象", description = "文章分类表") +@TableName("cms_article_category") +public class ArticleCategory implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文章分类ID") + @TableId(value = "category_id", type = IdType.AUTO) + private Integer categoryId; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "分类索引图") + private String image; + + @ApiModelProperty(value = "上级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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/cms/entity/ArticleComment.java b/src/main/java/com/gxwebsoft/cms/entity/ArticleComment.java new file mode 100644 index 0000000..3de83b0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/ArticleComment.java @@ -0,0 +1,151 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 文章评论表 + * + * @author 科技小王子 + * @since 2023-07-07 14:14:35 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ArticleComment对象", description = "文章评论表") +@TableName("cms_article_comment") +public class ArticleComment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评价ID") + @TableId(value = "comment_id", type = IdType.AUTO) + private Integer commentId; + + @ApiModelProperty(value = "评分 (10好评 20中评 30差评)") + private Integer score; + + @ApiModelProperty(value = "评价内容") + private String content; + + @ApiModelProperty(value = "是否为图片评价") + private Integer isPicture; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "回复的评论ID") + private Integer replyCommentId; + + @ApiModelProperty(value = "回复者ID") + private Integer replyUserId; + + @ApiModelProperty(value = "被评论者ID") + private Integer toUserId; + + @ApiModelProperty(value = "文章ID") + private Integer articleId; + + @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; + + @ApiModelProperty(value = "评论者昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "评论者头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "评论条数") + @TableField(exist = false) + private Integer countComment; + + @ApiModelProperty(value = "评论者粉丝数") + @TableField(exist = false) + private Integer fans; + + @ApiModelProperty(value = "是否已点赞") + @TableField(exist = false) + private Integer liked; + + @ApiModelProperty(value = "评论者获赞数") + @TableField(exist = false) + private Boolean likes; + + @ApiModelProperty(value = "评论者所在省份") + @TableField(exist = false) + private String province; + + @ApiModelProperty(value = "评论者所在城市") + @TableField(exist = false) + private String city; + + @ApiModelProperty(value = "被评论者昵称") + @TableField(exist = false) + private String toUserNickname; + + @ApiModelProperty(value = "被评论者头像") + @TableField(exist = false) + private String toUserAvatar; + + @ApiModelProperty(value = "被评论者粉丝数") + @TableField(exist = false) + private Integer toUserFans; + + @ApiModelProperty(value = "被评论者所在省份") + @TableField(exist = false) + private String toUserProvince; + + @ApiModelProperty(value = "被评论者所在城市") + @TableField(exist = false) + private String toUserCity; + + @ApiModelProperty(value = "被评论者获赞数") + @TableField(exist = false) + private Integer toUserLikes; + + @ApiModelProperty(value = "回复者昵称") + @TableField(exist = false) + private String replyNickname; + + @ApiModelProperty(value = "回复者头像") + @TableField(exist = false) + private String replyAvatar; + + @ApiModelProperty(value = "回复者粉丝数") + @TableField(exist = false) + private Integer replyFans; + + @ApiModelProperty(value = "子评论列表") + @TableField(exist = false) + private List children; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/ArticleLike.java b/src/main/java/com/gxwebsoft/cms/entity/ArticleLike.java new file mode 100644 index 0000000..3ffdecd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/ArticleLike.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 点赞文章 + * + * @author 科技小王子 + * @since 2023-07-07 13:00:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ArticleLike对象", description = "点赞文章") +@TableName("cms_article_like") +public class ArticleLike implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "文章ID") + private Integer articleId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "是否已点赞") + @TableField(exist = false) + private Boolean liked; + + @ApiModelProperty(value = "文章点赞数量") + @TableField(exist = false) + private Integer likes; + +} diff --git a/src/main/java/com/gxwebsoft/cms/entity/Docs.java b/src/main/java/com/gxwebsoft/cms/entity/Docs.java new file mode 100644 index 0000000..a4128ce --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/entity/Docs.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.cms.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文档管理记录表 + * + * @author WebSoft + * @since 2022-11-16 11:40:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Docs对象", description = "文档管理记录表") +@TableName("cms_docs") +public class Docs implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文档ID") + @TableId(value = "docs_id", type = IdType.AUTO) + private Integer docsId; + + @ApiModelProperty(value = "文档标题") + private String title; + + @ApiModelProperty(value = "上级目录") + private Integer parentId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "文档内容") + private String content; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/ArticleCategoryMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/ArticleCategoryMapper.java new file mode 100644 index 0000000..622c604 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/ArticleCategoryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.ArticleCategory; +import com.gxwebsoft.cms.param.ArticleCategoryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章分类表Mapper + * + * @author 科技小王子 + * @since 2022-11-22 17:49:15 + */ +public interface ArticleCategoryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ArticleCategoryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ArticleCategoryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/ArticleCommentMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/ArticleCommentMapper.java new file mode 100644 index 0000000..c105b04 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/ArticleCommentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.ArticleComment; +import com.gxwebsoft.cms.param.ArticleCommentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章评论表Mapper + * + * @author 科技小王子 + * @since 2023-07-07 14:14:35 + */ +public interface ArticleCommentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ArticleCommentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ArticleCommentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/ArticleLikeMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/ArticleLikeMapper.java new file mode 100644 index 0000000..e59c77a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/ArticleLikeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.ArticleLike; +import com.gxwebsoft.cms.param.ArticleLikeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 点赞文章Mapper + * + * @author 科技小王子 + * @since 2023-07-07 13:00:03 + */ +public interface ArticleLikeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ArticleLikeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ArticleLikeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/ArticleMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/ArticleMapper.java new file mode 100644 index 0000000..a8130a8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/ArticleMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.Article; +import com.gxwebsoft.cms.param.ArticleParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章分类表Mapper + * + * @author 科技小王子 + * @since 2022-11-22 17:49:15 + */ +public interface ArticleMapper extends BaseMapper
{ + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List
+ */ + List
selectPageRel(@Param("page") IPage
page, + @Param("param") ArticleParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List
selectListRel(@Param("param") ArticleParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/DocsMapper.java b/src/main/java/com/gxwebsoft/cms/mapper/DocsMapper.java new file mode 100644 index 0000000..9cfed79 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/DocsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.cms.entity.Docs; +import com.gxwebsoft.cms.param.DocsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文档管理记录表Mapper + * + * @author WebSoft + * @since 2022-11-16 11:40:27 + */ +public interface DocsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DocsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DocsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleCategoryMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleCategoryMapper.xml new file mode 100644 index 0000000..59922bd --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleCategoryMapper.xml @@ -0,0 +1,59 @@ + + + + + + + SELECT a.* + FROM cms_article_category a + + + AND a.category_id = #{param.categoryId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleCommentMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleCommentMapper.xml new file mode 100644 index 0000000..9506e9b --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleCommentMapper.xml @@ -0,0 +1,78 @@ + + + + + + + SELECT a.*, + b.nickname as toUserNickname, b.avatar as toUserAvatar,b.fans as toUserFans,b.province as toUserProvince,b.city as toUserCity,b.likes as toUserLikes, + c.nickname,c.avatar,c.fans,c.province,c.city,c.likes, + d.nickname as replyNickname,d.avatar as replyAvatar,d.fans as replyFans + FROM cms_article_comment a + LEFT JOIN sys_user b ON a.to_user_id = b.user_id + LEFT JOIN sys_user c ON a.user_id = c.user_id + LEFT JOIN sys_user d ON a.reply_user_id = d.user_id + + + AND a.comment_id = #{param.commentId} + + + AND a.score = #{param.score} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.is_picture = #{param.isPicture} + + + AND a.user_id = #{param.userId} + + + AND a.to_user_id = #{param.toUserId} + + + AND a.article_id = #{param.articleId} + + + 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} + + + + AND (a.to_user_id = #{param.loginUserId}) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleLikeMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleLikeMapper.xml new file mode 100644 index 0000000..35ce4e6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleLikeMapper.xml @@ -0,0 +1,38 @@ + + + + + + + SELECT a.* + FROM cms_article_like a + + + AND a.id = #{param.id} + + + AND a.article_id = #{param.articleId} + + + AND a.user_id = #{param.userId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleMapper.xml new file mode 100644 index 0000000..6255f0d --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/ArticleMapper.xml @@ -0,0 +1,109 @@ + + + + + + + SELECT a.*, + b.nickname,b.user_id,b.avatar userAvatar,b.city as userCity, + b.age, + c.position + FROM cms_article a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN love_user_profile c ON a.user_id = c.user_id + + + AND a.article_id = #{param.articleId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.show_type = #{param.showType} + + + AND a.category_id = #{param.categoryId} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.source LIKE CONCAT('%', #{param.source}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.virtual_views = #{param.virtualViews} + + + AND a.actual_views = #{param.actualViews} + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.topic = #{param.topic} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND b.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.user_id = #{param.userId} + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND b.sex = #{param.gender} + + + AND b.city = #{param.city} + + + AND b.user_id IN + + #{item} + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/mapper/xml/DocsMapper.xml b/src/main/java/com/gxwebsoft/cms/mapper/xml/DocsMapper.xml new file mode 100644 index 0000000..f68b93e --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/mapper/xml/DocsMapper.xml @@ -0,0 +1,68 @@ + + + + + + + SELECT a.docs_id, a.title, a.parent_id, a.user_id, a.sort_number, a.comments, a.status, a.merchant_code + FROM cms_docs a + + + AND a.docs_id = #{param.docsId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.user_id = #{param.userId} + + + AND a.organization_id = #{param.organizationId} + + + AND a.shop_id = #{param.shopId} + + + AND a.visibility LIKE CONCAT('%', #{param.visibility}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/cms/param/ArticleCategoryParam.java b/src/main/java/com/gxwebsoft/cms/param/ArticleCategoryParam.java new file mode 100644 index 0000000..c9aa163 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/ArticleCategoryParam.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.cms.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; + +/** + * 文章分类表查询参数 + * + * @author 科技小王子 + * @since 2022-11-22 17:49:15 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ArticleCategoryParam对象", description = "文章分类表查询参数") +public class ArticleCategoryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文章分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "上级分类ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/ArticleCommentParam.java b/src/main/java/com/gxwebsoft/cms/param/ArticleCommentParam.java new file mode 100644 index 0000000..33711f9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/ArticleCommentParam.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.cms.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 2023-07-07 14:14:35 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ArticleCommentParam对象", description = "文章评论表查询参数") +public class ArticleCommentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评价ID") + @QueryField(type = QueryType.EQ) + private Integer commentId; + + @ApiModelProperty(value = "评分 (10好评 20中评 30差评)") + @QueryField(type = QueryType.EQ) + private Integer score; + + @ApiModelProperty(value = "评价内容") + private String content; + + @ApiModelProperty(value = "是否为图片评价") + @QueryField(type = QueryType.EQ) + private Integer isPicture; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "被评价者ID") + @QueryField(type = QueryType.EQ) + private Integer toUserId; + + @ApiModelProperty(value = "回复者ID") + @TableField(exist = false) + private Integer replyUserId; + + @ApiModelProperty(value = "文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @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; + + @ApiModelProperty(value = "当前登录用户ID") + @TableField(exist = false) + private Integer loginUserId; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/ArticleLikeParam.java b/src/main/java/com/gxwebsoft/cms/param/ArticleLikeParam.java new file mode 100644 index 0000000..59a3ecb --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/ArticleLikeParam.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.cms.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; + +/** + * 点赞文章查询参数 + * + * @author 科技小王子 + * @since 2023-07-07 13:00:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ArticleLikeParam对象", description = "点赞文章查询参数") +public class ArticleLikeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "客户端") + @QueryField(type = QueryType.EQ) + private String platform; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/ArticleParam.java b/src/main/java/com/gxwebsoft/cms/param/ArticleParam.java new file mode 100644 index 0000000..2efa660 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/ArticleParam.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.cms.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.util.Set; + +/** + * 文章记录表查询参数 + * + * @author WebSoft + * @since 2022-11-16 11:40:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ArticleParam对象", description = "文章记录表查询参数") +public class ArticleParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文章ID") + @QueryField(type = QueryType.EQ) + private Integer articleId; + + @ApiModelProperty(value = "文章标题") + private String title; + + @ApiModelProperty(value = "列表显示方式(10小图展示 20大图展示)") + @QueryField(type = QueryType.EQ) + private Integer showType; + + @ApiModelProperty(value = "文章分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "封面图") + private String image; + + @ApiModelProperty(value = "来源") + private String source; + + @ApiModelProperty(value = "文章内容") + private String content; + + @ApiModelProperty(value = "虚拟阅读量(仅用作展示)") + @QueryField(type = QueryType.EQ) + private Integer virtualViews; + + @ApiModelProperty(value = "实际阅读量") + @QueryField(type = QueryType.EQ) + private Integer actualViews; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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("用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty("查询关注状态") + private Boolean showFollow; + + @ApiModelProperty(value = "当前登录用户ID") + @QueryField(type = QueryType.EQ) + private Integer loginUserId; + + @ApiModelProperty(value = "按性别筛选") + @QueryField(type = QueryType.EQ) + private Integer gender; + + @ApiModelProperty(value = "场景") + @QueryField(type = QueryType.EQ) + private String scene; + + @ApiModelProperty(value = "按用户所在城市查询") + @QueryField(type = QueryType.EQ) + private String city; + + @ApiModelProperty(value = "话题") + @QueryField(type = QueryType.EQ) + private String topic; + + @ApiModelProperty(value = "用户id集合") + @TableField(exist = false) + private Set userIds; + +} diff --git a/src/main/java/com/gxwebsoft/cms/param/DocsParam.java b/src/main/java/com/gxwebsoft/cms/param/DocsParam.java new file mode 100644 index 0000000..a9c7c7c --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/param/DocsParam.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.cms.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; + +/** + * 文档管理记录表查询参数 + * + * @author WebSoft + * @since 2022-11-16 11:40:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "DocsParam对象", description = "文档管理记录表查询参数") +public class DocsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "文档ID") + @QueryField(type = QueryType.EQ) + private Integer docsId; + + @ApiModelProperty(value = "文档标题") + private String title; + + @ApiModelProperty(value = "上级目录") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "文档内容") + private String content; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/ArticleCategoryService.java b/src/main/java/com/gxwebsoft/cms/service/ArticleCategoryService.java new file mode 100644 index 0000000..e544e9a --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/ArticleCategoryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.ArticleCategory; +import com.gxwebsoft.cms.param.ArticleCategoryParam; + +import java.util.List; + +/** + * 文章分类表Service + * + * @author 科技小王子 + * @since 2022-11-22 17:49:15 + */ +public interface ArticleCategoryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ArticleCategoryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ArticleCategoryParam param); + + /** + * 根据id查询 + * + * @param categoryId 文章分类ID + * @return ArticleCategory + */ + ArticleCategory getByIdRel(Integer categoryId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/ArticleCommentService.java b/src/main/java/com/gxwebsoft/cms/service/ArticleCommentService.java new file mode 100644 index 0000000..492880d --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/ArticleCommentService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.cms.entity.ArticleComment; +import com.gxwebsoft.cms.param.ArticleCommentParam; +import com.gxwebsoft.common.core.web.PageResult; + +import java.util.List; + +/** + * 文章评论表Service + * + * @author 科技小王子 + * @since 2023-07-07 14:14:35 + */ +public interface ArticleCommentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ArticleCommentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ArticleCommentParam param); + + /** + * 根据id查询 + * + * @param commentId 评价ID + * @return ArticleComment + */ + ArticleComment getByIdRel(Integer commentId); + + int getUserUnReadCount(Integer userId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/ArticleLikeService.java b/src/main/java/com/gxwebsoft/cms/service/ArticleLikeService.java new file mode 100644 index 0000000..570d62f --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/ArticleLikeService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.ArticleLike; +import com.gxwebsoft.cms.param.ArticleLikeParam; + +import java.util.List; + +/** + * 点赞文章Service + * + * @author 科技小王子 + * @since 2023-07-07 13:00:03 + */ +public interface ArticleLikeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ArticleLikeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ArticleLikeParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return ArticleLike + */ + ArticleLike getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/ArticleService.java b/src/main/java/com/gxwebsoft/cms/service/ArticleService.java new file mode 100644 index 0000000..51540a4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/ArticleService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.Article; +import com.gxwebsoft.cms.param.ArticleParam; + +import java.util.List; + +/** + * 文章记录表Service + * + * @author WebSoft + * @since 2022-11-16 11:40:27 + */ +public interface ArticleService extends IService
{ + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult
+ */ + PageResult
pageRel(ArticleParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List
+ */ + List
listRel(ArticleParam param); + + /** + * 根据id查询 + * + * @param articleId 文章ID + * @return Article + */ + Article getByIdRel(Integer articleId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/DocsService.java b/src/main/java/com/gxwebsoft/cms/service/DocsService.java new file mode 100644 index 0000000..075b92b --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/DocsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.cms.entity.Docs; +import com.gxwebsoft.cms.param.DocsParam; + +import java.util.List; + +/** + * 文档管理记录表Service + * + * @author WebSoft + * @since 2022-11-16 11:40:27 + */ +public interface DocsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DocsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DocsParam param); + + /** + * 根据id查询 + * + * @param docsId 文档ID + * @return Docs + */ + Docs getByIdRel(Integer docsId); + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/ArticleCategoryServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/ArticleCategoryServiceImpl.java new file mode 100644 index 0000000..05c7f47 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/ArticleCategoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.ArticleCategoryMapper; +import com.gxwebsoft.cms.service.ArticleCategoryService; +import com.gxwebsoft.cms.entity.ArticleCategory; +import com.gxwebsoft.cms.param.ArticleCategoryParam; +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 2022-11-22 17:49:15 + */ +@Service +public class ArticleCategoryServiceImpl extends ServiceImpl implements ArticleCategoryService { + + @Override + public PageResult pageRel(ArticleCategoryParam 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(ArticleCategoryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public ArticleCategory getByIdRel(Integer categoryId) { + ArticleCategoryParam param = new ArticleCategoryParam(); + param.setCategoryId(categoryId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/ArticleCommentServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/ArticleCommentServiceImpl.java new file mode 100644 index 0000000..bbf2979 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/ArticleCommentServiceImpl.java @@ -0,0 +1,100 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.ArticleComment; +import com.gxwebsoft.cms.entity.ArticleLike; +import com.gxwebsoft.cms.mapper.ArticleCommentMapper; +import com.gxwebsoft.cms.param.ArticleCommentParam; +import com.gxwebsoft.cms.service.ArticleCommentService; +import com.gxwebsoft.cms.service.ArticleLikeService; +import com.gxwebsoft.cms.service.ArticleService; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 文章评论表Service实现 + * + * @author 科技小王子 + * @since 2023-07-07 14:14:35 + */ +@Service +public class ArticleCommentServiceImpl extends ServiceImpl implements ArticleCommentService { + + @Resource + private ArticleLikeService articleLikeService; + + @Resource + private ArticleService articleService; + + + + @Override + public PageResult pageRel(ArticleCommentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + + // 获取带点赞状态和评论的文章列表 + if (param.getSceneType() != null && param.getSceneType().equals("UN_READ_COMMENT")) { + // 更新为已读 + if(!CollectionUtils.isEmpty(list)){ + Set commentIds = list.stream().map(ArticleComment::getCommentId).collect(Collectors.toSet()); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() + .in(ArticleComment::getCommentId, commentIds) + .set(ArticleComment::getStatus, 1); + baseMapper.update(null, updateWrapper); + } + return new PageResult<>(list, page.getTotal()); + } + + // 我点赞的人 + final List myLikes = articleLikeService.list(new LambdaQueryWrapper().eq(ArticleLike::getUserId, param.getLoginUserId())); + list.forEach(d -> { + final boolean isLike = myLikes.stream().anyMatch(f -> f.getUserId().equals(param.getLoginUserId())); + d.setLikes(isLike); + }); + // List转为树形结构 + final List articleComments = CommonUtil.toTreeData(list, 0, ArticleComment::getReplyCommentId, ArticleComment::getCommentId, ArticleComment::setChildren); + return new PageResult<>(articleComments, page.getTotal()); + } + + @Override + public List listRel(ArticleCommentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public ArticleComment getByIdRel(Integer commentId) { + ArticleCommentParam param = new ArticleCommentParam(); + param.setCommentId(commentId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public int getUserUnReadCount(Integer userId) { +// List
list = articleService.list(new LambdaQueryWrapper
().eq(Article::getUserId, userId).select(Article::getArticleId)); +// Set articleIds = list.stream().map(Article::getArticleId).collect(Collectors.toSet()); + int count = baseMapper.selectCount( + new LambdaQueryWrapper<>(ArticleComment.class) +// .in(ArticleComment::getArticleId, articleIds) + .eq(ArticleComment::getStatus, 0) + .eq(ArticleComment::getToUserId, userId) + ); + return count; + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/ArticleLikeServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/ArticleLikeServiceImpl.java new file mode 100644 index 0000000..3a7cb41 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/ArticleLikeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.ArticleLikeMapper; +import com.gxwebsoft.cms.service.ArticleLikeService; +import com.gxwebsoft.cms.entity.ArticleLike; +import com.gxwebsoft.cms.param.ArticleLikeParam; +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-07-07 13:00:03 + */ +@Service +public class ArticleLikeServiceImpl extends ServiceImpl implements ArticleLikeService { + + @Override + public PageResult pageRel(ArticleLikeParam 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(ArticleLikeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public ArticleLike getByIdRel(Integer id) { + ArticleLikeParam param = new ArticleLikeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/ArticleServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/ArticleServiceImpl.java new file mode 100644 index 0000000..30b8fe7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/ArticleServiceImpl.java @@ -0,0 +1,95 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.entity.Article; +import com.gxwebsoft.cms.entity.ArticleLike; +import com.gxwebsoft.cms.mapper.ArticleMapper; +import com.gxwebsoft.cms.param.ArticleParam; +import com.gxwebsoft.cms.service.ArticleLikeService; +import com.gxwebsoft.cms.service.ArticleService; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.UserFollow; +import com.gxwebsoft.shop.service.UserFollowService; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 文章记录表Service实现 + * + * @author WebSoft + * @since 2022-11-16 11:40:27 + */ +@Service +public class ArticleServiceImpl extends ServiceImpl implements ArticleService { + @Resource + private UserFollowService userFollowService; + @Resource + private ArticleLikeService articleLikeService; + + @Override + public PageResult
pageRel(ArticleParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc, create_time desc"); + // 搜素条件 + if (param.getScene() != null) { + // 最新 + if (param.getScene().equals("new")) { + param.setCity(null); + param.setUserIds(null); + } + // 同城intraCity + if (param.getScene().equals("intraCity")) { + param.setCity(param.getCity()); + } + // 关注focus + if (param.getScene().equals("focus")) { + final List myFocus = userFollowService.list(new LambdaQueryWrapper().eq(UserFollow::getUserId, param.getLoginUserId())); + if (!CollectionUtils.isEmpty(myFocus)) { + final Set collect = myFocus.stream().map(UserFollow::getShopId).collect(Collectors.toSet()); + param.setUserIds(collect); + } + } + } + // 数据列表 + List
list = baseMapper.selectPageRel(page, param); + // 我关注的人 + final List myFollows = userFollowService.list(new LambdaQueryWrapper().eq(UserFollow::getUserId, param.getLoginUserId())); + // 我点赞的文章 + final List myLikes = articleLikeService.list(new LambdaQueryWrapper().eq(ArticleLike::getUserId, param.getLoginUserId())); + // 是否显示关注状态 + if(param.getShowFollow() != null){ + list.forEach(d -> { + // 是否关注 + final boolean isFollows = myFollows.stream().filter(f -> f.getShopId().equals(d.getUserId())).findFirst().isPresent(); + final boolean isLike = myLikes.stream().filter(f -> f.getArticleId().equals(d.getArticleId())).findFirst().isPresent(); + d.setFollow(isFollows); + d.setLiked(isLike); + }); + } + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List
listRel(ArticleParam param) { + List
list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc, create_time desc"); + return page.sortRecords(list); + } + + @Override + public Article getByIdRel(Integer articleId) { + ArticleParam param = new ArticleParam(); + param.setArticleId(articleId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/DocsServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/DocsServiceImpl.java new file mode 100644 index 0000000..d9ca2c4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/cms/service/impl/DocsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.cms.mapper.DocsMapper; +import com.gxwebsoft.cms.service.DocsService; +import com.gxwebsoft.cms.entity.Docs; +import com.gxwebsoft.cms.param.DocsParam; +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 2022-11-16 11:40:27 + */ +@Service +public class DocsServiceImpl extends ServiceImpl implements DocsService { + + @Override + public PageResult pageRel(DocsParam 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(DocsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("sort_number asc,create_time asc"); + return page.sortRecords(list); + } + + @Override + public Docs getByIdRel(Integer docsId) { + DocsParam param = new DocsParam(); + param.setDocsId(docsId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/Constants.java b/src/main/java/com/gxwebsoft/common/core/Constants.java new file mode 100644 index 0000000..be48387 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/Constants.java @@ -0,0 +1,93 @@ +package com.gxwebsoft.common.core; + +/** + * 系统常量 + * Created by WebSoft on 2019-10-29 15:55 + */ +public class Constants { + /** + * 默认成功码 + */ + public static final int RESULT_OK_CODE = 0; + + /** + * 默认失败码 + */ + public static final int RESULT_ERROR_CODE = 1; + + /** + * 默认成功信息 + */ + public static final String RESULT_OK_MSG = "操作成功"; + + /** + * 默认失败信息 + */ + public static final String RESULT_ERROR_MSG = "操作失败"; + + /** + * 无权限错误码 + */ + public static final int UNAUTHORIZED_CODE = 403; + + /** + * 无权限提示信息 + */ + public static final String UNAUTHORIZED_MSG = "没有访问权限"; + + /** + * 未认证错误码 + */ + public static final int UNAUTHENTICATED_CODE = 401; + + /** + * 未认证提示信息 + */ + public static final String UNAUTHENTICATED_MSG = "请先登录"; + + /** + * 登录过期错误码 + */ + public static final int TOKEN_EXPIRED_CODE = 401; + + /** + * 登录过期提示信息 + */ + public static final String TOKEN_EXPIRED_MSG = "登录已过期"; + + /** + * 非法token错误码 + */ + public static final int BAD_CREDENTIALS_CODE = 401; + + /** + * 非法token提示信息 + */ + public static final String BAD_CREDENTIALS_MSG = "请退出重新登录"; + + /** + * 表示升序的值 + */ + public static final String ORDER_ASC_VALUE = "asc"; + + /** + * 表示降序的值 + */ + public static final String ORDER_DESC_VALUE = "desc"; + + /** + * token通过header传递的名称 + */ + public static final String TOKEN_HEADER_NAME = "Authorization"; + + /** + * token通过参数传递的名称 + */ + public static final String TOKEN_PARAM_NAME = "access_token"; + + /** + * token认证类型 + */ + public static final String TOKEN_TYPE = "Bearer"; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/annotation/OperationLog.java b/src/main/java/com/gxwebsoft/common/core/annotation/OperationLog.java new file mode 100644 index 0000000..87bdf2c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/annotation/OperationLog.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.common.core.annotation; + +import java.lang.annotation.*; + +/** + * 操作日志记录注解 + * + * @author WebSoft + * @since 2020-03-21 17:03:08 + */ +@Documented +@Target({ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface OperationLog { + + /** + * 操作功能 + */ + String value() default ""; + + /** + * 操作模块 + */ + String module() default ""; + + /** + * 备注 + */ + String comments() default ""; + + /** + * 是否记录请求参数 + */ + boolean param() default true; + + /** + * 是否记录返回结果 + */ + boolean result() default true; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/annotation/OperationModule.java b/src/main/java/com/gxwebsoft/common/core/annotation/OperationModule.java new file mode 100644 index 0000000..60ab018 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/annotation/OperationModule.java @@ -0,0 +1,21 @@ +package com.gxwebsoft.common.core.annotation; + +import java.lang.annotation.*; + +/** + * 操作日志模块注解 + * + * @author WebSoft + * @since 2021-09-01 20:48:16 + */ +@Documented +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +public @interface OperationModule { + + /** + * 模块名称 + */ + String value(); + +} diff --git a/src/main/java/com/gxwebsoft/common/core/annotation/QueryField.java b/src/main/java/com/gxwebsoft/common/core/annotation/QueryField.java new file mode 100644 index 0000000..9377b9b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/annotation/QueryField.java @@ -0,0 +1,22 @@ +package com.gxwebsoft.common.core.annotation; + +import java.lang.annotation.*; + +/** + * 查询条件注解 + * + * @author WebSoft + * @since 2021-09-01 20:48:16 + */ +@Documented +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE}) +public @interface QueryField { + + // 字段名称 + String value() default ""; + + // 查询方式 + QueryType type() default QueryType.LIKE; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/annotation/QueryType.java b/src/main/java/com/gxwebsoft/common/core/annotation/QueryType.java new file mode 100644 index 0000000..3eb540e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/annotation/QueryType.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.core.annotation; + +/** + * 查询方式 + * + * @author WebSoft + * @since 2021-09-01 20:48:16 + */ +public enum QueryType { + // 等于 + EQ, + // 不等于 + NE, + // 大于 + GT, + // 大于等于 + GE, + // 小于 + LT, + // 小于等于 + LE, + // 包含 + LIKE, + // 不包含 + NOT_LIKE, + // 结尾等于 + LIKE_LEFT, + // 开头等于 + LIKE_RIGHT, + // 为NULL + IS_NULL, + // 不为空 + IS_NOT_NULL, + // IN + IN, + // NOT IN + NOT_IN, + // IN条件解析逗号分割 + IN_STR, + // NOT IN条件解析逗号分割 + NOT_IN_STR +} diff --git a/src/main/java/com/gxwebsoft/common/core/aspect/OperationLogAspect.java b/src/main/java/com/gxwebsoft/common/core/aspect/OperationLogAspect.java new file mode 100644 index 0000000..ef29028 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/aspect/OperationLogAspect.java @@ -0,0 +1,229 @@ +package com.gxwebsoft.common.core.aspect; + +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.servlet.ServletUtil; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.annotation.OperationModule; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.OperationRecordService; +import com.gxwebsoft.shop.entity.UserLook; +import com.gxwebsoft.shop.service.UserLookService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.annotation.*; +import org.aspectj.lang.reflect.MethodSignature; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.lang.reflect.Method; +import java.util.Map; + +/** + * 操作日志记录 + * + * @author WebSoft + * @since 2020-03-21 16:58:16:05 + */ +@Aspect +@Component +public class OperationLogAspect { + @Resource + private OperationRecordService operationRecordService; + @Resource + private UserLookService userLookService; + + // 参数、返回结果、错误信息等最大保存长度 + private static final int MAX_LENGTH = 1000; + // 用于记录请求耗时 + private final ThreadLocal startTime = new ThreadLocal<>(); + + @Pointcut("@annotation(com.gxwebsoft.common.core.annotation.OperationLog)") + public void operationLog() { + } + + @Before("operationLog()") + public void doBefore(JoinPoint joinPoint) throws Throwable { + startTime.set(System.currentTimeMillis()); + } + + @AfterReturning(pointcut = "operationLog()", returning = "result") + public void doAfterReturning(JoinPoint joinPoint, Object result) { + saveLog(joinPoint, result, null); + } + + @AfterThrowing(value = "operationLog()", throwing = "e") + public void doAfterThrowing(JoinPoint joinPoint, Exception e) { + saveLog(joinPoint, null, e); + } + + /** + * 保存操作记录 + */ + private void saveLog(JoinPoint joinPoint, Object result, Exception e) { + OperationRecord record = new OperationRecord(); + // 记录操作耗时 + if (startTime.get() != null) { + record.setSpendTime(System.currentTimeMillis() - startTime.get()); + } + // 记录当前登录用户id、租户id + User user = getLoginUser(); + if (user != null) { + record.setUserId(user.getUserId()); + record.setTenantId(user.getTenantId()); + } + // 记录请求地址、请求方式、ip + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + HttpServletRequest request = (attributes == null ? null : attributes.getRequest()); + if (request != null) { + record.setUrl(request.getRequestURI()); + record.setRequestMethod(request.getMethod()); + UserAgent ua = UserAgentUtil.parse(ServletUtil.getHeaderIgnoreCase(request, "User-Agent")); + record.setOs(ua.getPlatform().toString()); + record.setDevice(ua.getOs().toString()); + record.setBrowser(ua.getBrowser().toString()); + record.setIp(ServletUtil.getClientIP(request)); + } + // 记录异常信息 + if (e != null) { + record.setStatus(1); + record.setError(StrUtil.sub(e.toString(), 0, MAX_LENGTH)); + } + // 记录模块名、操作功能、请求方法、请求参数、返回结果 + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + record.setMethod(joinPoint.getTarget().getClass().getName() + "." + signature.getName()); + Method method = signature.getMethod(); + if (method != null) { + OperationLog ol = method.getAnnotation(OperationLog.class); + if (ol != null) { + // 记录操作功能 + record.setDescription(getDescription(method, ol)); + // 记录操作模块 + record.setModule(getModule(joinPoint, ol)); + // 记录备注 + if (StrUtil.isNotEmpty(ol.comments())) { + record.setComments(ol.comments()); + } + // 记录请求参数 + if (ol.param() && request != null) { + record.setParams(StrUtil.sub(getParams(joinPoint, request), 0, MAX_LENGTH)); + } + // 记录请求结果 + if (ol.result() && result != null) { + record.setResult(StrUtil.sub(JSONUtil.toJSONString(result), 0, MAX_LENGTH)); + } + } + } + + // 记录访客日志 +// System.out.println("record = " + record); +// if (record.getMethod().equals("com.gxwebsoft.love.controller.UserProfileController.detail")) { +// final Integer toUserId = Integer.valueOf(StrUtil.removeSuffix(record.getParams()," ")); +// if (userLookService.count(new LambdaQueryWrapper().eq(UserLook::getUserId,record.getUserId()).eq(UserLook::getToUserId,toUserId)) == 0) { +// final UserLook userLook = new UserLook(); +// userLook.setUserId(record.getUserId()); +// userLook.setToUserId(toUserId); +// userLookService.save(userLook); +// } +// } + + operationRecordService.saveAsync(record); + } + + /** + * 获取当前登录用户 + */ + private User getLoginUser() { + Authentication subject = SecurityContextHolder.getContext().getAuthentication(); + if (subject != null) { + Object object = subject.getPrincipal(); + if (object instanceof User) { + return (User) object; + } + } + return null; + } + + /** + * 获取请求参数 + * + * @param joinPoint JoinPoint + * @param request HttpServletRequest + * @return String + */ + private String getParams(JoinPoint joinPoint, HttpServletRequest request) { + String params; + Map paramsMap = ServletUtil.getParamMap(request); + if (paramsMap.keySet().size() > 0) { + params = JSONUtil.toJSONString(paramsMap); + } else { + StringBuilder sb = new StringBuilder(); + for (Object arg : joinPoint.getArgs()) { + if (ObjectUtil.isNull(arg) + || arg instanceof MultipartFile + || arg instanceof HttpServletRequest + || arg instanceof HttpServletResponse) { + continue; + } + sb.append(JSONUtil.toJSONString(arg)).append(" "); + } + params = sb.toString(); + } + return params; + } + + /** + * 获取操作模块 + * + * @param joinPoint JoinPoint + * @param ol OperationLog + * @return String + */ + private String getModule(JoinPoint joinPoint, OperationLog ol) { + if (StrUtil.isNotEmpty(ol.module())) { + return ol.module(); + } + OperationModule om = joinPoint.getTarget().getClass().getAnnotation(OperationModule.class); + if (om != null && StrUtil.isNotEmpty(om.value())) { + return om.value(); + } + Api api = joinPoint.getTarget().getClass().getAnnotation(Api.class); + if (api != null && api.tags() != null) { + return ArrayUtil.join(api.tags(), ","); + } + return null; + } + + /** + * 获取操作功能 + * + * @param method Method + * @param ol OperationLog + * @return String + */ + private String getDescription(Method method, OperationLog ol) { + if (StrUtil.isNotEmpty(ol.value())) { + return ol.value(); + } + ApiOperation ao = method.getAnnotation(ApiOperation.class); + if (ao != null && StrUtil.isNotEmpty(ao.value())) { + return ao.value(); + } + return null; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java b/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java new file mode 100644 index 0000000..dfee5d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/ConfigProperties.java @@ -0,0 +1,105 @@ +package com.gxwebsoft.common.core.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * 系统配置属性 + * + * @author WebSoft + * @since 2021-08-30 17:58:16 + */ +@Data +@ConfigurationProperties(prefix = "config") +public class ConfigProperties { + /** + * 文件上传磁盘位置 + */ + private Integer uploadLocation = 0; + + /** + * 文件上传是否使用uuid命名 + */ + private Boolean uploadUuidName = true; + + /** + * 文件上传生成缩略图的大小(kb) + */ + private Integer thumbnailSize = 60; + + /** + * OpenOffice的安装目录 + */ + private String openOfficeHome; + + /** + * swagger扫描包 + */ + private String swaggerBasePackage; + + /** + * swagger文档标题 + */ + private String swaggerTitle; + + /** + * swagger文档描述 + */ + private String swaggerDescription; + + /** + * swagger文档版本号 + */ + private String swaggerVersion; + + /** + * swagger地址 + */ + private String swaggerHost; + + /** + * token过期时间, 单位秒 + */ + private Long tokenExpireTime = 60 * 60 * 30 * 24L; + + /** + * token快要过期自动刷新时间, 单位分钟 + */ + private int tokenRefreshTime = 30; + + /** + * 生成token的密钥Key的base64字符 + */ + private String tokenKey; + + /** + * 文件上传目录 + */ + private String uploadPath; + + /** + * 本地文件上传目录(开发环境) + */ + private String localUploadPath; + + /** + * 文件服务器 + */ + private String fileServer; + + /** + * 网关地址 + */ + private String serverUrl; + + /** + * 阿里云存储 OSS + * Endpoint + */ + private String endpoint; + private String accessKeyId; + private String accessKeySecret; + private String bucketName; + private String bucketDomain; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/HttpMessageConverter.java b/src/main/java/com/gxwebsoft/common/core/config/HttpMessageConverter.java new file mode 100644 index 0000000..6bae59d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/HttpMessageConverter.java @@ -0,0 +1,15 @@ +package com.gxwebsoft.common.core.config; + +import org.springframework.http.MediaType; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + +import java.util.ArrayList; +import java.util.List; + +public class HttpMessageConverter extends MappingJackson2HttpMessageConverter { + public HttpMessageConverter(){ + List mediaTypes = new ArrayList<>(); + mediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED); + setSupportedMediaTypes(mediaTypes); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java b/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java new file mode 100644 index 0000000..c4704fb --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/MybatisPlusConfig.java @@ -0,0 +1,93 @@ +package com.gxwebsoft.common.core.config; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor; +import com.gxwebsoft.common.system.entity.User; +import net.sf.jsqlparser.expression.Expression; +import net.sf.jsqlparser.expression.LongValue; +import net.sf.jsqlparser.expression.NullValue; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; + +/** + * MybatisPlus配置 + * + * @author WebSoft + * @since 2018-02-22 11:29:28 + */ +@Configuration +public class MybatisPlusConfig { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor(HttpServletRequest request) { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + + // 多租户插件配置 + TenantLineHandler tenantLineHandler = new TenantLineHandler() { + @Override + public Expression getTenantId() { +// String device_id = request.getHeader("device-id"); +// System.out.println("device_id = " + device_id); + // 从设备请求头拿ID + String DeviceID = request.getHeader("Device-ID"); + if (StrUtil.isNotBlank(DeviceID)) { + return new LongValue(10048); + } + // 从请求头拿ID + final String tenantId = request.getHeader("tenantId"); + if(tenantId != null){ + return new LongValue(tenantId); + } + return getLoginUserTenantId(); + } + + @Override + public boolean ignoreTable(String tableName) { + return Arrays.asList( + "sys_dictionary", + "sys_dictionary_data", + "oa_app", + "apps_test_data" + ).contains(tableName); + } + }; + TenantLineInnerInterceptor tenantLineInnerInterceptor = new TenantLineInnerInterceptor(tenantLineHandler); + interceptor.addInnerInterceptor(tenantLineInnerInterceptor); + + // 分页插件配置 + PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); + interceptor.addInnerInterceptor(paginationInnerInterceptor); + + return interceptor; + } + + /** + * 获取当前登录用户的租户id + * + * @return Integer + */ + public Expression getLoginUserTenantId() { + try { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + Object object = authentication.getPrincipal(); + if (object instanceof User) { + return new LongValue(((User) object).getTenantId()); + } + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return new NullValue(); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/RestTemplateConfig.java b/src/main/java/com/gxwebsoft/common/core/config/RestTemplateConfig.java new file mode 100644 index 0000000..786798f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/RestTemplateConfig.java @@ -0,0 +1,29 @@ +package com.gxwebsoft.common.core.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.ClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.web.client.RestTemplate; + + +@Configuration +public class RestTemplateConfig { + + @Bean + public RestTemplate restTemplate(ClientHttpRequestFactory factory) { + RestTemplate restTemplate = new RestTemplate(factory); + restTemplate.getMessageConverters().add(new HttpMessageConverter()); + return restTemplate; + } + @Bean + public ClientHttpRequestFactory simpleClientHttpRequestFactory() { + SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); + // ms + factory.setReadTimeout(60000); + // ms + factory.setConnectTimeout(60000); + + return factory; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/SpringContextUtil.java b/src/main/java/com/gxwebsoft/common/core/config/SpringContextUtil.java new file mode 100644 index 0000000..4e6d883 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/SpringContextUtil.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.common.core.config; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +/** + * @Author ds + * @Date 2022-05-05 + */ +@Component +public class SpringContextUtil implements ApplicationContextAware { + /** + * spring的应用上下文 + */ + private static ApplicationContext applicationContext; + + /** + * 初始化时将应用上下文设置进applicationContext + * @param applicationContext + * @throws BeansException + */ + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContextUtil.applicationContext=applicationContext; + } + + public static ApplicationContext getApplicationContext(){ + return applicationContext; + } + + /** + * 根据bean名称获取某个bean对象 + * + * @param name bean名称 + * @return Object + * @throws BeansException + */ + public static Object getBean(String name) throws BeansException { + return applicationContext.getBean(name); + } + + /** + * 根据bean的class获取某个bean对象 + * @param beanClass + * @param + * @return + * @throws BeansException + */ + public static T getBean(Class beanClass) throws BeansException { + return applicationContext.getBean(beanClass); + } + + /** + * 获取spring.profiles.active + * @return + */ + public static String getProfile(){ + return getApplicationContext().getEnvironment().getActiveProfiles()[0]; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/SwaggerConfig.java b/src/main/java/com/gxwebsoft/common/core/config/SwaggerConfig.java new file mode 100644 index 0000000..32c56c8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/SwaggerConfig.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.common.core.config; + +import cn.hutool.core.util.StrUtil; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.oas.annotations.EnableOpenApi; +import springfox.documentation.service.*; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * Swagger配置 + * + * @author WebSoft + * @since 2018-02-22 11:29:05 + */ +@EnableOpenApi +@Configuration +public class SwaggerConfig { + @Resource + private ConfigProperties config; + + @Bean + public Docket createRestApi() { + Docket docket = new Docket(DocumentationType.OAS_30); + if (StrUtil.isNotBlank(config.getSwaggerHost())) { + docket.host(config.getSwaggerHost()); + } + return docket + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.basePackage(config.getSwaggerBasePackage())) + .paths(PathSelectors.any()) + .build() + .securitySchemes(securitySchemes()) + .securityContexts(securityContexts()); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title(config.getSwaggerTitle()) + .description(config.getSwaggerDescription()) + .version(config.getSwaggerVersion()) + .termsOfServiceUrl("") + .build(); + } + + private List securitySchemes() { + return Collections.singletonList( + new ApiKey("Authorization", "Authorization", "header") + ); + } + + private List securityContexts() { + AuthorizationScope[] scopes = {new AuthorizationScope("global", "accessEverything")}; + List references = Collections.singletonList( + new SecurityReference("Authorization", scopes) + ); + return Collections.singletonList(SecurityContext.builder() + .securityReferences(references) + .build()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/config/WebMvcConfig.java b/src/main/java/com/gxwebsoft/common/core/config/WebMvcConfig.java new file mode 100644 index 0000000..2ed9d8b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/config/WebMvcConfig.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.core.config; + +import com.gxwebsoft.common.core.Constants; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * WebMvc配置, 拦截器、资源映射等都在此配置 + * + * @author WebSoft + * @since 2019-06-12 10:11:16 + */ +@Configuration +public class WebMvcConfig implements WebMvcConfigurer { + + /** + * 支持跨域访问 + */ + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOriginPatterns("*") + .allowedHeaders("*") + .exposedHeaders(Constants.TOKEN_HEADER_NAME) + .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH") + .allowCredentials(true) + .maxAge(3600); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/BalanceConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/BalanceConstants.java new file mode 100644 index 0000000..6857250 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/BalanceConstants.java @@ -0,0 +1,10 @@ +package com.gxwebsoft.common.core.constants; + +public class BalanceConstants { + // 余额变动场景 + public static final Integer BALANCE_RECHARGE = 10; // 用户充值 + public static final Integer BALANCE_USE = 20; // 用户消费 + public static final Integer BALANCE_RE_LET = 21; // 续租 + public static final Integer BALANCE_ADMIN = 30; // 管理员操作 + public static final Integer BALANCE_REFUND = 40; // 订单退款 +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/OrderConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/OrderConstants.java new file mode 100644 index 0000000..e866654 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/OrderConstants.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.core.constants; + +public class OrderConstants { + // 支付方式 + public static final String PAY_METHOD_BALANCE = "10"; // 余额支付 + public static final String PAY_METHOD_WX = "20"; // 微信支付 + public static final String PAY_METHOD_ALIPAY = "30"; // 支付宝支付 + public static final String PAY_METHOD_OTHER = "40"; // 其他支付 + + // 付款状态 + public static final Integer PAY_STATUS_NO_PAY = 10; // 未付款 + public static final Integer PAY_STATUS_SUCCESS = 20; // 已付款 + + // 发货状态 + public static final Integer DELIVERY_STATUS_NO = 10; // 未发货 + public static final Integer DELIVERY_STATUS_YES = 20; // 已发货 + public static final Integer DELIVERY_STATUS_30 = 30; // 部分发货 + + // 收货状态 + public static final Integer RECEIPT_STATUS_NO = 10; // 未收货 + public static final Integer RECEIPT_STATUS_YES = 20; // 已收货 + public static final Integer RECEIPT_STATUS_RETURN = 30; // 已退货 + + // 订单状态 + public static final Integer ORDER_STATUS_DOING = 10; // 进行中 + public static final Integer ORDER_STATUS_CANCEL = 20; // 已取消 + public static final Integer ORDER_STATUS_TO_CANCEL = 21; // 待取消 + public static final Integer ORDER_STATUS_COMPLETED = 30; // 已完成 + + // 订单结算状态 + public static final Integer ORDER_SETTLED_YES = 1; // 已结算 + public static final Integer ORDER_SETTLED_NO = 0; // 未结算 + + + + +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/ProfitConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/ProfitConstants.java new file mode 100644 index 0000000..2cb60fd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/ProfitConstants.java @@ -0,0 +1,9 @@ +package com.gxwebsoft.common.core.constants; + +public class ProfitConstants { + // 收益类型 + public static final Integer PROFIT_TYPE10 = 10; // 推广收益 + public static final Integer PROFIT_TYPE20 = 20; // 团队收益 + public static final Integer PROFIT_TYPE30 = 30; // 门店收益 + public static final Integer PROFIT_TYPE40 = 30; // 区域收益 +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/RedisConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/RedisConstants.java new file mode 100644 index 0000000..2765754 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/RedisConstants.java @@ -0,0 +1,39 @@ +package com.gxwebsoft.common.core.constants; + +public class RedisConstants { + // 短信验证码Key + public static final String SMS_CODE_KEY = "sms"; + // 验证码过期时间 + public static final Long SMS_CODE_TTL = 5L; + // 微信凭证access-token + public static final String ACCESS_TOKEN_KEY = "access-token"; + // 空值防止击穿数据库 + public static final Long CACHE_NULL_TTL = 2L; + // 商户信息 + public static final String MERCHANT_KEY = "merchant"; + // 添加商户定位点 + public static final String MERCHANT_GEO_KEY = "merchant-geo"; + + // token + public static final String TOKEN_USER_ID = "cache:token:"; + // 排行榜 + public static final String USER_RANKING_BY_APPS = "userRankingByApps"; + // 搜索历史 + public static final String SEARCH_HISTORY = "searchHistory"; + // 租户系统设置信息 + public static final String TEN_ANT_SETTING_KEY = "setting"; + // 排行榜Key + public static final String USER_RANKING_BY_APPS_5 = "cache5:userRankingByApps"; + + + + // 哗啦啦key + public static final String getAllShop = "allShop"; + public static final String getBaseInfo = "baseInfo"; + public static final String getFoodClassCategory = "foodCategory"; + public static final String getOpenFood = "openFood"; + public static final String haulalaGeoKey = "cache10:hualala-geo"; + public static final String HLL_CART_KEY = "hll-cart"; // hll-cart[shopId]:[userId] + public static final String HLL_CART_FOOD_KEY = "hll-cart-list"; // hll-cart-list[shopId]:[userId] + +} diff --git a/src/main/java/com/gxwebsoft/common/core/constants/WxOfficialConstants.java b/src/main/java/com/gxwebsoft/common/core/constants/WxOfficialConstants.java new file mode 100644 index 0000000..a025610 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/constants/WxOfficialConstants.java @@ -0,0 +1,6 @@ +package com.gxwebsoft.common.core.constants; + +public class WxOfficialConstants { + // 获取 Access token + public static final String GET_ACCESS_TOKEN_API = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; +} diff --git a/src/main/java/com/gxwebsoft/common/core/exception/BusinessException.java b/src/main/java/com/gxwebsoft/common/core/exception/BusinessException.java new file mode 100644 index 0000000..8e10e82 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/exception/BusinessException.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.core.exception; + +import com.gxwebsoft.common.core.Constants; + +/** + * 自定义业务异常 + * + * @author WebSoft + * @since 2018-02-22 11:29:28 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + private Integer code; + + public BusinessException() { + this(Constants.RESULT_ERROR_MSG); + } + + public BusinessException(String message) { + this(Constants.RESULT_ERROR_CODE, message); + } + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + } + + public BusinessException(Integer code, String message, Throwable cause) { + super(message, cause); + this.code = code; + } + + public BusinessException(Integer code, String message, Throwable cause, + boolean enableSuppression, boolean writableStackTrace) { + super(message, cause, enableSuppression, writableStackTrace); + this.code = code; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/exception/GlobalExceptionHandler.java b/src/main/java/com/gxwebsoft/common/core/exception/GlobalExceptionHandler.java new file mode 100644 index 0000000..6649a2d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/exception/GlobalExceptionHandler.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.core.exception; + +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.web.HttpRequestMethodNotSupportedException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletResponse; + +/** + * 全局异常处理器 + * + * @author WebSoft + * @since 2018-02-22 11:29:30 + */ +@ControllerAdvice +public class GlobalExceptionHandler { + private final Logger logger = LoggerFactory.getLogger(getClass()); + + @ResponseBody + @ExceptionHandler(HttpRequestMethodNotSupportedException.class) + public ApiResult methodNotSupportedExceptionHandler(HttpRequestMethodNotSupportedException e, + HttpServletResponse response) { + CommonUtil.addCrossHeaders(response); + return new ApiResult<>(Constants.RESULT_ERROR_CODE, "请求方式不正确").setError(e.toString()); + } + + @ResponseBody + @ExceptionHandler(AccessDeniedException.class) + public ApiResult accessDeniedExceptionHandler(AccessDeniedException e, HttpServletResponse response) { + CommonUtil.addCrossHeaders(response); + return new ApiResult<>(Constants.UNAUTHORIZED_CODE, Constants.UNAUTHORIZED_MSG).setError(e.toString()); + } + + @ResponseBody + @ExceptionHandler(BusinessException.class) + public ApiResult businessExceptionHandler(BusinessException e, HttpServletResponse response) { + CommonUtil.addCrossHeaders(response); + return new ApiResult<>(e.getCode(), e.getMessage()); + } + + @ResponseBody + @ExceptionHandler(Throwable.class) + public ApiResult exceptionHandler(Throwable e, HttpServletResponse response) { + logger.error(e.getMessage(), e); + CommonUtil.addCrossHeaders(response); + return new ApiResult<>(Constants.RESULT_ERROR_CODE, Constants.RESULT_ERROR_MSG).setError(e.toString()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtAccessDeniedHandler.java b/src/main/java/com/gxwebsoft/common/core/security/JwtAccessDeniedHandler.java new file mode 100644 index 0000000..66acb5c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtAccessDeniedHandler.java @@ -0,0 +1,29 @@ +package com.gxwebsoft.common.core.security; + +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.utils.CommonUtil; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.web.access.AccessDeniedHandler; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 没有访问权限异常处理 + * + * @author WebSoft + * @since 2020-03-25 00:35:03 + */ +@Component +public class JwtAccessDeniedHandler implements AccessDeniedHandler { + + @Override + public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException e) + throws IOException, ServletException { + CommonUtil.responseError(response, Constants.UNAUTHORIZED_CODE, Constants.UNAUTHORIZED_MSG, e.getMessage()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationEntryPoint.java b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationEntryPoint.java new file mode 100644 index 0000000..42b7f3f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationEntryPoint.java @@ -0,0 +1,30 @@ +package com.gxwebsoft.common.core.security; + +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.utils.CommonUtil; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 没有登录异常处理 + * + * @author WebSoft + * @since 2020-03-25 00:35:03 + */ +@Component +public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint { + + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) + throws IOException, ServletException { + CommonUtil.responseError(response, Constants.UNAUTHENTICATED_CODE, Constants.UNAUTHENTICATED_MSG, + e.getMessage()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java new file mode 100644 index 0000000..1edca08 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtAuthenticationFilter.java @@ -0,0 +1,85 @@ +package com.gxwebsoft.common.core.security; + +import cn.hutool.core.util.StrUtil; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.LoginRecordService; +import com.gxwebsoft.common.system.service.UserService; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.ExpiredJwtException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.annotation.Resource; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 处理携带token的请求过滤器 + * + * @author WebSoft + * @since 2020-03-30 20:48:05 + */ +@Component +public class JwtAuthenticationFilter extends OncePerRequestFilter { + @Resource + private ConfigProperties configProperties; + @Resource + private UserService userService; + @Resource + private LoginRecordService loginRecordService; + + @Override + protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) + throws ServletException, IOException { + String access_token = JwtUtil.getAccessToken(request); + if (StrUtil.isNotBlank(access_token)) { + try { + // 解析token + Claims claims = JwtUtil.parseToken(access_token, configProperties.getTokenKey()); + JwtSubject jwtSubject = JwtUtil.getJwtSubject(claims); + User user = userService.getByUsername(jwtSubject.getUsername(), jwtSubject.getTenantId()); + if (user == null) { + throw new UsernameNotFoundException("Username not found"); + } + List authorities = user.getAuthorities().stream() + .filter(m -> StrUtil.isNotBlank(m.getAuthority())).collect(Collectors.toList()); + UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken( + user, null, authorities); + SecurityContextHolder.getContext().setAuthentication(authentication); + // token将要过期签发新token, 防止突然退出登录 + long expiration = (claims.getExpiration().getTime() - new Date().getTime()) / 1000 / 60; + if (expiration < configProperties.getTokenRefreshTime()) { + String token = JwtUtil.buildToken(jwtSubject, configProperties.getTokenExpireTime(), + configProperties.getTokenKey()); + response.addHeader(Constants.TOKEN_HEADER_NAME, token); + loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_REFRESH, null, + user.getTenantId(), request); + } + } catch (ExpiredJwtException e) { + CommonUtil.responseError(response, Constants.TOKEN_EXPIRED_CODE, Constants.TOKEN_EXPIRED_MSG, + e.getMessage()); + return; + } catch (Exception e) { + CommonUtil.responseError(response, Constants.BAD_CREDENTIALS_CODE, Constants.BAD_CREDENTIALS_MSG, + e.toString()); + return; + } + } + chain.doFilter(request, response); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtSubject.java b/src/main/java/com/gxwebsoft/common/core/security/JwtSubject.java new file mode 100644 index 0000000..1a0ff7d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtSubject.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.core.security; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * Jwt载体 + * + * @author WebSoft + * @since 2021-09-03 00:11:12 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +public class JwtSubject implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 账号 + */ + private String username; + + /** + * 租户id + */ + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/JwtUtil.java b/src/main/java/com/gxwebsoft/common/core/security/JwtUtil.java new file mode 100644 index 0000000..334bbe8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/JwtUtil.java @@ -0,0 +1,152 @@ +package com.gxwebsoft.common.core.security; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.servlet.ServletUtil; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.shop.entity.Payment; +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import io.jsonwebtoken.io.Decoders; +import io.jsonwebtoken.io.Encoders; +import io.jsonwebtoken.security.Keys; + +import javax.servlet.http.HttpServletRequest; +import java.security.Key; +import java.util.Date; + +/** + * JWT工具类 + * + * @author WebSoft + * @since 2018-01-21 16:30:59 + */ +public class JwtUtil { + + /** + * 获取请求中的access_token + * + * @param request HttpServletRequest + * @return String + */ + public static String getAccessToken(HttpServletRequest request) { + String access_token = ServletUtil.getHeaderIgnoreCase(request, Constants.TOKEN_HEADER_NAME); + if (StrUtil.isNotBlank(access_token)) { + if (access_token.startsWith(Constants.TOKEN_TYPE)) { + access_token = StrUtil.removePrefix(access_token, Constants.TOKEN_TYPE).trim(); + } + } else { + access_token = request.getParameter(Constants.TOKEN_PARAM_NAME); + } + return access_token; + } + + /** + * 生成token + * + * @param subject 载体 + * @param expire 过期时间 + * @param base64EncodedKey base64编码的Key + * @return token + */ + public static String buildToken(JwtSubject subject, Long expire, String base64EncodedKey) { + return buildToken(JSONUtil.toJSONString(subject), expire, decodeKey(base64EncodedKey)); + } + + /** + * 生成token + * + * @param subject 载体 + * @param expire 过期时间 + * @param key 密钥 + * @return token + */ + public static String buildToken(String subject, Long expire, Key key) { + Date expireDate = new Date(new Date().getTime() + 1000 * expire); + return Jwts.builder() + .setSubject(subject) + .setExpiration(expireDate) + .setIssuedAt(new Date()) + .signWith(key) + .compact(); + } + + /** + * 解析token + * + * @param token token + * @param base64EncodedKey base64编码的Key + * @return Claims + */ + public static Claims parseToken(String token, String base64EncodedKey) { + return parseToken(token, decodeKey(base64EncodedKey)); + } + + /** + * 解析token + * + * @param token token + * @param key 密钥 + * @return Claims + */ + public static Claims parseToken(String token, Key key) { + return Jwts.parserBuilder() + .setSigningKey(key) + .build() + .parseClaimsJws(token) + .getBody(); + } + + /** + * 获取JwtSubject + * + * @param claims Claims + * @return JwtSubject + */ + public static JwtSubject getJwtSubject(Claims claims) { + return JSONUtil.parseObject(claims.getSubject(), JwtSubject.class); + } + + /** + * 解析支付方式里的json数据 + * + * @param payment Payment + * @return Payment + */ + public static Payment getPaymentConfig(Payment payment){ + return JSONUtil.parseObject(payment.getConfig(), Payment.class); + } + + /** + * 生成Key + * + * @return Key + */ + public static Key randomKey() { + return Keys.secretKeyFor(SignatureAlgorithm.HS256); + } + + /** + * base64编码key + * + * @return String + */ + public static String encodeKey(Key key) { + return Encoders.BASE64.encode(key.getEncoded()); + } + + /** + * base64编码Key + * + * @param base64EncodedKey base64编码的key + * @return Key + */ + public static Key decodeKey(String base64EncodedKey) { + if (StrUtil.isBlank(base64EncodedKey)) { + return null; + } + return Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64EncodedKey)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java b/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java new file mode 100644 index 0000000..aa31f93 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java @@ -0,0 +1,97 @@ +package com.gxwebsoft.common.core.security; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +import javax.annotation.Resource; + +/** + * Spring Security配置 + * + * @author WebSoft + * @since 2020-03-23 18:04:52 + */ +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Resource + private JwtAccessDeniedHandler jwtAccessDeniedHandler; + @Resource + private JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; + @Resource + private JwtAuthenticationFilter jwtAuthenticationFilter; + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests() + .antMatchers(HttpMethod.OPTIONS, "/**") + .permitAll() + .antMatchers(HttpMethod.GET, "/api/file/**","/**", "/api/captcha", "/") + .permitAll() + .antMatchers( + "/api/login", + "/api/register", + "/druid/**", + "/swagger-ui.html", + "/swagger-resources/**", + "/webjars/**", + "/v2/api-docs", + "/v3/api-docs", + "/swagger-ui/**", + "/api/open/**", + "/hxz/v1/**", + "/api/sendSmsCaptcha", + "/api/login-alipay/*", + "/api/wx-login/loginByMpWxPhone", + "/api/shop/payment/mp-alipay/notify", + "/api/shop/payment/mp-alipay/test/**", + "/api/shop/payment/mp-alipay/getPhoneNumber", + "/api/shop/test/**", + "/api/shop/wx-login/**", + "/api/apps/hualala/**", + "/api/apps/hualala-cart/**", + "/api/apps/test-data/**", + "/api/wxWorkQrConnect", + "/WW_verify_QMv7HoblYU6z63bb.txt", + "/5zbYEPkyV4.txt", + "/api/love/user-plan-log/wx-pay/**" + ) + .permitAll() + .anyRequest() + .authenticated() + .and() + .sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.STATELESS) + .and() + .csrf() + .disable() + .cors() + .and() + .logout() + .disable() + .headers() + .frameOptions() + .disable() + .and() + .exceptionHandling() + .accessDeniedHandler(jwtAccessDeniedHandler) + .authenticationEntryPoint(jwtAuthenticationEntryPoint) + .and() + .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); + } + + @Bean + public BCryptPasswordEncoder bCryptPasswordEncoder() { + return new BCryptPasswordEncoder(); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/AlipayConfigUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/AlipayConfigUtil.java new file mode 100644 index 0000000..42975ef --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/AlipayConfigUtil.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.common.core.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayConstants; +import com.alipay.api.CertAlipayRequest; +import com.alipay.api.DefaultAlipayClient; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 支付宝工具类 + * @author leng + * + */ +@Component +public class AlipayConfigUtil { + private final StringRedisTemplate stringRedisTemplate; + public Integer tenantId; + public String gateway; + public JSONObject config; + public String appId; + public String privateKey; + public String appCertPublicKey; + public String alipayCertPublicKey; + public String alipayRootCert; + + @Resource + private ConfigProperties pathConfig; + + public AlipayConfigUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + // 实例化客户端 + public DefaultAlipayClient alipayClient(Integer tenantId) throws AlipayApiException { + this.gateway = "https://openapi.alipay.com/gateway.do"; + this.tenantId = tenantId; + this.payment(tenantId); + CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); + certAlipayRequest.setServerUrl(this.gateway); + certAlipayRequest.setAppId(this.appId); + certAlipayRequest.setPrivateKey(this.privateKey); + certAlipayRequest.setFormat(AlipayConstants.FORMAT_JSON); + certAlipayRequest.setCharset(AlipayConstants.CHARSET_UTF8); + certAlipayRequest.setSignType(AlipayConstants.SIGN_TYPE_RSA2); + certAlipayRequest.setCertPath(this.appCertPublicKey); + certAlipayRequest.setAlipayPublicCertPath(this.alipayCertPublicKey); + certAlipayRequest.setRootCertPath(this.alipayRootCert); +// System.out.println("this.appId = " + this.appId); +// System.out.println("this.appId = " + this.gateway); +// System.out.println("this.appId = " + this.privateKey); +// System.out.println("this.appId = " + this.appCertPublicKey); +// System.out.println("this.appId = " + this.alipayCertPublicKey); +// System.out.println("this.appId = " + this.alipayRootCert); +// System.out.println("this.config = " + this.config); + return new DefaultAlipayClient(certAlipayRequest); + } + + /** + * 获取支付宝秘钥 + */ + public JSONObject payment(Integer tenantId) { + System.out.println("tenantId = " + tenantId); + String key = "cache".concat(tenantId.toString()).concat(":setting:payment"); + System.out.println("key = " + key); + String cache = stringRedisTemplate.opsForValue().get(key); + if (cache == null) { + throw new BusinessException("支付方式未配置"); + } + // 解析json数据 + JSONObject payment = JSON.parseObject(cache.getBytes()); + this.config = payment; + this.appId = payment.getString("alipayAppId"); + this.privateKey = payment.getString("privateKey"); + this.appCertPublicKey = pathConfig.getUploadPath() + "file" + payment.getString("appCertPublicKey"); + this.alipayCertPublicKey = pathConfig.getUploadPath() + "file" + payment.getString("alipayCertPublicKey"); + this.alipayRootCert = pathConfig.getUploadPath() + "file" + payment.getString("alipayRootCert"); + return payment; + } + + public String appId(){ + return this.appId; + } + + public String privateKey(){ + return this.privateKey; + } + + public String appCertPublicKey(){ + return this.appCertPublicKey; + } + + public String alipayCertPublicKey(){ + return this.alipayCertPublicKey; + } + + public String alipayRootCert(){ + return this.alipayRootCert; + } + + + + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/BtUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/BtUtil.java new file mode 100644 index 0000000..53e1d3f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/BtUtil.java @@ -0,0 +1,149 @@ +package com.gxwebsoft.common.core.utils; + +import com.gxwebsoft.oa.entity.Assets; +import com.gxwebsoft.oa.service.AssetsService; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.math.BigInteger; +import java.net.URL; +import java.net.URLConnection; +import java.security.MessageDigest; +import java.util.Date; + +/** + * 宝塔工具类 + * @author 科技小王子 + * + */ +@Component +public class BtUtil { + public static Integer tenantId; + public static String server; + public static String token; + private static String timestamp; + @Resource + private AssetsService assetsService; + + // 实例化客户端 + public BtUtil client(Integer id) { + Assets assets = assetsService.getByIdRel(id); + try { + String btSign = assets.getBtSign(); + server = "http://".concat(assets.getCode()).concat(":9003"); + String url = "http://".concat(assets.getCode()) + ":9003/system?action=GetSystemTotal"; + timestamp = (new Date().getTime()+""); + String md5Sign = getMd5(btSign); + String temp = timestamp+md5Sign; + token = getMd5(temp); + + String json = "request_time="+timestamp+"&request_token="+token; + String responseText = sendPost(url,json); + System.out.println("responseText = " + responseText); + System.out.println(responseText); + } catch (Exception e) { + e.printStackTrace(); + } + return this; + } + + public String getSystemTotal(){ + String url = server.concat("/system?action=GetSystemTotal"); + String json = "request_time="+timestamp+"&request_token="+token; + String responseText = sendPost(url,json); + System.out.println("responseText = " + responseText); + return responseText; + } + + public String getDiskInfo(){ + String url = server.concat("/system?action=GetDiskInfo"); + String json = "request_time="+timestamp+"&request_token="+token; + return sendPost(url,json); + } + +// public void config() +// { +// try { +// System.out.println("tenantId = " + tenantId); +// String btSign = "XXXXXXXXXXXXXXXXXXXXXXXX"; +// String url = "http://XXX.XXX.XXX.XXX:8888/system?action=GetSystemTotal"; +// String timestamp = (new Date().getTime()+""); +// String md5Sign = getMd5(btSign); +// String temp = timestamp+md5Sign; +// String token = getMd5(temp); +// +// String json = "request_time="+timestamp+"&request_token="+token; +// String responseText = sendPost(url,json); +// System.out.println(responseText); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + + public static String getMd5(String str) throws Exception + { + try { + // 生成一个MD5加密计算摘要 + MessageDigest md = MessageDigest.getInstance("MD5"); + // 计算md5函数 + md.update(str.getBytes()); + // digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符 + // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 + return new BigInteger(1, md.digest()).toString(16); + } catch (Exception e) { + throw new Exception("MD5加密出现错误,"+e.toString()); + } + } + + public static String sendPost(String url, String param) { + PrintWriter out = null; + BufferedReader in = null; + StringBuffer result = new StringBuffer(); + try { + URL realUrl = new URL(url); + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("accept", "text/xml,text/javascript,text/html,application/json"); + conn.setRequestProperty("connection", "Keep-Alive"); + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + // 发送请求参数 + out.print(param); + // flush输出流的缓冲 + out.flush(); + // 定义BufferedReader输入流来读取URL的响应 + in = new BufferedReader(new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result.append(line); + } + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!"+e); + e.printStackTrace(); + } + //使用finally块来关闭输出流、输入流 + finally{ + try{ + if(out!=null){ + out.close(); + } + if(in!=null){ + in.close(); + } + } + catch(IOException ex){ + ex.printStackTrace(); + } + } + return result.toString(); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/CacheClient.java b/src/main/java/com/gxwebsoft/common/core/utils/CacheClient.java new file mode 100644 index 0000000..c56cd45 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/CacheClient.java @@ -0,0 +1,264 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.result.RedisResult; +import org.springframework.data.geo.Point; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; + +import static com.gxwebsoft.common.core.constants.RedisConstants.CACHE_NULL_TTL; + +@Component +public class CacheClient { + private final StringRedisTemplate stringRedisTemplate; + public static Integer tenantId; + + public CacheClient(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + /** + * 写入redis缓存 + * @param key [表名]:id + * @param entity 实体类对象 + * 示例 cacheClient.set("merchant:"+id,merchant) + */ + public void set(String key, T entity){ + stringRedisTemplate.opsForValue().set(prefix(key), JSONUtil.toJSONString(entity)); + } + + /** + * 写入redis缓存 + * @param key [表名]:id + * @param entity 实体类对象 + * 示例 cacheClient.set("merchant:"+id,merchant,1L,TimeUnit.DAYS) + */ + public void set(String key, T entity, Long time, TimeUnit unit){ + stringRedisTemplate.opsForValue().set(prefix(key), JSONUtil.toJSONString(entity),time,unit); + } + + /** + * 读取redis缓存 + * @param key [表名]:id + * 示例 cacheClient.get(key) + * @return merchant + */ + public String get(String key) { + return stringRedisTemplate.opsForValue().get(prefix(key)); + } + + /** + * 读取redis缓存 + * @param key [表名]:id + * @param clazz Merchant.class + * @param + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + * @return merchant + */ + public T get(String key, Class clazz) { + String json = stringRedisTemplate.opsForValue().get(prefix(key)); + if(StrUtil.isNotBlank(json)){ + return JSONUtil.parseObject(json, clazz); + } + return null; + } + + /** + * 写redis缓存(哈希类型) + * @param key [表名]:id + * @param field 字段 + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + */ + public void hPut(String key, String field, T entity) { + stringRedisTemplate.opsForHash().put(prefix(key),field,JSONUtil.toJSONString(entity)); + } + + /** + * 写redis缓存(哈希类型) + * @param key [表名]:id + * @param map 字段 + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + */ + public void hPutAll(String key, Map map) { + stringRedisTemplate.opsForHash().putAll(prefix(key),map); + } + + /** + * 读取redis缓存(哈希类型) + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + * @param key [表名]:id + * @param field 字段 + * @return merchant + */ + public T hGet(String key, String field, Class clazz) { + Object obj = stringRedisTemplate.opsForHash().get(prefix(key), field); + return JSONUtil.parseObject(JSONUtil.toJSONString(obj),clazz); + } + + public List hValues(String key){ + return stringRedisTemplate.opsForHash().values(prefix(key)); + } + + public Long hSize(String key){ + return stringRedisTemplate.opsForHash().size(prefix(key)); + } + + // 逻辑过期方式写入redis + public void setWithLogicalExpire(String key, T value, Long time, TimeUnit unit){ + // 设置逻辑过期时间 + final RedisResult redisResult = new RedisResult<>(); + redisResult.setData(value); + redisResult.setExpireTime(LocalDateTime.now().plusSeconds(unit.toSeconds(time))); + stringRedisTemplate.opsForValue().set(prefix(key),JSONUtil.toJSONString(redisResult)); + } + + // 读取redis + public R query(String keyPrefix, ID id, Class clazz, Function dbFallback, Long time, TimeUnit unit){ + String key = keyPrefix + id; + // 1.从redis查询缓存 + final String json = stringRedisTemplate.opsForValue().get(prefix(key)); + // 2.判断是否存在 + if (StrUtil.isNotBlank(json)) { + // 3.存在,直接返回 + return JSONUtil.parseObject(json,clazz); + } + // 判断命中的是否为空值 + if (json != null) { + return null; + } + // 4. 不存在,跟进ID查询数据库 + R r = dbFallback.apply(id); + // 5. 数据库不存在,返回错误 + if(r == null){ + // 空值写入数据库 + this.set(prefix(key),"",CACHE_NULL_TTL,TimeUnit.MINUTES); + return null; + } + // 写入redis + this.set(prefix(key),r,time,unit); + return r; + } + + /** + * 添加商户定位点 + * @param key geo + * @param id + * 示例 cacheClient.geoAdd("merchant-geo",merchant) + */ + public void geoAdd(String key, Double x, Double y, String id){ + stringRedisTemplate.opsForGeo().add(prefix(key),new Point(x,y),id); + } + + /** + * 删除定位 + * @param key geo + * @param id + * 示例 cacheClient.geoRemove("merchant-geo",id) + */ + public void geoRemove(String key, Integer id){ + stringRedisTemplate.opsForGeo().remove(prefix(key),id.toString()); + } + + + + public void sAdd(String key, T entity){ + stringRedisTemplate.opsForSet().add(prefix(key),JSONUtil.toJSONString(entity)); + } + + public Set sMembers(String key){ + return stringRedisTemplate.opsForSet().members(prefix(key)); + } + + // 更新排行榜 + public void zAdd(String key, Integer userId, Double value) { + stringRedisTemplate.opsForZSet().add(prefix(key),userId.toString(),value); + } + // 增加元素的score值,并返回增加后的值 + public Double zIncrementScore(String key,Integer userId, Double delta){ + return stringRedisTemplate.opsForZSet().incrementScore(key, userId.toString(), delta); + } + // 获取排名榜 + public Set range(String key, Integer start, Integer end) { + return stringRedisTemplate.opsForZSet().range(prefix(key), start, end); + } + // 获取排名榜 + public Set reverseRange(String key, Integer start, Integer end){ + return stringRedisTemplate.opsForZSet().reverseRange(prefix(key), start, end); + } + // 获取分数 + public Double score(String key, Object value){ + return stringRedisTemplate.opsForZSet().score(prefix(key), value); + } + + public void delete(String key){ + stringRedisTemplate.delete(prefix(key)); + } + + // 存储在list头部 + public void leftPush(String key, String keyword){ + stringRedisTemplate.opsForList().leftPush(prefix(key),keyword); + } + + // 获取列表指定范围内的元素 + public List listRange(String key,Long start, Long end){ + return stringRedisTemplate.opsForList().range(prefix(key), start, end); + } + + // 获取列表长度 + public Long listSize(String key){ + return stringRedisTemplate.opsForList().size(prefix(key)); + } + + // 裁剪list + public void listTrim(String key){ + stringRedisTemplate.opsForList().trim(prefix(key), 0L, 100L); + } + + /** + * 读取后台系统设置信息 + * @param keyName 键名wx-word + * @param tenantId 租户ID + * @return + * key示例 cache10048:setting:wx-work + */ + public JSONObject getSettingInfo(String keyName,Integer tenantId){ + String key = "cache" + tenantId + ":setting:" + keyName; + final String cache = stringRedisTemplate.opsForValue().get(key); + assert cache != null; + return JSON.parseObject(cache); + } + + /** + * KEY前缀 + * cache[tenantId]:[key+id] + */ + public static String prefix(String key){ + String prefix = "cache"; + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + Object object = authentication.getPrincipal(); + if (object instanceof User) { + final Integer tenantId = ((User) object).getTenantId(); + prefix = prefix.concat(tenantId.toString()).concat(":"); + } + } + return prefix.concat(key); + } + + // 组装key + public String key(String name,Integer id){ + return name.concat(":").concat(id.toString()); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/CommonUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/CommonUtil.java new file mode 100644 index 0000000..c11decb --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/CommonUtil.java @@ -0,0 +1,235 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.date.DatePattern; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.web.ApiResult; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; +import java.util.function.BiConsumer; +import java.util.function.Consumer; +import java.util.function.Function; + +/** + * 常用工具方法 + * + * @author WebSoft + * @since 2017-06-10 10:10:22 + */ +public class CommonUtil { + // 生成uuid的字符 + private static final String[] chars = new String[]{ + "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", + "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", + "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", + "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" + }; + + /** + * 生成8位uuid + * + * @return String + */ + public static String randomUUID8() { + StringBuilder sb = new StringBuilder(); + String uuid = UUID.randomUUID().toString().replace("-", ""); + for (int i = 0; i < 8; i++) { + String str = uuid.substring(i * 4, i * 4 + 4); + int x = Integer.parseInt(str, 16); + sb.append(chars[x % 0x3E]); + } + return sb.toString(); + } + + /** + * 生成16位uuid + * + * @return String + */ + public static String randomUUID16() { + StringBuilder sb = new StringBuilder(); + String uuid = UUID.randomUUID().toString().replace("-", ""); + for (int i = 0; i < 16; i++) { + String str = uuid.substring(i * 2, i * 2 + 2); + int x = Integer.parseInt(str, 16); + sb.append(chars[x % 0x3E]); + } + return sb.toString(); + } + + /** + * 获取当前时间 + * + * @return String + */ + public static String currentTime() { + Date date = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss"); + return sdf.format(date); + } + + /** + * 生成10位随机用户名 + * + * @return String + */ + public static String randomUsername(String prefix) { + Date date = new Date(); + SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss"); + String currentTime = sdf.format(date); + return prefix + currentTime; + } + + /** + * 生成订单号 + * 20233191166110426 + * 20230419135802391412 + * @return + */ + public static String createOrderNo() { + String prefix = DateTime.now().toString(DatePattern.PURE_DATETIME_PATTERN); + return prefix + RandomUtil.randomNumbers(2); + } + + /** + * 生成订单号 + * @param tenantId + * 20233191166110426 + * 20230419135802391412 + * @return + */ + public static String createOrderNo(String tenantId) { + String prefix = DateTime.now().toString(DatePattern.PURE_DATETIME_PATTERN); + return prefix + tenantId + RandomUtil.randomNumbers(2); + } + + /** + * 生成订单水流号 + * @param tenantId + * @return + */ + public static String serialNo(int tenantId) { + String prefix = DateTime.now().toString(DatePattern.PURE_DATETIME_PATTERN); + return prefix + tenantId + RandomUtil.randomNumbers(2); + } + + /** + * 检查List是否有重复元素 + * + * @param list List + * @param mapper 获取需要检查的字段的Function + * @param 数据的类型 + * @param 需要检查的字段的类型 + * @return boolean + */ + public static boolean checkRepeat(List list, Function mapper) { + for (int i = 0; i < list.size(); i++) { + for (int j = 0; j < list.size(); j++) { + if (i != j && mapper.apply(list.get(i)).equals(mapper.apply(list.get(j)))) { + return true; + } + } + } + return false; + } + + /** + * List转为树形结构 + * + * @param data List + * @param parentId 顶级的parentId + * @param parentIdMapper 获取parentId的Function + * @param idMapper 获取id的Function + * @param consumer 赋值children的Consumer + * @param 数据的类型 + * @param parentId的类型 + * @return List + */ + public static List toTreeData(List data, R parentId, + Function parentIdMapper, + Function idMapper, + BiConsumer> consumer) { + List result = new ArrayList<>(); + for (T d : data) { + R dParentId = parentIdMapper.apply(d); + if (ObjectUtil.equals(parentId, dParentId)) { + R dId = idMapper.apply(d); + List children = toTreeData(data, dId, parentIdMapper, idMapper, consumer); + consumer.accept(d, children); + result.add(d); + } + } + return result; + } + + /** + * 遍历树形结构数据 + * + * @param data List + * @param consumer 回调 + * @param mapper 获取children的Function + * @param 数据的类型 + */ + public static void eachTreeData(List data, Consumer consumer, Function> mapper) { + for (T d : data) { + consumer.accept(d); + List children = mapper.apply(d); + if (children != null && children.size() > 0) { + eachTreeData(children, consumer, mapper); + } + } + } + + /** + * 获取集合中的第一条数据 + * + * @param records 集合 + * @return 第一条数据 + */ + public static T listGetOne(List records) { + return records == null || records.size() == 0 ? null : records.get(0); + } + + /** + * 支持跨域 + * + * @param response HttpServletResponse + */ + public static void addCrossHeaders(HttpServletResponse response) { + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Methods", "*"); + response.setHeader("Access-Control-Allow-Headers", "*"); + response.setHeader("Access-Control-Expose-Headers", Constants.TOKEN_HEADER_NAME); + } + + /** + * 输出错误信息 + * + * @param response HttpServletResponse + * @param code 错误码 + * @param message 提示信息 + * @param error 错误信息 + */ + public static void responseError(HttpServletResponse response, Integer code, String message, String error) { + response.setContentType("application/json;charset=UTF-8"); + try { + PrintWriter out = response.getWriter(); + out.write(JSONUtil.toJSONString(new ApiResult<>(code, message, null, error))); + out.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/FileServerUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/FileServerUtil.java new file mode 100644 index 0000000..45201d2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/FileServerUtil.java @@ -0,0 +1,401 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.img.ImgUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IORuntimeException; +import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.StrUtil; +import org.apache.tika.Tika; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.net.MalformedURLException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * 文件上传下载工具类 + * + * @author WebSoft + * @since 2018-12-14 08:38:53 + */ +public class FileServerUtil { + // 除 text/* 外也需要设置输出编码的 content-type + private final static List SET_CHARSET_CONTENT_TYPES = Arrays.asList( + "application/json", + "application/javascript" + ); + + /** + * 上传文件 + * + * @param file MultipartFile + * @param directory 文件保存的目录 + * @param uuidName 是否用uuid命名 + * @return File + */ + public static File upload(MultipartFile file, String directory, boolean uuidName) + throws IOException, IllegalStateException { + File outFile = getUploadFile(file.getOriginalFilename(), directory, uuidName); + if (!outFile.getParentFile().exists()) { + if (!outFile.getParentFile().mkdirs()) { + throw new RuntimeException("make directory fail"); + } + } + file.transferTo(outFile); + return outFile; + } + + /** + * 上传base64格式文件 + * + * @param base64 base64编码字符 + * @param fileName 文件名称, 为空使用uuid命名 + * @param directory 文件保存的目录 + * @return File + */ + public static File upload(String base64, String fileName, String directory) + throws FileNotFoundException, IORuntimeException { + if (StrUtil.isBlank(base64) || !base64.startsWith("data:image/") || !base64.contains(";base64,")) { + throw new RuntimeException("base64 data error"); + } + String suffix = "." + base64.substring(11, base64.indexOf(";")); // 获取文件后缀 + boolean uuidName = StrUtil.isBlank(fileName); + File outFile = getUploadFile(uuidName ? suffix : fileName, directory, uuidName); + byte[] bytes = Base64.getDecoder().decode(base64.substring(base64.indexOf(";") + 8).getBytes()); + IoUtil.write(new FileOutputStream(outFile), true, bytes); + return outFile; + } + + /** + * 获取上传文件位置 + * + * @param name 文件名称 + * @param directory 上传目录 + * @param uuidName 是否使用uuid命名 + * @return File + */ + public static File getUploadFile(String name, String directory, boolean uuidName) { + // 当前日期作为上传子目录 + String dir = new SimpleDateFormat("yyyyMMdd/").format(new Date()); + // 获取文件后缀 + String suffix = (name == null || !name.contains(".")) ? "" : name.substring(name.lastIndexOf(".")); + // 使用uuid命名 + if (uuidName || name == null) { + String uuid = UUID.randomUUID().toString().replaceAll("-", ""); + return new File(directory, dir + uuid + suffix); + } + // 使用原名称, 存在相同则加(1) + File file = new File(directory, dir + name); + String prefix = StrUtil.removeSuffix(name, suffix); + int sameSize = 2; + while (file.exists()) { + file = new File(directory, dir + prefix + "(" + sameSize + ")" + suffix); + sameSize++; + } + return file; + } + + /** + * 查看文件, 支持断点续传 + * + * @param file 文件 + * @param pdfDir office转pdf输出目录 + * @param officeHome openOffice安装目录 + * @param response HttpServletResponse + * @param request HttpServletRequest + */ + public static void preview(File file, String pdfDir, String officeHome, + HttpServletResponse response, HttpServletRequest request) { + preview(file, false, null, pdfDir, officeHome, response, request); + } + + /** + * 查看文件, 支持断点续传 + * + * @param file 文件 + * @param forceDownload 是否强制下载 + * @param fileName 强制下载的文件名称 + * @param pdfDir office转pdf输出目录 + * @param officeHome openOffice安装目录 + * @param response HttpServletResponse + * @param request HttpServletRequest + */ + public static void preview(File file, boolean forceDownload, String fileName, String pdfDir, String officeHome, + HttpServletResponse response, HttpServletRequest request) { + CommonUtil.addCrossHeaders(response); + if (file == null || !file.exists()) { + outNotFund(response); + return; + } + if (forceDownload) { + setDownloadHeader(response, StrUtil.isBlank(fileName) ? file.getName() : fileName); + } else { + // office转pdf预览 + if (OpenOfficeUtil.canConverter(file.getName())) { + File pdfFile = OpenOfficeUtil.converterToPDF(file.getAbsolutePath(), pdfDir, officeHome); + if (pdfFile != null) { + file = pdfFile; + } + } + // 获取文件类型 + String contentType = getContentType(file); + if (contentType != null) { + response.setContentType(contentType); + // 设置编码 + if (contentType.startsWith("text/") || SET_CHARSET_CONTENT_TYPES.contains(contentType)) { + try { + String charset = JChardetFacadeUtil.detectCodepage(file.toURI().toURL()); + if (charset != null) { + response.setCharacterEncoding(charset); + } + } catch (MalformedURLException e) { + e.printStackTrace(); + } + } + } else { + setDownloadHeader(response, file.getName()); + } + } + response.setHeader("Cache-Control", "public"); + output(file, response, request); + } + + /** + * 查看缩略图 + * + * @param file 原文件 + * @param thumbnail 缩略图文件 + * @param size 缩略图文件的最大值(kb) + * @param response HttpServletResponse + * @param request HttpServletRequest + */ + public static void previewThumbnail(File file, File thumbnail, Integer size, + HttpServletResponse response, HttpServletRequest request) { + // 如果是图片并且缩略图不存在则生成 + if (!thumbnail.exists() && isImage(file)) { + long fileSize = file.length(); + if ((fileSize / 1024) > size) { + try { + if (thumbnail.getParentFile().mkdirs()) { + System.out.println("生成缩略图1>>>>>>>>>>>>>>>> = " + thumbnail); + ImgUtil.scale(file, thumbnail, size / (fileSize / 1024f)); + if (thumbnail.exists() && thumbnail.length() > file.length()) { + FileUtil.copy(file, thumbnail, true); + } + }else{ + System.out.println("生成缩略图2>>>>>>>>>>>>>>>> = " + thumbnail); + ImgUtil.scale(file, thumbnail, size / (fileSize / 1024f)); + if (thumbnail.exists() && thumbnail.length() > file.length()) { + FileUtil.copy(file, thumbnail, true); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } else { + preview(file, null, null, response, request); + return; + } + } + preview(thumbnail.exists() ? thumbnail : file, null, null, response, request); + } + + /** + * 输出文件流, 支持断点续传 + * + * @param file 文件 + * @param response HttpServletResponse + * @param request HttpServletRequest + */ + public static void output(File file, HttpServletResponse response, HttpServletRequest request) { + long length = file.length(); // 文件总大小 + long start = 0, to = length - 1; // 开始读取位置, 结束读取位置 + long lastModified = file.lastModified(); // 文件修改时间 + response.setHeader("Accept-Ranges", "bytes"); + response.setHeader("ETag", "\"" + length + "-" + lastModified + "\""); + response.setHeader("Last-Modified", new Date(lastModified).toString()); + String range = request.getHeader("Range"); + if (range != null) { + response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); + String[] ranges = range.replace("bytes=", "").split("-"); + start = Long.parseLong(ranges[0].trim()); + if (ranges.length > 1) { + to = Long.parseLong(ranges[1].trim()); + } + response.setHeader("Content-Range", "bytes " + start + "-" + to + "/" + length); + } + response.setHeader("Content-Length", String.valueOf(to - start + 1)); + try { + output(file, response.getOutputStream(), 2048, start, to); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 输出文件流 + * + * @param file 文件 + * @param os 输出流 + */ + public static void output(File file, OutputStream os) { + output(file, os, null); + } + + /** + * 输出文件流 + * + * @param file 文件 + * @param os 输出流 + * @param size 读取缓冲区大小 + */ + public static void output(File file, OutputStream os, Integer size) { + output(file, os, size, null, null); + } + + /** + * 输出文件流, 支持分片 + * + * @param file 文件 + * @param os 输出流 + * @param size 读取缓冲区大小 + * @param start 开始位置 + * @param to 结束位置 + */ + public static void output(File file, OutputStream os, Integer size, Long start, Long to) { + BufferedInputStream is = null; + try { + is = new BufferedInputStream(new FileInputStream(file)); + if (start != null) { + long skip = is.skip(start); + if (skip < start) { + System.out.println("ERROR: skip fail[ skipped=" + skip + ", start= " + start + " ]"); + } + to = to - start + 1; + } + byte[] bytes = new byte[size == null ? 2048 : size]; + int len; + if (to == null) { + while ((len = is.read(bytes)) != -1) { + os.write(bytes, 0, len); + } + } else { + while (to > 0 && (len = is.read(bytes)) != -1) { + os.write(bytes, 0, to < len ? (int) ((long) to) : len); + to -= len; + } + } + os.flush(); + } catch (IOException ignored) { + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (os != null) { + try { + os.close(); + } catch (IOException ignored) { + } + } + if (is != null) { + try { + is.close(); + } catch (IOException e) { + System.out.println(e.getMessage()); + } + } + } + } + + /** + * 获取文件类型 + * + * @param file 文件 + * @return String + */ + public static String getContentType(File file) { + String contentType = null; + if (file.exists()) { + try { + contentType = new Tika().detect(file); + } catch (IOException e) { + e.printStackTrace(); + } + } + return contentType; + } + + /** + * 判断文件是否是图片类型 + * + * @param file 文件 + * @return boolean + */ + public static boolean isImage(File file) { + return isImage(getContentType(file)); + } + + /** + * 判断文件是否是图片类型 + * + * @param contentType 文件类型 + * @return boolean + */ + public static boolean isImage(String contentType) { + return contentType != null && contentType.startsWith("image/"); + } + + /** + * 设置下载文件的header + * + * @param response HttpServletResponse + * @param fileName 文件名称 + */ + public static void setDownloadHeader(HttpServletResponse response, String fileName) { + response.setContentType("application/force-download"); + try { + fileName = URLEncoder.encode(fileName, "utf-8"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + response.setHeader("Content-Disposition", "attachment;fileName=" + fileName); + } + + /** + * 输出404错误页面 + * + * @param response HttpServletResponse + */ + public static void outNotFund(HttpServletResponse response) { + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + outMessage("404 Not Found", null, response); + } + + /** + * 输出错误页面 + * + * @param title 标题 + * @param message 内容 + * @param response HttpServletResponse + */ + public static void outMessage(String title, String message, HttpServletResponse response) { + response.setContentType("text/html;charset=UTF-8"); + try { + PrintWriter writer = response.getWriter(); + writer.write(""); + writer.write("" + title + ""); + writer.write("

" + title + "

"); + if (message != null) { + writer.write(message); + } + writer.write("

WebSoft File Server

"); + writer.flush(); + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/HttpUtils.java b/src/main/java/com/gxwebsoft/common/core/utils/HttpUtils.java new file mode 100644 index 0000000..888acc2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/HttpUtils.java @@ -0,0 +1,311 @@ +package com.gxwebsoft.common.core.utils; + +import org.apache.commons.lang3.StringUtils; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.conn.ClientConnectionManager; +import org.apache.http.conn.scheme.Scheme; +import org.apache.http.conn.scheme.SchemeRegistry; +import org.apache.http.conn.ssl.SSLSocketFactory; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.message.BasicNameValuePair; + +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class HttpUtils { + + /** + * get + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doGet(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpGet request = new HttpGet(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + /** + * post form + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param bodys + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + Map bodys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (bodys != null) { + List nameValuePairList = new ArrayList(); + + for (String key : bodys.keySet()) { + nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key))); + } + UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8"); + formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8"); + request.setEntity(formEntity); + } + + return httpClient.execute(request); + } + + /** + * Post String + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Post stream + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPost(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPost request = new HttpPost(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Put String + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + String body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (StringUtils.isNotBlank(body)) { + request.setEntity(new StringEntity(body, "utf-8")); + } + + return httpClient.execute(request); + } + + /** + * Put stream + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @param body + * @return + * @throws Exception + */ + public static HttpResponse doPut(String host, String path, String method, + Map headers, + Map querys, + byte[] body) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpPut request = new HttpPut(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + if (body != null) { + request.setEntity(new ByteArrayEntity(body)); + } + + return httpClient.execute(request); + } + + /** + * Delete + * + * @param host + * @param path + * @param method + * @param headers + * @param querys + * @return + * @throws Exception + */ + public static HttpResponse doDelete(String host, String path, String method, + Map headers, + Map querys) + throws Exception { + HttpClient httpClient = wrapClient(host); + + HttpDelete request = new HttpDelete(buildUrl(host, path, querys)); + for (Map.Entry e : headers.entrySet()) { + request.addHeader(e.getKey(), e.getValue()); + } + + return httpClient.execute(request); + } + + private static String buildUrl(String host, String path, Map querys) throws UnsupportedEncodingException { + StringBuilder sbUrl = new StringBuilder(); + sbUrl.append(host); + if (!StringUtils.isBlank(path)) { + sbUrl.append(path); + } + if (null != querys) { + StringBuilder sbQuery = new StringBuilder(); + for (Map.Entry query : querys.entrySet()) { + if (0 < sbQuery.length()) { + sbQuery.append("&"); + } + if (StringUtils.isBlank(query.getKey()) && !StringUtils.isBlank(query.getValue())) { + sbQuery.append(query.getValue()); + } + if (!StringUtils.isBlank(query.getKey())) { + sbQuery.append(query.getKey()); + if (!StringUtils.isBlank(query.getValue())) { + sbQuery.append("="); + sbQuery.append(URLEncoder.encode(query.getValue(), "utf-8")); + } + } + } + if (0 < sbQuery.length()) { + sbUrl.append("?").append(sbQuery); + } + } + + return sbUrl.toString(); + } + + private static HttpClient wrapClient(String host) { + HttpClient httpClient = new DefaultHttpClient(); + if (host.startsWith("https://")) { + sslClient(httpClient); + } + + return httpClient; + } + + private static void sslClient(HttpClient httpClient) { + try { + SSLContext ctx = SSLContext.getInstance("TLS"); + X509TrustManager tm = new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; + } + public void checkClientTrusted(X509Certificate[] xcs, String str) { + + } + public void checkServerTrusted(X509Certificate[] xcs, String str) { + + } + }; + ctx.init(null, new TrustManager[] { tm }, null); + SSLSocketFactory ssf = new SSLSocketFactory(ctx); + ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); + ClientConnectionManager ccm = httpClient.getConnectionManager(); + SchemeRegistry registry = ccm.getSchemeRegistry(); + registry.register(new Scheme("https", 443, ssf)); + } catch (KeyManagementException ex) { + throw new RuntimeException(ex); + } catch (NoSuchAlgorithmException ex) { + throw new RuntimeException(ex); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/gxwebsoft/common/core/utils/ImageUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/ImageUtil.java new file mode 100644 index 0000000..12808c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/ImageUtil.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.common.core.utils; + +import sun.misc.BASE64Encoder; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +public class ImageUtil { + public static String ImageBase64(String imgUrl) { + URL url = null; + InputStream is = null; + ByteArrayOutputStream outStream = null; + HttpURLConnection httpUrl = null; + try{ + url = new URL(imgUrl); + httpUrl = (HttpURLConnection) url.openConnection(); + httpUrl.connect(); + httpUrl.getInputStream(); + is = httpUrl.getInputStream(); + + outStream = new ByteArrayOutputStream(); + //创建一个Buffer字符串 + byte[] buffer = new byte[1024]; + //每次读取的字符串长度,如果为-1,代表全部读取完毕 + int len = 0; + //使用一个输入流从buffer里把数据读取出来 + while( (len=is.read(buffer)) != -1 ){ + //用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度 + outStream.write(buffer, 0, len); + } + // 对字节数组Base64编码 + return new BASE64Encoder().encode(outStream.toByteArray()); + }catch (Exception e) { + e.printStackTrace(); + } + finally{ + if(is != null) + { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(outStream != null) + { + try { + outStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if(httpUrl != null) + { + httpUrl.disconnect(); + } + } + return imgUrl; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/JChardetFacadeUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/JChardetFacadeUtil.java new file mode 100644 index 0000000..1b49fb7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/JChardetFacadeUtil.java @@ -0,0 +1,2025 @@ +package com.gxwebsoft.common.core.utils; + +import java.io.*; +import java.net.URL; +import java.nio.charset.Charset; +import java.nio.charset.UnsupportedCharsetException; + +/** + * 文件编码检测工具, 核心代码来自 cpDetector 和 jChardet, 可以检测大多数文件的编码 + * + * @author WebSoft + * @since 2020-09-15 09:24:20 + */ +public class JChardetFacadeUtil { + + public static String detectCodepage(URL url) { + try { + Charset ret = JChardetFacade.getInstance().detectCodepage(url); + return ret == null ? null : ret.name(); + } catch (Exception ignored) { + } + return null; + } + + /** + * 下面代码来自: https://github.com/r91987/cpdetector + */ + public static class JChardetFacade extends AbstractCodepageDetector implements nsICharsetDetectionObserver { + private static JChardetFacade instance = null; + private static nsDetector det; + private byte[] buf = new byte[4096]; + private Charset codpage = null; + private boolean m_guessing = true; + private int amountOfVerifiers = 0; + + private JChardetFacade() { + det = new nsDetector(0); + det.Init(this); + this.amountOfVerifiers = det.getProbableCharsets().length; + } + + public static JChardetFacade getInstance() { + if (instance == null) { + instance = new JChardetFacade(); + } + + return instance; + } + + public synchronized Charset detectCodepage(InputStream in, int length) throws IOException { + this.Reset(); + int read = 0; + boolean done = false; + boolean isAscii = true; + Charset ret = null; + + int len; + do { + len = in.read(this.buf, 0, Math.min(this.buf.length, length - read)); + if (len > 0) { + read += len; + } + + if (!done) { + done = det.DoIt(this.buf, len, false); + } + } while (len > 0 && !done); + + det.DataEnd(); + if (this.codpage == null) { + if (this.m_guessing) { + ret = this.guess(); + } + } else { + ret = this.codpage; + } + return ret; + } + + private Charset guess() { + Charset ret = null; + String[] possibilities = det.getProbableCharsets(); + if (possibilities.length == this.amountOfVerifiers) { + ret = Charset.forName("US-ASCII"); + } else { + String check = possibilities[0]; + if (!check.equalsIgnoreCase("nomatch")) { + for (int i = 0; ret == null && i < possibilities.length; ++i) { + try { + ret = Charset.forName(possibilities[i]); + } catch (UnsupportedCharsetException ignored) { + } + } + } + } + return ret; + } + + public void Notify(String charset) { + this.codpage = Charset.forName(charset); + } + + public void Reset() { + det.Reset(); + this.codpage = null; + } + + public boolean isGuessing() { + return this.m_guessing; + } + + public synchronized void setGuessing(boolean guessing) { + this.m_guessing = guessing; + } + } + + /** + * + */ + public static abstract class AbstractCodepageDetector implements ICodepageDetector { + public AbstractCodepageDetector() { + } + + public Charset detectCodepage(URL url) throws IOException { + BufferedInputStream in = new BufferedInputStream(url.openStream()); + Charset result = this.detectCodepage(in, 2147483647); + in.close(); + return result; + } + + public final Reader open(URL url) throws IOException { + Reader ret = null; + Charset cs = this.detectCodepage(url); + if (cs != null) { + ret = new InputStreamReader(new BufferedInputStream(url.openStream()), cs); + } + + return ret; + } + + public int compareTo(Object o) { + String other = o.getClass().getName(); + String mine = this.getClass().getName(); + return mine.compareTo(other); + } + } + + /** + * + */ + interface ICodepageDetector extends Serializable, Comparable { + Reader open(URL var1) throws IOException; + + Charset detectCodepage(URL var1) throws IOException; + + Charset detectCodepage(InputStream var1, int var2) throws IOException; + } + + /** + * 以下代码开始是由Mozilla组织提供的JChardet, 它可以检测大多数文件的编码 + * http://jchardet.sourceforge.net/ + */ + public static class nsDetector extends nsPSMDetector implements nsICharsetDetector { + nsICharsetDetectionObserver mObserver = null; + + public nsDetector() { + } + + public nsDetector(int var1) { + super(var1); + } + + public void Init(nsICharsetDetectionObserver var1) { + this.mObserver = var1; + } + + public boolean DoIt(byte[] var1, int var2, boolean var3) { + if (var1 != null && !var3) { + this.HandleData(var1, var2); + return this.mDone; + } else { + return false; + } + } + + public void Done() { + this.DataEnd(); + } + + public void Report(String var1) { + if (this.mObserver != null) { + this.mObserver.Notify(var1); + } + + } + + public boolean isAscii(byte[] var1, int var2) { + for (int var3 = 0; var3 < var2; ++var3) { + if ((128 & var1[var3]) != 0) { + return false; + } + } + + return true; + } + } + + /** + * + */ + public static abstract class nsPSMDetector { + public static final int ALL = 0; + public static final int JAPANESE = 1; + public static final int CHINESE = 2; + public static final int SIMPLIFIED_CHINESE = 3; + public static final int TRADITIONAL_CHINESE = 4; + public static final int KOREAN = 5; + public static final int NO_OF_LANGUAGES = 6; + public static final int MAX_VERIFIERS = 16; + nsVerifier[] mVerifier; + nsEUCStatistics[] mStatisticsData; + nsEUCSampler mSampler = new nsEUCSampler(); + byte[] mState = new byte[16]; + int[] mItemIdx = new int[16]; + int mItems; + int mClassItems; + boolean mDone; + boolean mRunSampler; + boolean mClassRunSampler; + + public nsPSMDetector() { + this.initVerifiers(0); + this.Reset(); + } + + public nsPSMDetector(int var1) { + this.initVerifiers(var1); + this.Reset(); + } + + public nsPSMDetector(int var1, nsVerifier[] var2, nsEUCStatistics[] var3) { + this.mClassRunSampler = var3 != null; + this.mStatisticsData = var3; + this.mVerifier = var2; + this.mClassItems = var1; + this.Reset(); + } + + public void Reset() { + this.mRunSampler = this.mClassRunSampler; + this.mDone = false; + this.mItems = this.mClassItems; + + for (int var1 = 0; var1 < this.mItems; this.mItemIdx[var1] = var1++) { + this.mState[var1] = 0; + } + + this.mSampler.Reset(); + } + + protected void initVerifiers(int var1) { + boolean var2 = false; + int var3; + if (var1 >= 0 && var1 < 6) { + var3 = var1; + } else { + var3 = 0; + } + + this.mVerifier = null; + this.mStatisticsData = null; + if (var3 == 4) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsBIG5Verifier(), new nsISO2022CNVerifier(), new nsEUCTWVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + this.mStatisticsData = new nsEUCStatistics[]{null, new Big5Statistics(), null, new EUCTWStatistics(), null, null, null}; + } else if (var3 == 5) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsEUCKRVerifier(), new nsISO2022KRVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + } else if (var3 == 3) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + } else if (var3 == 1) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsSJISVerifier(), new nsEUCJPVerifier(), new nsISO2022JPVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + } else if (var3 == 2) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsBIG5Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsEUCTWVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + this.mStatisticsData = new nsEUCStatistics[]{null, new GB2312Statistics(), null, new Big5Statistics(), null, null, new EUCTWStatistics(), null, null, null}; + } else if (var3 == 0) { + this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsSJISVerifier(), new nsEUCJPVerifier(), new nsISO2022JPVerifier(), new nsEUCKRVerifier(), new nsISO2022KRVerifier(), new nsBIG5Verifier(), new nsEUCTWVerifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; + this.mStatisticsData = new nsEUCStatistics[]{null, null, new EUCJPStatistics(), null, new EUCKRStatistics(), null, new Big5Statistics(), new EUCTWStatistics(), new GB2312Statistics(), null, null, null, null, null, null}; + } + + this.mClassRunSampler = this.mStatisticsData != null; + this.mClassItems = this.mVerifier.length; + } + + public abstract void Report(String var1); + + public boolean HandleData(byte[] var1, int var2) { + for (int var3 = 0; var3 < var2; ++var3) { + byte var5 = var1[var3]; + int var4 = 0; + + while (var4 < this.mItems) { + byte var6 = nsVerifier.getNextState(this.mVerifier[this.mItemIdx[var4]], var5, this.mState[var4]); + if (var6 == 2) { + this.Report(this.mVerifier[this.mItemIdx[var4]].charset()); + this.mDone = true; + return this.mDone; + } + + if (var6 == 1) { + --this.mItems; + if (var4 < this.mItems) { + this.mItemIdx[var4] = this.mItemIdx[this.mItems]; + this.mState[var4] = this.mState[this.mItems]; + } + } else { + this.mState[var4++] = var6; + } + } + + if (this.mItems <= 1) { + if (1 == this.mItems) { + this.Report(this.mVerifier[this.mItemIdx[0]].charset()); + } + + this.mDone = true; + return this.mDone; + } + + int var7 = 0; + int var8 = 0; + + for (var4 = 0; var4 < this.mItems; ++var4) { + if (!this.mVerifier[this.mItemIdx[var4]].isUCS2() && !this.mVerifier[this.mItemIdx[var4]].isUCS2()) { + ++var7; + var8 = var4; + } + } + + if (1 == var7) { + this.Report(this.mVerifier[this.mItemIdx[var8]].charset()); + this.mDone = true; + return this.mDone; + } + } + + if (this.mRunSampler) { + this.Sample(var1, var2); + } + + return this.mDone; + } + + public void DataEnd() { + if (!this.mDone) { + if (this.mItems == 2) { + if (this.mVerifier[this.mItemIdx[0]].charset().equals("GB18030")) { + this.Report(this.mVerifier[this.mItemIdx[1]].charset()); + this.mDone = true; + } else if (this.mVerifier[this.mItemIdx[1]].charset().equals("GB18030")) { + this.Report(this.mVerifier[this.mItemIdx[0]].charset()); + this.mDone = true; + } + } + + if (this.mRunSampler) { + this.Sample((byte[]) null, 0, true); + } + + } + } + + public void Sample(byte[] var1, int var2) { + this.Sample(var1, var2, false); + } + + public void Sample(byte[] var1, int var2, boolean var3) { + int var4 = 0; + int var6 = 0; + + int var5; + for (var5 = 0; var5 < this.mItems; ++var5) { + if (null != this.mStatisticsData[this.mItemIdx[var5]]) { + ++var6; + } + + if (!this.mVerifier[this.mItemIdx[var5]].isUCS2() && !this.mVerifier[this.mItemIdx[var5]].charset().equals("GB18030")) { + ++var4; + } + } + + this.mRunSampler = var6 > 1; + if (this.mRunSampler) { + this.mRunSampler = this.mSampler.Sample(var1, var2); + if ((var3 && this.mSampler.GetSomeData() || this.mSampler.EnoughData()) && var6 == var4) { + this.mSampler.CalFreq(); + int var7 = -1; + int var8 = 0; + float var9 = 0.0F; + + for (var5 = 0; var5 < this.mItems; ++var5) { + if (null != this.mStatisticsData[this.mItemIdx[var5]] && !this.mVerifier[this.mItemIdx[var5]].charset().equals("Big5")) { + float var10 = this.mSampler.GetScore(this.mStatisticsData[this.mItemIdx[var5]].mFirstByteFreq(), this.mStatisticsData[this.mItemIdx[var5]].mFirstByteWeight(), this.mStatisticsData[this.mItemIdx[var5]].mSecondByteFreq(), this.mStatisticsData[this.mItemIdx[var5]].mSecondByteWeight()); + if (0 == var8++ || var9 > var10) { + var9 = var10; + var7 = var5; + } + } + } + + if (var7 >= 0) { + this.Report(this.mVerifier[this.mItemIdx[var7]].charset()); + this.mDone = true; + } + } + } + + } + + public String[] getProbableCharsets() { + String[] var1; + if (this.mItems <= 0) { + var1 = new String[]{"nomatch"}; + return var1; + } else { + var1 = new String[this.mItems]; + + for (int var2 = 0; var2 < this.mItems; ++var2) { + var1[var2] = this.mVerifier[this.mItemIdx[var2]].charset(); + } + + return var1; + } + } + } + + /** + * + */ + public static interface nsICharsetDetectionObserver { + void Notify(String var1); + } + + /** + * + */ + public static interface nsICharsetDetector { + void Init(nsICharsetDetectionObserver var1); + + boolean DoIt(byte[] var1, int var2, boolean var3); + + void Done(); + } + + /** + * + */ + public static abstract class nsVerifier { + static final byte eStart = 0; + static final byte eError = 1; + static final byte eItsMe = 2; + static final int eidxSft4bits = 3; + static final int eSftMsk4bits = 7; + static final int eBitSft4bits = 2; + static final int eUnitMsk4bits = 15; + + nsVerifier() { + } + + public abstract String charset(); + + public abstract int stFactor(); + + public abstract int[] cclass(); + + public abstract int[] states(); + + public abstract boolean isUCS2(); + + public static byte getNextState(nsVerifier var0, byte var1, byte var2) { + return (byte) (255 & var0.states()[(var2 * var0.stFactor() + (var0.cclass()[(var1 & 255) >> 3] >> ((var1 & 7) << 2) & 15) & 255) >> 3] >> ((var2 * var0.stFactor() + (var0.cclass()[(var1 & 255) >> 3] >> ((var1 & 7) << 2) & 15) & 255 & 7) << 2) & 15); + } + } + + /** + * + */ + public static class nsEUCSampler { + int mTotal = 0; + int mThreshold = 200; + int mState = 0; + public int[] mFirstByteCnt = new int[94]; + public int[] mSecondByteCnt = new int[94]; + public float[] mFirstByteFreq = new float[94]; + public float[] mSecondByteFreq = new float[94]; + + public nsEUCSampler() { + this.Reset(); + } + + public void Reset() { + this.mTotal = 0; + this.mState = 0; + + for (int var1 = 0; var1 < 94; ++var1) { + this.mFirstByteCnt[var1] = this.mSecondByteCnt[var1] = 0; + } + + } + + boolean EnoughData() { + return this.mTotal > this.mThreshold; + } + + boolean GetSomeData() { + return this.mTotal > 1; + } + + boolean Sample(byte[] var1, int var2) { + if (this.mState == 1) { + return false; + } else { + int var3 = 0; + + for (int var4 = 0; var4 < var2 && 1 != this.mState; ++var3) { + int var10002; + switch (this.mState) { + case 0: + if ((var1[var3] & 128) != 0) { + if (255 != (255 & var1[var3]) && 161 <= (255 & var1[var3])) { + ++this.mTotal; + var10002 = this.mFirstByteCnt[(255 & var1[var3]) - 161]++; + this.mState = 2; + } else { + this.mState = 1; + } + } + case 1: + break; + case 2: + if ((var1[var3] & 128) != 0) { + if (255 != (255 & var1[var3]) && 161 <= (255 & var1[var3])) { + ++this.mTotal; + var10002 = this.mSecondByteCnt[(255 & var1[var3]) - 161]++; + this.mState = 0; + } else { + this.mState = 1; + } + } else { + this.mState = 1; + } + break; + default: + this.mState = 1; + } + + ++var4; + } + + return 1 != this.mState; + } + } + + void CalFreq() { + for (int var1 = 0; var1 < 94; ++var1) { + this.mFirstByteFreq[var1] = (float) this.mFirstByteCnt[var1] / (float) this.mTotal; + this.mSecondByteFreq[var1] = (float) this.mSecondByteCnt[var1] / (float) this.mTotal; + } + + } + + float GetScore(float[] var1, float var2, float[] var3, float var4) { + return var2 * this.GetScore(var1, this.mFirstByteFreq) + var4 * this.GetScore(var3, this.mSecondByteFreq); + } + + float GetScore(float[] var1, float[] var2) { + float var4 = 0.0F; + + for (int var5 = 0; var5 < 94; ++var5) { + float var3 = var1[var5] - var2[var5]; + var4 += var3 * var3; + } + + return (float) Math.sqrt((double) var4) / 94.0F; + } + } + + /** + * + */ + public static abstract class nsEUCStatistics { + public abstract float[] mFirstByteFreq(); + + public abstract float mFirstByteStdDev(); + + public abstract float mFirstByteMean(); + + public abstract float mFirstByteWeight(); + + public abstract float[] mSecondByteFreq(); + + public abstract float mSecondByteStdDev(); + + public abstract float mSecondByteMean(); + + public abstract float mSecondByteWeight(); + + public nsEUCStatistics() { + } + } + + /** + * + */ + public static class EUCJPStatistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public EUCJPStatistics() { + mFirstByteFreq = new float[]{0.364808F, 0.0F, 0.0F, 0.145325F, 0.304891F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.001835F, 0.010771F, 0.006462F, 0.001157F, 0.002114F, 0.003231F, 0.001356F, 0.00742F, 0.004189F, 0.003231F, 0.003032F, 0.03319F, 0.006303F, 0.006064F, 0.009973F, 0.002354F, 0.00367F, 0.009135F, 0.001675F, 0.002792F, 0.002194F, 0.01472F, 0.011928F, 8.78E-4F, 0.013124F, 0.001077F, 0.009295F, 0.003471F, 0.002872F, 0.002433F, 9.57E-4F, 0.001636F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0E-5F, 2.79E-4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0E-5F, 0.0F}; + mFirstByteStdDev = 0.050407F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.640871F; + mSecondByteFreq = new float[]{0.002473F, 0.039134F, 0.152745F, 0.009694F, 3.59E-4F, 0.02218F, 7.58E-4F, 0.004308F, 1.6E-4F, 0.002513F, 0.003072F, 0.001316F, 0.00383F, 0.001037F, 0.00359F, 9.57E-4F, 1.6E-4F, 2.39E-4F, 0.006462F, 0.001596F, 0.031554F, 0.001316F, 0.002194F, 0.016555F, 0.003271F, 6.78E-4F, 5.98E-4F, 0.206438F, 7.18E-4F, 0.001077F, 0.00371F, 0.001356F, 0.001356F, 4.39E-4F, 0.004388F, 0.005704F, 8.78E-4F, 0.010172F, 0.007061F, 0.01468F, 6.38E-4F, 0.02573F, 0.002792F, 7.18E-4F, 0.001795F, 0.091551F, 7.58E-4F, 0.003909F, 5.58E-4F, 0.031195F, 0.007061F, 0.001316F, 0.022579F, 0.006981F, 0.00726F, 0.001117F, 2.39E-4F, 0.012127F, 8.78E-4F, 0.00379F, 0.001077F, 7.58E-4F, 0.002114F, 0.002234F, 6.78E-4F, 0.002992F, 0.003311F, 0.023416F, 0.001237F, 0.002753F, 0.005146F, 0.002194F, 0.007021F, 0.008497F, 0.013763F, 0.011768F, 0.006303F, 0.001915F, 6.38E-4F, 0.008776F, 9.18E-4F, 0.003431F, 0.057603F, 4.39E-4F, 4.39E-4F, 7.58E-4F, 0.002872F, 0.001675F, 0.01105F, 0.0F, 2.79E-4F, 0.012127F, 7.18E-4F, 0.00738F}; + mSecondByteStdDev = 0.028247F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.359129F; + } + } + + /** + * + */ + public static class nsEUCJPVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsEUCJPVerifier() { + cclass = new int[32]; + cclass[0] = 1145324612; + cclass[1] = 1430537284; + cclass[2] = 1145324612; + cclass[3] = 1145328708; + cclass[4] = 1145324612; + cclass[5] = 1145324612; + cclass[6] = 1145324612; + cclass[7] = 1145324612; + cclass[8] = 1145324612; + cclass[9] = 1145324612; + cclass[10] = 1145324612; + cclass[11] = 1145324612; + cclass[12] = 1145324612; + cclass[13] = 1145324612; + cclass[14] = 1145324612; + cclass[15] = 1145324612; + cclass[16] = 1431655765; + cclass[17] = 827675989; + cclass[18] = 1431655765; + cclass[19] = 1431655765; + cclass[20] = 572662309; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 0; + cclass[29] = 0; + cclass[30] = 0; + cclass[31] = 1342177280; + states = new int[5]; + states[0] = 286282563; + states[1] = 572657937; + states[2] = 286265378; + states[3] = 319885329; + states[4] = 4371; + charset = "EUC-JP"; + stFactor = 6; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class EUCKRStatistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public EUCKRStatistics() { + mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 4.12E-4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.057502F, 0.033182F, 0.002267F, 0.016076F, 0.014633F, 0.032976F, 0.004122F, 0.011336F, 0.058533F, 0.024526F, 0.025969F, 0.054411F, 0.01958F, 0.063273F, 0.113974F, 0.029885F, 0.150041F, 0.059151F, 0.002679F, 0.009893F, 0.014839F, 0.026381F, 0.015045F, 0.069456F, 0.08986F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + mFirstByteStdDev = 0.025593F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.647437F; + mSecondByteFreq = new float[]{0.016694F, 0.0F, 0.012778F, 0.030091F, 0.002679F, 0.006595F, 0.001855F, 8.24E-4F, 0.005977F, 0.00474F, 0.003092F, 8.24E-4F, 0.01958F, 0.037304F, 0.008244F, 0.014633F, 0.001031F, 0.0F, 0.003298F, 0.002061F, 0.006183F, 0.005977F, 8.24E-4F, 0.021847F, 0.014839F, 0.052968F, 0.017312F, 0.007626F, 4.12E-4F, 8.24E-4F, 0.011129F, 0.0F, 4.12E-4F, 0.001649F, 0.005977F, 0.065746F, 0.020198F, 0.021434F, 0.014633F, 0.004122F, 0.001649F, 8.24E-4F, 8.24E-4F, 0.051937F, 0.01958F, 0.023289F, 0.026381F, 0.040396F, 0.009068F, 0.001443F, 0.00371F, 0.00742F, 0.001443F, 0.01319F, 0.002885F, 4.12E-4F, 0.003298F, 0.025969F, 4.12E-4F, 4.12E-4F, 0.006183F, 0.003298F, 0.066983F, 0.002679F, 0.002267F, 0.011129F, 4.12E-4F, 0.010099F, 0.015251F, 0.007626F, 0.043899F, 0.00371F, 0.002679F, 0.001443F, 0.010923F, 0.002885F, 0.009068F, 0.019992F, 4.12E-4F, 0.00845F, 0.005153F, 0.0F, 0.010099F, 0.0F, 0.001649F, 0.01216F, 0.011542F, 0.006595F, 0.001855F, 0.010923F, 4.12E-4F, 0.023702F, 0.00371F, 0.001855F}; + mSecondByteStdDev = 0.013937F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.352563F; + } + } + + /** + * + */ + public static class nsEUCKRVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsEUCKRVerifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 286331153; + cclass[9] = 286331153; + cclass[10] = 286331153; + cclass[11] = 286331153; + cclass[12] = 286331153; + cclass[13] = 286331153; + cclass[14] = 286331153; + cclass[15] = 286331153; + cclass[16] = 0; + cclass[17] = 0; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 572662304; + cclass[21] = 858923554; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662322; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 35791394; + states = new int[2]; + states[0] = 286331649; + states[1] = 1122850; + charset = "EUC-KR"; + stFactor = 4; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class EUCTWStatistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public EUCTWStatistics() { + mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.119286F, 0.052233F, 0.044126F, 0.052494F, 0.045906F, 0.019038F, 0.032465F, 0.026252F, 0.025502F, 0.015963F, 0.052493F, 0.019256F, 0.015137F, 0.031782F, 0.01737F, 0.018494F, 0.015575F, 0.016621F, 0.007444F, 0.011642F, 0.013916F, 0.019159F, 0.016445F, 0.007851F, 0.011079F, 0.022842F, 0.015513F, 0.010033F, 0.00995F, 0.010347F, 0.013103F, 0.015371F, 0.012502F, 0.007436F, 0.018253F, 0.014134F, 0.008907F, 0.005411F, 0.00957F, 0.013598F, 0.006092F, 0.007409F, 0.008432F, 0.005816F, 0.009349F, 0.005472F, 0.00717F, 0.00742F, 0.003681F, 0.007523F, 0.00461F, 0.006154F, 0.003348F, 0.005074F, 0.005922F, 0.005254F, 0.004682F, 0.002093F, 0.0F}; + mFirstByteStdDev = 0.016681F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.715599F; + mSecondByteFreq = new float[]{0.028933F, 0.011371F, 0.011053F, 0.007232F, 0.010192F, 0.004093F, 0.015043F, 0.011752F, 0.022387F, 0.00841F, 0.012448F, 0.007473F, 0.003594F, 0.007139F, 0.018912F, 0.006083F, 0.003302F, 0.010215F, 0.008791F, 0.024236F, 0.014107F, 0.014108F, 0.010303F, 0.009728F, 0.007877F, 0.009719F, 0.007952F, 0.021028F, 0.005764F, 0.009341F, 0.006591F, 0.012517F, 0.005921F, 0.008982F, 0.008771F, 0.012802F, 0.005926F, 0.008342F, 0.003086F, 0.006843F, 0.007576F, 0.004734F, 0.016404F, 0.008803F, 0.008071F, 0.005349F, 0.008566F, 0.01084F, 0.015401F, 0.031904F, 0.00867F, 0.011479F, 0.010936F, 0.007617F, 0.008995F, 0.008114F, 0.008658F, 0.005934F, 0.010452F, 0.009142F, 0.004519F, 0.008339F, 0.007476F, 0.007027F, 0.006025F, 0.021804F, 0.024248F, 0.015895F, 0.003768F, 0.010171F, 0.010007F, 0.010178F, 0.008316F, 0.006832F, 0.006364F, 0.009141F, 0.009148F, 0.012081F, 0.011914F, 0.004464F, 0.014257F, 0.006907F, 0.011292F, 0.018622F, 0.008149F, 0.004636F, 0.006612F, 0.013478F, 0.012614F, 0.005186F, 0.048285F, 0.006816F, 0.006743F, 0.008671F}; + mSecondByteStdDev = 0.00663F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.284401F; + } + } + + /** + * + */ + public static class nsEUCTWVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsEUCTWVerifier() { + cclass = new int[32]; + cclass[0] = 572662306; + cclass[1] = 2236962; + cclass[2] = 572662306; + cclass[3] = 572654114; + cclass[4] = 572662306; + cclass[5] = 572662306; + cclass[6] = 572662306; + cclass[7] = 572662306; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 572662306; + cclass[16] = 0; + cclass[17] = 100663296; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 1145324592; + cclass[21] = 286331221; + cclass[22] = 286331153; + cclass[23] = 286331153; + cclass[24] = 858985233; + cclass[25] = 858993459; + cclass[26] = 858993459; + cclass[27] = 858993459; + cclass[28] = 858993459; + cclass[29] = 858993459; + cclass[30] = 858993459; + cclass[31] = 53687091; + states = new int[6]; + states[0] = 338898961; + states[1] = 571543825; + states[2] = 269623842; + states[3] = 286330880; + states[4] = 1052949; + states[5] = 16; + charset = "x-euc-tw"; + stFactor = 7; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class Big5Statistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public Big5Statistics() { + mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.114427F, 0.061058F, 0.075598F, 0.048386F, 0.063966F, 0.027094F, 0.095787F, 0.029525F, 0.031331F, 0.036915F, 0.021805F, 0.019349F, 0.037496F, 0.018068F, 0.01276F, 0.030053F, 0.017339F, 0.016731F, 0.019501F, 0.01124F, 0.032973F, 0.016658F, 0.015872F, 0.021458F, 0.012378F, 0.017003F, 0.020802F, 0.012454F, 0.009239F, 0.012829F, 0.007922F, 0.010079F, 0.009815F, 0.010104F, 0.0F, 0.0F, 0.0F, 5.3E-5F, 3.5E-5F, 1.05E-4F, 3.1E-5F, 8.8E-5F, 2.7E-5F, 2.7E-5F, 2.6E-5F, 3.5E-5F, 2.4E-5F, 3.4E-5F, 3.75E-4F, 2.5E-5F, 2.8E-5F, 2.0E-5F, 2.4E-5F, 2.8E-5F, 3.1E-5F, 5.9E-5F, 4.0E-5F, 3.0E-5F, 7.9E-5F, 3.7E-5F, 4.0E-5F, 2.3E-5F, 3.0E-5F, 2.7E-5F, 6.4E-5F, 2.0E-5F, 2.7E-5F, 2.5E-5F, 7.4E-5F, 1.9E-5F, 2.3E-5F, 2.1E-5F, 1.8E-5F, 1.7E-5F, 3.5E-5F, 2.1E-5F, 1.9E-5F, 2.5E-5F, 1.7E-5F, 3.7E-5F, 1.8E-5F, 1.8E-5F, 1.9E-5F, 2.2E-5F, 3.3E-5F, 3.2E-5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + mFirstByteStdDev = 0.020606F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.675261F; + mSecondByteFreq = new float[]{0.020256F, 0.003293F, 0.045811F, 0.01665F, 0.007066F, 0.004146F, 0.009229F, 0.007333F, 0.003296F, 0.005239F, 0.008282F, 0.003791F, 0.006116F, 0.003536F, 0.004024F, 0.016654F, 0.009334F, 0.005429F, 0.033392F, 0.006121F, 0.008983F, 0.002801F, 0.004221F, 0.010357F, 0.014695F, 0.077937F, 0.006314F, 0.00402F, 0.007331F, 0.00715F, 0.005341F, 0.009195F, 0.00535F, 0.005698F, 0.004472F, 0.007242F, 0.004039F, 0.011154F, 0.016184F, 0.004741F, 0.012814F, 0.007679F, 0.008045F, 0.016631F, 0.009451F, 0.016487F, 0.007287F, 0.012688F, 0.017421F, 0.013205F, 0.03148F, 0.003404F, 0.009149F, 0.008921F, 0.007514F, 0.008683F, 0.008203F, 0.031403F, 0.011733F, 0.015617F, 0.015306F, 0.004004F, 0.010899F, 0.009961F, 0.008388F, 0.01092F, 0.003925F, 0.008585F, 0.009108F, 0.015546F, 0.004659F, 0.006934F, 0.007023F, 0.020252F, 0.005387F, 0.024704F, 0.006963F, 0.002625F, 0.009512F, 0.002971F, 0.008233F, 0.01F, 0.011973F, 0.010553F, 0.005945F, 0.006349F, 0.009401F, 0.008577F, 0.008186F, 0.008159F, 0.005033F, 0.008714F, 0.010614F, 0.006554F}; + mSecondByteStdDev = 0.009909F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.324739F; + } + } + + /** + * + */ + public static class nsBIG5Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsBIG5Verifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 304226850; + cclass[16] = 1145324612; + cclass[17] = 1145324612; + cclass[18] = 1145324612; + cclass[19] = 1145324612; + cclass[20] = 858993460; + cclass[21] = 858993459; + cclass[22] = 858993459; + cclass[23] = 858993459; + cclass[24] = 858993459; + cclass[25] = 858993459; + cclass[26] = 858993459; + cclass[27] = 858993459; + cclass[28] = 858993459; + cclass[29] = 858993459; + cclass[30] = 858993459; + cclass[31] = 53687091; + states = new int[3]; + states[0] = 286339073; + states[1] = 304226833; + states[2] = 1; + charset = "Big5"; + stFactor = 5; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class GB2312Statistics extends nsEUCStatistics { + static float[] mFirstByteFreq; + static float mFirstByteStdDev; + static float mFirstByteMean; + static float mFirstByteWeight; + static float[] mSecondByteFreq; + static float mSecondByteStdDev; + static float mSecondByteMean; + static float mSecondByteWeight; + + public float[] mFirstByteFreq() { + return mFirstByteFreq; + } + + public float mFirstByteStdDev() { + return mFirstByteStdDev; + } + + public float mFirstByteMean() { + return mFirstByteMean; + } + + public float mFirstByteWeight() { + return mFirstByteWeight; + } + + public float[] mSecondByteFreq() { + return mSecondByteFreq; + } + + public float mSecondByteStdDev() { + return mSecondByteStdDev; + } + + public float mSecondByteMean() { + return mSecondByteMean; + } + + public float mSecondByteWeight() { + return mSecondByteWeight; + } + + public GB2312Statistics() { + mFirstByteFreq = new float[]{0.011628F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.011628F, 0.012403F, 0.009302F, 0.003876F, 0.017829F, 0.037209F, 0.008527F, 0.010078F, 0.01938F, 0.054264F, 0.010078F, 0.041085F, 0.02093F, 0.018605F, 0.010078F, 0.013178F, 0.016279F, 0.006202F, 0.009302F, 0.017054F, 0.011628F, 0.008527F, 0.004651F, 0.006202F, 0.017829F, 0.024806F, 0.020155F, 0.013953F, 0.032558F, 0.035659F, 0.068217F, 0.010853F, 0.036434F, 0.117054F, 0.027907F, 0.100775F, 0.010078F, 0.017829F, 0.062016F, 0.012403F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.00155F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; + mFirstByteStdDev = 0.020081F; + mFirstByteMean = 0.010638F; + mFirstByteWeight = 0.586533F; + mSecondByteFreq = new float[]{0.006202F, 0.031008F, 0.005426F, 0.003101F, 0.00155F, 0.003101F, 0.082171F, 0.014729F, 0.006977F, 0.00155F, 0.013953F, 0.0F, 0.013953F, 0.010078F, 0.008527F, 0.006977F, 0.004651F, 0.003101F, 0.003101F, 0.003101F, 0.008527F, 0.003101F, 0.005426F, 0.005426F, 0.005426F, 0.003101F, 0.00155F, 0.006202F, 0.014729F, 0.010853F, 0.0F, 0.011628F, 0.0F, 0.031783F, 0.013953F, 0.030233F, 0.039535F, 0.008527F, 0.015504F, 0.0F, 0.003101F, 0.008527F, 0.016279F, 0.005426F, 0.00155F, 0.013953F, 0.013953F, 0.044961F, 0.003101F, 0.004651F, 0.006977F, 0.00155F, 0.005426F, 0.012403F, 0.00155F, 0.015504F, 0.0F, 0.006202F, 0.00155F, 0.0F, 0.007752F, 0.006977F, 0.00155F, 0.009302F, 0.011628F, 0.004651F, 0.010853F, 0.012403F, 0.017829F, 0.005426F, 0.024806F, 0.0F, 0.006202F, 0.0F, 0.082171F, 0.015504F, 0.004651F, 0.0F, 0.006977F, 0.004651F, 0.0F, 0.008527F, 0.012403F, 0.004651F, 0.003876F, 0.003101F, 0.022481F, 0.024031F, 0.00155F, 0.047287F, 0.009302F, 0.00155F, 0.005426F, 0.017054F}; + mSecondByteStdDev = 0.014156F; + mSecondByteMean = 0.010638F; + mSecondByteWeight = 0.413467F; + } + } + + /** + * + */ + public static class nsGB2312Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsGB2312Verifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 286331153; + cclass[9] = 286331153; + cclass[10] = 286331153; + cclass[11] = 286331153; + cclass[12] = 286331153; + cclass[13] = 286331153; + cclass[14] = 286331153; + cclass[15] = 286331153; + cclass[16] = 0; + cclass[17] = 0; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 572662304; + cclass[21] = 858993442; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 35791394; + states = new int[2]; + states[0] = 286331649; + states[1] = 1122850; + charset = "GB2312"; + stFactor = 4; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsGB18030Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsGB18030Verifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 858993459; + cclass[7] = 286331187; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 1109533218; + cclass[16] = 1717986917; + cclass[17] = 1717986918; + cclass[18] = 1717986918; + cclass[19] = 1717986918; + cclass[20] = 1717986918; + cclass[21] = 1717986918; + cclass[22] = 1717986918; + cclass[23] = 1717986918; + cclass[24] = 1717986918; + cclass[25] = 1717986918; + cclass[26] = 1717986918; + cclass[27] = 1717986918; + cclass[28] = 1717986918; + cclass[29] = 1717986918; + cclass[30] = 1717986918; + cclass[31] = 107374182; + states = new int[6]; + states[0] = 318767105; + states[1] = 571543825; + states[2] = 17965602; + states[3] = 286326804; + states[4] = 303109393; + states[5] = 17; + charset = "GB18030"; + stFactor = 7; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsISO2022CNVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsISO2022CNVerifier() { + cclass = new int[32]; + cclass[0] = 2; + cclass[1] = 0; + cclass[2] = 0; + cclass[3] = 4096; + cclass[4] = 0; + cclass[5] = 48; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 16384; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 572662306; + cclass[17] = 572662306; + cclass[18] = 572662306; + cclass[19] = 572662306; + cclass[20] = 572662306; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 572662306; + states = new int[8]; + states[0] = 304; + states[1] = 286331152; + states[2] = 572662289; + states[3] = 336663074; + states[4] = 286335249; + states[5] = 286331237; + states[6] = 286335249; + states[7] = 18944273; + charset = "ISO-2022-CN"; + stFactor = 9; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsISO2022JPVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsISO2022JPVerifier() { + cclass = new int[32]; + cclass[0] = 2; + cclass[1] = 570425344; + cclass[2] = 0; + cclass[3] = 4096; + cclass[4] = 458752; + cclass[5] = 3; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 1030; + cclass[9] = 1280; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 572662306; + cclass[17] = 572662306; + cclass[18] = 572662306; + cclass[19] = 572662306; + cclass[20] = 572662306; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 572662306; + states = new int[6]; + states[0] = 304; + states[1] = 286331153; + states[2] = 572662306; + states[3] = 1091653905; + states[4] = 303173905; + states[5] = 287445265; + charset = "ISO-2022-JP"; + stFactor = 8; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsISO2022KRVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsISO2022KRVerifier() { + cclass = new int[32]; + cclass[0] = 2; + cclass[1] = 0; + cclass[2] = 0; + cclass[3] = 4096; + cclass[4] = 196608; + cclass[5] = 64; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 20480; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 572662306; + cclass[17] = 572662306; + cclass[18] = 572662306; + cclass[19] = 572662306; + cclass[20] = 572662306; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 572662306; + cclass[29] = 572662306; + cclass[30] = 572662306; + cclass[31] = 572662306; + states = new int[5]; + states[0] = 285212976; + states[1] = 572657937; + states[2] = 289476898; + states[3] = 286593297; + states[4] = 8465; + charset = "ISO-2022-KR"; + stFactor = 6; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsUCS2BEVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsUCS2BEVerifier() { + cclass = new int[32]; + cclass[0] = 0; + cclass[1] = 2097408; + cclass[2] = 0; + cclass[3] = 12288; + cclass[4] = 0; + cclass[5] = 3355440; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 0; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 0; + cclass[17] = 0; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 0; + cclass[21] = 0; + cclass[22] = 0; + cclass[23] = 0; + cclass[24] = 0; + cclass[25] = 0; + cclass[26] = 0; + cclass[27] = 0; + cclass[28] = 0; + cclass[29] = 0; + cclass[30] = 0; + cclass[31] = 1409286144; + states = new int[7]; + states[0] = 288626549; + states[1] = 572657937; + states[2] = 291923490; + states[3] = 1713792614; + states[4] = 393569894; + states[5] = 1717659269; + states[6] = 1140326; + charset = "UTF-16BE"; + stFactor = 6; + } + + public boolean isUCS2() { + return true; + } + } + + /** + * + */ + public static class nsUCS2LEVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsUCS2LEVerifier() { + cclass = new int[32]; + cclass[0] = 0; + cclass[1] = 2097408; + cclass[2] = 0; + cclass[3] = 12288; + cclass[4] = 0; + cclass[5] = 3355440; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 0; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 0; + cclass[16] = 0; + cclass[17] = 0; + cclass[18] = 0; + cclass[19] = 0; + cclass[20] = 0; + cclass[21] = 0; + cclass[22] = 0; + cclass[23] = 0; + cclass[24] = 0; + cclass[25] = 0; + cclass[26] = 0; + cclass[27] = 0; + cclass[28] = 0; + cclass[29] = 0; + cclass[30] = 0; + cclass[31] = 1409286144; + states = new int[7]; + states[0] = 288647014; + states[1] = 572657937; + states[2] = 303387938; + states[3] = 1712657749; + states[4] = 357927015; + states[5] = 1427182933; + states[6] = 1381717; + charset = "UTF-16LE"; + stFactor = 6; + } + + public boolean isUCS2() { + return true; + } + } + + /** + * + */ + public static class nsCP1252Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsCP1252Verifier() { + cclass = new int[32]; + cclass[0] = 572662305; + cclass[1] = 2236962; + cclass[2] = 572662306; + cclass[3] = 572654114; + cclass[4] = 572662306; + cclass[5] = 572662306; + cclass[6] = 572662306; + cclass[7] = 572662306; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 572662306; + cclass[16] = 572662274; + cclass[17] = 16851234; + cclass[18] = 572662304; + cclass[19] = 285286690; + cclass[20] = 572662306; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 286331153; + cclass[25] = 286331153; + cclass[26] = 554766609; + cclass[27] = 286331153; + cclass[28] = 286331153; + cclass[29] = 286331153; + cclass[30] = 554766609; + cclass[31] = 286331153; + states = new int[3]; + states[0] = 571543601; + states[1] = 340853778; + states[2] = 65; + charset = "windows-1252"; + stFactor = 3; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsHZVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsHZVerifier() { + cclass = new int[32]; + cclass[0] = 1; + cclass[1] = 0; + cclass[2] = 0; + cclass[3] = 4096; + cclass[4] = 0; + cclass[5] = 0; + cclass[6] = 0; + cclass[7] = 0; + cclass[8] = 0; + cclass[9] = 0; + cclass[10] = 0; + cclass[11] = 0; + cclass[12] = 0; + cclass[13] = 0; + cclass[14] = 0; + cclass[15] = 38813696; + cclass[16] = 286331153; + cclass[17] = 286331153; + cclass[18] = 286331153; + cclass[19] = 286331153; + cclass[20] = 286331153; + cclass[21] = 286331153; + cclass[22] = 286331153; + cclass[23] = 286331153; + cclass[24] = 286331153; + cclass[25] = 286331153; + cclass[26] = 286331153; + cclass[27] = 286331153; + cclass[28] = 286331153; + cclass[29] = 286331153; + cclass[30] = 286331153; + cclass[31] = 286331153; + states = new int[6]; + states[0] = 285213456; + states[1] = 572657937; + states[2] = 335548706; + states[3] = 341120533; + states[4] = 336872468; + states[5] = 36; + charset = "HZ-GB-2312"; + stFactor = 6; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsSJISVerifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsSJISVerifier() { + cclass = new int[32]; + cclass[0] = 286331152; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 572662306; + cclass[9] = 572662306; + cclass[10] = 572662306; + cclass[11] = 572662306; + cclass[12] = 572662306; + cclass[13] = 572662306; + cclass[14] = 572662306; + cclass[15] = 304226850; + cclass[16] = 858993459; + cclass[17] = 858993459; + cclass[18] = 858993459; + cclass[19] = 858993459; + cclass[20] = 572662308; + cclass[21] = 572662306; + cclass[22] = 572662306; + cclass[23] = 572662306; + cclass[24] = 572662306; + cclass[25] = 572662306; + cclass[26] = 572662306; + cclass[27] = 572662306; + cclass[28] = 858993459; + cclass[29] = 1145393971; + cclass[30] = 1145324612; + cclass[31] = 279620; + states = new int[3]; + states[0] = 286339073; + states[1] = 572657937; + states[2] = 4386; + charset = "Shift_JIS"; + stFactor = 6; + } + + public boolean isUCS2() { + return false; + } + } + + /** + * + */ + public static class nsUTF8Verifier extends nsVerifier { + static int[] cclass; + static int[] states; + static int stFactor; + static String charset; + + public int[] cclass() { + return cclass; + } + + public int[] states() { + return states; + } + + public int stFactor() { + return stFactor; + } + + public String charset() { + return charset; + } + + public nsUTF8Verifier() { + cclass = new int[32]; + cclass[0] = 286331153; + cclass[1] = 1118481; + cclass[2] = 286331153; + cclass[3] = 286327057; + cclass[4] = 286331153; + cclass[5] = 286331153; + cclass[6] = 286331153; + cclass[7] = 286331153; + cclass[8] = 286331153; + cclass[9] = 286331153; + cclass[10] = 286331153; + cclass[11] = 286331153; + cclass[12] = 286331153; + cclass[13] = 286331153; + cclass[14] = 286331153; + cclass[15] = 286331153; + cclass[16] = 858989090; + cclass[17] = 1145324612; + cclass[18] = 1145324612; + cclass[19] = 1145324612; + cclass[20] = 1431655765; + cclass[21] = 1431655765; + cclass[22] = 1431655765; + cclass[23] = 1431655765; + cclass[24] = 1717986816; + cclass[25] = 1717986918; + cclass[26] = 1717986918; + cclass[27] = 1717986918; + cclass[28] = -2004318073; + cclass[29] = -2003269496; + cclass[30] = -1145324614; + cclass[31] = 16702940; + states = new int[26]; + states[0] = -1408167679; + states[1] = 878082233; + states[2] = 286331153; + states[3] = 286331153; + states[4] = 572662306; + states[5] = 572662306; + states[6] = 290805009; + states[7] = 286331153; + states[8] = 290803985; + states[9] = 286331153; + states[10] = 293041937; + states[11] = 286331153; + states[12] = 293015825; + states[13] = 286331153; + states[14] = 295278865; + states[15] = 286331153; + states[16] = 294719761; + states[17] = 286331153; + states[18] = 298634257; + states[19] = 286331153; + states[20] = 297865489; + states[21] = 286331153; + states[22] = 287099921; + states[23] = 286331153; + states[24] = 285212689; + states[25] = 286331153; + charset = "UTF-8"; + stFactor = 16; + } + + public boolean isUCS2() { + return false; + } + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/JSONUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/JSONUtil.java new file mode 100644 index 0000000..8d63168 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/JSONUtil.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.StrUtil; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; + +/** + * JSON解析工具类 + * + * @author WebSoft + * @since 2017-06-10 10:10:39 + */ +public class JSONUtil { + private static final ObjectMapper objectMapper = new ObjectMapper(); + private static final ObjectWriter objectWriter = objectMapper.writerWithDefaultPrettyPrinter(); + + /** + * 对象转json字符串 + * + * @param value 对象 + * @return String + */ + public static String toJSONString(Object value) { + return toJSONString(value, false); + } + + /** + * 对象转json字符串 + * + * @param value 对象 + * @param pretty 是否格式化输出 + * @return String + */ + public static String toJSONString(Object value, boolean pretty) { + if (value != null) { + if (value instanceof String) { + return (String) value; + } + try { + if (pretty) { + return objectWriter.writeValueAsString(value); + } + return objectMapper.writeValueAsString(value); + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + /** + * json字符串转对象 + * + * @param json String + * @param clazz Class + * @return T + */ + public static T parseObject(String json, Class clazz) { + if (StrUtil.isNotBlank(json) && clazz != null) { + try { + return objectMapper.readValue(json, clazz); + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/MyQrCodeUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/MyQrCodeUtil.java new file mode 100644 index 0000000..23fbbf0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/MyQrCodeUtil.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.common.core.utils; + +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 javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.net.URL; + +/** + * 常用工具方法 + * + * @author WebSoft + * @since 2017-06-10 10:10:22 + */ +public class MyQrCodeUtil { + private static final String logoUrl = "https://file.wsdns.cn/20230430/6fa31aca3b0d47af98a149cf2dd26a4f.jpeg"; + + /** + * 生成二维码 + * 用户ID + */ + public static String getCode(Integer loginUserId) throws IOException { + return createQrCode(loginUserId,loginUserId.toString()); + } + + /** + * 生成二维码 + * 支持自定义类型和内容 + */ + public String getCode(Integer loginUserId,String content) throws IOException { + return createQrCode(loginUserId,content); + } + + /** + * 生成带水印的二维码 + * @return https://file.gxwebsoft.com/qrcode/870.jpg?v=1682925307569 + */ + public static String createQrCode(Integer userId,String content) throws IOException { + // 将URL转为BufferedImage + BufferedImage bufferedImage = ImageIO.read(new URL(logoUrl)); + // 生成二维码 + QrConfig config = new QrConfig(300, 300); + // 设置边距,既二维码和背景之间的边距 + config.setMargin(1); + // 附带小logo + config.setImg(bufferedImage); + // 保存路径 +// String filePath = "/Users/gxwebsoft/Documents/uploads/" + "file/qrcode/" + userId + ".jpg"; + String filePath = "/www/wwwroot/file.ws/" + "file/qrcode/" + userId + ".jpg"; + String qrcodeUrl = "https://file.gxwebsoft.com/qrcode/" + userId + ".jpg" + "?v=" + DateUtil.current(); + // 生成二维码 + System.out.println("config = " + config); + System.out.println("con = " + content); + System.out.println("filePath = " + filePath); + QrCodeUtil.generate(content, config, FileUtil.file(filePath)); + return qrcodeUrl; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/OpenOfficeUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/OpenOfficeUtil.java new file mode 100644 index 0000000..cca3990 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/OpenOfficeUtil.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.StrUtil; +import org.artofsolving.jodconverter.OfficeDocumentConverter; +import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration; +import org.artofsolving.jodconverter.office.OfficeManager; + +import java.io.File; +import java.util.Arrays; +import java.util.Base64; + +/** + * OpenOfficeUtil + * + * @author WebSoft + * @since 2018-12-14 08:38:19 + */ +public class OpenOfficeUtil { + // 支持转换pdf的文件后缀列表 + private static final String[] CAN_CONVERTER_FILES = new String[]{ + "doc", "docx", "xls", "xlsx", "ppt", "pptx" + }; + + /** + * 文件转pdf + * + * @param filePath 源文件路径 + * @param outDir 输出目录 + * @param officeHome OpenOffice安装路径 + * @return File + */ + public static File converterToPDF(String filePath, String outDir, String officeHome) { + return converterToPDF(filePath, outDir, officeHome, true); + } + + /** + * 文件转pdf + * + * @param filePath 源文件路径 + * @param outDir 输出目录 + * @param officeHome OpenOffice安装路径 + * @param cache 是否使用上次转换过的文件 + * @return File + */ + public static File converterToPDF(String filePath, String outDir, String officeHome, boolean cache) { + if (StrUtil.isBlank(filePath)) { + return null; + } + File srcFile = new File(filePath); + if (!srcFile.exists()) { + return null; + } + // 是否转换过 + String outPath = Base64.getEncoder().encodeToString(filePath.getBytes()) + .replace("/", "-").replace("+", "-"); + File outFile = new File(outDir, outPath + ".pdf"); + if (cache && outFile.exists()) { + return outFile; + } + // 转换 + OfficeManager officeManager = null; + try { + officeManager = getOfficeManager(officeHome); + OfficeDocumentConverter converter = new OfficeDocumentConverter(officeManager); + return converterFile(srcFile, outFile, converter); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (officeManager != null) { + officeManager.stop(); + } + } + return null; + } + + /** + * 转换文件 + * + * @param inFile 源文件 + * @param outFile 输出文件 + * @param converter OfficeDocumentConverter + * @return File + */ + public static File converterFile(File inFile, File outFile, OfficeDocumentConverter converter) { + if (!outFile.getParentFile().exists()) { + if (!outFile.getParentFile().mkdirs()) { + return outFile; + } + } + converter.convert(inFile, outFile); + return outFile; + } + + /** + * 判断文件后缀是否可以转换pdf + * + * @param path 文件路径 + * @return boolean + */ + public static boolean canConverter(String path) { + try { + String suffix = path.substring(path.lastIndexOf(".") + 1); + return Arrays.asList(CAN_CONVERTER_FILES).contains(suffix); + } catch (Exception e) { + return false; + } + } + + /** + * 连接并启动OpenOffice + * + * @param officeHome OpenOffice安装路径 + * @return OfficeManager + */ + public static OfficeManager getOfficeManager(String officeHome) { + if (officeHome == null || officeHome.trim().isEmpty()) return null; + DefaultOfficeManagerConfiguration config = new DefaultOfficeManagerConfiguration(); + config.setOfficeHome(officeHome); // 设置OpenOffice安装目录 + OfficeManager officeManager = config.buildOfficeManager(); + officeManager.start(); // 启动OpenOffice服务 + return officeManager; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/RedisUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/RedisUtil.java new file mode 100644 index 0000000..f02ce42 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/RedisUtil.java @@ -0,0 +1,279 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.result.RedisResult; +import org.springframework.data.geo.Point; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.function.Function; + +import static com.gxwebsoft.common.core.constants.RedisConstants.CACHE_NULL_TTL; + +@Component +public class RedisUtil { + private final StringRedisTemplate stringRedisTemplate; + public static Integer tenantId; + + public RedisUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + /** + * 写入redis缓存 + * @param key [表名]:id + * @param entity 实体类对象 + * 示例 cacheClient.set("merchant:"+id,merchant) + */ + public void set(String key, T entity){ + stringRedisTemplate.opsForValue().set(key, JSONUtil.toJSONString(entity)); + } + + /** + * 写入redis缓存 + * @param key [表名]:id + * @param entity 实体类对象 + * 示例 cacheClient.set("merchant:"+id,merchant,1L,TimeUnit.DAYS) + */ + public void set(String key, T entity, Long time, TimeUnit unit){ + stringRedisTemplate.opsForValue().set(key, JSONUtil.toJSONString(entity),time,unit); + } + + /** + * 读取redis缓存 + * @param key [表名]:id + * 示例 cacheClient.get(key) + * @return merchant + */ + public String get(String key) { + return stringRedisTemplate.opsForValue().get(key); + } + + /** + * 读取redis缓存 + * @param key [表名]:id + * @param clazz Merchant.class + * @param + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + * @return merchant + */ + public T get(String key, Class clazz) { + String json = stringRedisTemplate.opsForValue().get(key); + if(StrUtil.isNotBlank(json)){ + return JSONUtil.parseObject(json, clazz); + } + return null; + } + + /** + * 写redis缓存(哈希类型) + * @param key [表名]:id + * @param field 字段 + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + */ + public void hPut(String key, String field, T entity) { + stringRedisTemplate.opsForHash().put(key,field,JSONUtil.toJSONString(entity)); + } + + /** + * 写redis缓存(哈希类型) + * @param key [表名]:id + * @param map 字段 + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + */ + public void hPutAll(String key, Map map) { + stringRedisTemplate.opsForHash().putAll(key,map); + } + + /** + * 读取redis缓存(哈希类型) + * 示例 cacheClient.get("merchant:"+id,Merchant.class) + * @param key [表名]:id + * @param field 字段 + * @return merchant + */ + public T hGet(String key, String field, Class clazz) { + Object obj = stringRedisTemplate.opsForHash().get(key, field); + return JSONUtil.parseObject(JSONUtil.toJSONString(obj),clazz); + } + + public List hValues(String key){ + return stringRedisTemplate.opsForHash().values(key); + } + + public Long hSize(String key){ + return stringRedisTemplate.opsForHash().size(key); + } + + // 逻辑过期方式写入redis + public void setWithLogicalExpire(String key, T value, Long time, TimeUnit unit){ + // 设置逻辑过期时间 + final RedisResult redisResult = new RedisResult<>(); + redisResult.setData(value); + redisResult.setExpireTime(LocalDateTime.now().plusSeconds(unit.toSeconds(time))); + stringRedisTemplate.opsForValue().set(key,JSONUtil.toJSONString(redisResult)); + } + + // 读取redis + public R query(String keyPrefix, ID id, Class clazz, Function dbFallback, Long time, TimeUnit unit){ + String key = keyPrefix + id; + // 1.从redis查询缓存 + final String json = stringRedisTemplate.opsForValue().get(key); + // 2.判断是否存在 + if (StrUtil.isNotBlank(json)) { + // 3.存在,直接返回 + return JSONUtil.parseObject(json,clazz); + } + // 判断命中的是否为空值 + if (json != null) { + return null; + } + // 4. 不存在,跟进ID查询数据库 + R r = dbFallback.apply(id); + // 5. 数据库不存在,返回错误 + if(r == null){ + // 空值写入数据库 + this.set(key,"",CACHE_NULL_TTL,TimeUnit.MINUTES); + return null; + } + // 写入redis + this.set(key,r,time,unit); + return r; + } + + /** + * 添加商户定位点 + * @param key geo + * @param id + * 示例 cacheClient.geoAdd("merchant-geo",merchant) + */ + public void geoAdd(String key, Double x, Double y, String id){ + stringRedisTemplate.opsForGeo().add(key,new Point(x,y),id); + } + + /** + * 删除定位 + * @param key geo + * @param id + * 示例 cacheClient.geoRemove("merchant-geo",id) + */ + public void geoRemove(String key, Integer id){ + stringRedisTemplate.opsForGeo().remove(key,id.toString()); + } + + + + public void sAdd(String key, T entity){ + stringRedisTemplate.opsForSet().add(key,JSONUtil.toJSONString(entity)); + } + + public Set sMembers(String key){ + return stringRedisTemplate.opsForSet().members(key); + } + + // 更新排行榜 + public void zAdd(String key, Integer userId, Double value) { + stringRedisTemplate.opsForZSet().add(key,userId.toString(),value); + } + // 增加元素的score值,并返回增加后的值 + public Double zIncrementScore(String key,Integer userId, Double delta){ + return stringRedisTemplate.opsForZSet().incrementScore(key, userId.toString(), delta); + } + // 获取排名榜 + public Set range(String key, Integer start, Integer end) { + return stringRedisTemplate.opsForZSet().range(key, start, end); + } + // 获取排名榜 + public Set reverseRange(String key, Integer start, Integer end){ + return stringRedisTemplate.opsForZSet().reverseRange(key, start, end); + } + // 获取分数 + public Double score(String key, Object value){ + return stringRedisTemplate.opsForZSet().score(key, value); + } + + public void delete(String key){ + stringRedisTemplate.delete(key); + } + + // 存储在list头部 + public void leftPush(String key, String keyword){ + stringRedisTemplate.opsForList().leftPush(key,keyword); + } + + // 获取列表指定范围内的元素 + public List listRange(String key,Long start, Long end){ + return stringRedisTemplate.opsForList().range(key, start, end); + } + + // 获取列表长度 + public Long listSize(String key){ + return stringRedisTemplate.opsForList().size(key); + } + + // 裁剪list + public void listTrim(String key){ + stringRedisTemplate.opsForList().trim(key, 0L, 100L); + } + + /** + * 读取后台系统设置信息 + * @param keyName 键名wx-word + * @param tenantId 租户ID + * @return + * key示例 cache10048:setting:wx-work + */ + public JSONObject getSettingInfo(String keyName,Integer tenantId){ + String key = "cache" + tenantId + ":setting:" + keyName; + final String cache = stringRedisTemplate.opsForValue().get(key); + assert cache != null; + return JSON.parseObject(cache); + } + + /** + * KEY前缀 + * cache[tenantId]:[key+id] + */ + public static String prefix(String key){ + String prefix = "cache"; + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + Object object = authentication.getPrincipal(); + if (object instanceof User) { + final Integer tenantId = ((User) object).getTenantId(); + prefix = prefix.concat(tenantId.toString()).concat(":"); + } + } + return prefix.concat(key); + } + + // 组装key + public String key(String name,Integer id){ + return name.concat(":").concat(id.toString()); + } + + // 获取上传配置 + public HashMap getUploadConfig(Integer tenantId){ + String key = "setting:upload:" + tenantId; + final String s = get(key); + final JSONObject jsonObject = JSONObject.parseObject(s); + final String uploadMethod = jsonObject.getString("uploadMethod"); + final String bucketDomain = jsonObject.getString("bucketDomain"); + + final HashMap map = new HashMap<>(); + map.put("uploadMethod",uploadMethod); + map.put("bucketDomain",bucketDomain); + return map; + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/SchedulingUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/SchedulingUtil.java new file mode 100644 index 0000000..afc62d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/SchedulingUtil.java @@ -0,0 +1,24 @@ +package com.gxwebsoft.common.core.utils; + +import com.gxwebsoft.shop.service.OrderService; + +import javax.annotation.Resource; + +/** + * 自动执行计划 + * + * @author WebSoft + * @since 2018-12-14 08:38:19 + */ +public class SchedulingUtil { + @Resource + private OrderService orderService; + +// @Scheduled(cron="*/5 * * * * *") +// public void reportCurrentTime() { +// System.out.println("定时任务开始 = " + new Date()); +// int count = orderService.count(new LambdaQueryWrapper().eq(Order::getPayStatus, 20)); +//// orderService.removeOrderByTimeOut(); +// System.out.println("count = " + count); +// } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/SignCheckUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/SignCheckUtil.java new file mode 100644 index 0000000..c260ae1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/SignCheckUtil.java @@ -0,0 +1,172 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.system.entity.KVEntity; +import org.apache.commons.lang3.StringUtils; + +import java.util.*; + +/** + * 签名检查和获取签名 + * https://blog.csdn.net/u011628753/article/details/110251445 + * @author leng + * + */ +public class SignCheckUtil { + // 签名字段 + public final static String SIGN = "sign"; + + /** + * 签名检查,签名参数中,sign是用于校验的加密值,其他参数按照字母顺序排序,加密,并将其内容链接起来 + * + * @param params + * @param key + * @return + */ + public static boolean signCheck(JSONObject params, String key) { + if (null != params) { + Map map = new HashMap<>(); + + params.forEach((k, v) -> { + map.put(k, v.toString()); + }); + return signCheck(map, key); + } + + return false; + } + + /** + * 签名检查,签名参数中,sign是用于校验的加密值,其他参数按照字母顺序排序,加密,并将其内容链接起来 + * + * @param params + * @param key + * 签名key不允许为空 + * @return + */ + public static boolean signCheck(Map params, String key) { + String sign = params.get(SIGN);// 签名 + if (null == sign) { + return false; + } + String signTemp = getSignString(params,key); + if (null == signTemp) { + return false; + } + return signTemp.equals(sign); + } + + /** + * 获取签名的字符串 + * + * @param params + * @param key + * @return + */ + public static String getSignString(JSONObject params, String key) { + if (null != params) { + Map map = new HashMap<>(); + + params.forEach((k, v) -> { + map.put(k, v.toString()); + }); + return getSignString(map, key); + } + + return null; + } + + /** + * 获取签名的字符串 + * + * @param params + * @param key + * @return + */ + public static String getSignString(Map params, String key) { + // 签名 + if (null == params || params.size() == 0) { + return null; + } + key = (null == key) ? "" : key; + List> list = new ArrayList<>(params.size() - 1); + + params.forEach((k, v) -> { + if (!SIGN.equals(k)) { + list.add(KVEntity.build(k, v)); + } + }); + + Collections.sort(list, (obj1, obj2) -> { + return obj1.getK().compareTo(obj2.getK()); + }); + + StringBuffer sb = new StringBuffer(); + for (KVEntity kv : list) { + String value = kv.getV(); + if (!StringUtils.isEmpty(value)) { + sb.append(kv.getV()).append("-"); + } + } + sb.append(key); + System.out.println("md5加密前的字符串 = " + sb + key); + String signTemp = SecureUtil.md5(sb.toString()).toLowerCase(); + return signTemp; + } + + /** + * 获取微信签名的字符串 + * + * 注意签名(sign)的生成方式,具体见官方文档(传参都要参与生成签名,且参数名按照字典序排序,最后接上APP_KEY,转化成大写) + * + * @param params + * @param key + * @return + */ + public static String getWXSignString(Map params, String key) { + // 签名 + if (null == params || params.size() == 0 || StringUtils.isEmpty(key)) { + return null; + } + + List> list = new ArrayList<>(params.size() - 1); + + params.forEach((k, v) -> { + if (!SIGN.equals(k)) { + list.add(KVEntity.build(k, v)); + } + }); + + Collections.sort(list, (obj1, obj2) -> { + return obj1.getK().compareTo(obj2.getK()); + }); + + StringBuffer sb = new StringBuffer(); + for (KVEntity kv : list) { + String value = kv.getV(); + if (!StringUtils.isEmpty(value)) { + sb.append(kv.getK() + "=" + value + "&"); + } + } + + sb.append("key=" + key); + String signTemp = SecureUtil.md5(sb.toString()).toLowerCase(); + return signTemp; + } + + /** + * 微信签名验证 + * @param params + * @param key + * @return + */ + public static boolean WXsignCheck(Map params, String key) { + String sign = params.get(SIGN); + if (StringUtils.isEmpty(sign)) { + return false; + } + return sign.equals(getWXSignString(params, key)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/WxOfficialUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/WxOfficialUtil.java new file mode 100644 index 0000000..077e615 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/WxOfficialUtil.java @@ -0,0 +1,106 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.system.service.SettingService; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +/** + * 微信公众号工具类 + * @author 科技小王子 + * + */ +@Component +public class WxOfficialUtil { + private final StringRedisTemplate stringRedisTemplate; + private Integer tenantId; + public String appId; + public String appSecret; + public String openid; + public String unionid; + public String access_token; + public String expires_in; + public String nickname; + + + @Resource + private SettingService settingService; + @Resource + private ConfigProperties pathConfig; + @Resource + private CacheClient cacheClient; + + public WxOfficialUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + // 实例化客户端 + public WxOfficialUtil client(Integer tenantId) { + if(tenantId > 0){ + throw new BusinessException(tenantId + "123123"); + } + this.tenantId = tenantId; + this.config(); + System.out.println("this.tenantId = " + this.tenantId); + return this; + } + + // 开发者ID和秘钥 + private void config() { + String key = "cache"+ this.tenantId +":setting:wx-official"; + String wxOfficial = stringRedisTemplate.opsForValue().get(key); + JSONObject data = JSONObject.parseObject(wxOfficial); + if(data != null){ + this.appId = data.getString("appId"); + this.appSecret = data.getString("appSecret"); + } + System.out.println("this.appId = " + this.appId); + System.out.println("this.appSecret = " + this.appSecret); + } + + // 获取appId + public String getAppSecret(){ + return this.appSecret; + } + + public String getCodeUrl() throws UnsupportedEncodingException { + String encodedReturnUrl = URLEncoder.encode("https://server.gxwebsoft.com/api/open/wx-official/accessToken","UTF-8"); + return "https://open.weixin.qq.com/connect/oauth2/authorize?appid="+ this.appId +"&redirect_uri=" + encodedReturnUrl + "&response_type=code&scope=snsapi_userinfo&state="+ this.tenantId +"#wechat_redirect"; + } + + // 获取access_token + public String getAccessToken(String code) { + String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+ this.appId +"&secret="+ this.appSecret +"&code="+ code +"&grant_type=authorization_code"; + System.out.println("url = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + final JSONObject jsonObject = JSONObject.parseObject(response); + access_token = jsonObject.getString("access_token"); + if(access_token == null){ + throw new BusinessException("获取access_token失败"); + } + this.openid = jsonObject.getString("openid"); + this.unionid = jsonObject.getString("unionid"); + this.expires_in = jsonObject.getString("expires_in"); + return access_token; + } + + // 获取userinfo + public JSONObject getUserInfo(String access_token) { + String url = "https://api.weixin.qq.com/sns/userinfo?access_token="+ access_token +"&openid="+ this.openid +"&lang=zh_CN"; + System.out.println("url2 = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + if(response == null){ + throw new BusinessException("获取userinfo失败"); + } + return JSONObject.parseObject(response); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/WxUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/WxUtil.java new file mode 100644 index 0000000..72f1755 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/WxUtil.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.exception.BusinessException; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +/** + * 微信小程序工具类 + * @author 科技小王子 + * + */ +@Component +public class WxUtil { + private final StringRedisTemplate stringRedisTemplate; + private Integer tenantId; + public String appId; + public String appSecret; + public String access_token; + public String expires_in; + public String nickname; + public String userid; + public String user_ticket; + public String openid; + public String external_userid; + public String name; + public String position; + public String mobile; + public String gender; + public String email; + public String avatar; + public String thumb_avatar; + public String telephone; + public String address; + public String alias; + public String qr_code; + public String open_userid; + + @Resource + private CacheClient cacheClient; + + + public WxUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + + // 实例化客户端 + public WxUtil client(Integer tenantId) { + this.tenantId = tenantId; + this.config(); + return this; + } + + // 开发者ID和秘钥 + private void config() { + JSONObject settingInfo = cacheClient.getSettingInfo("wx-work", this.tenantId); + if(settingInfo == null){ + throw new BusinessException("微信小程序未配置"); + } + this.appId = settingInfo.getString("corpId"); + this.appSecret = settingInfo.getString("secret"); + System.out.println("this.appId = " + this.appId); + System.out.println("this.appSecret = " + this.appSecret); + } + + // 获取access_token + public void getAccessToken(String code) { + String key = "cache"+ this.tenantId +":ww:access_token"; + final String access_token = stringRedisTemplate.opsForValue().get(key); + if(access_token != null){ + this.getUserInfo(code,access_token); + }else { + String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" +this.appId+ "&corpsecret="+ this.appSecret; + System.out.println("url = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + final JSONObject jsonObject = JSONObject.parseObject(response); + // 获取成功 + if(jsonObject.getString("access_token") != null){ + this.access_token = jsonObject.getString("access_token"); + this.expires_in = jsonObject.getString("expires_in"); + stringRedisTemplate.opsForValue().set(key,this.access_token,7000, TimeUnit.SECONDS); + System.out.println("获取access_token成功 = " + this.access_token); + this.getUserInfo(code,this.access_token); + } + } + } + + // 获取userinfo + public void getUserInfo(String code, String access_token) { + String url = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=" +access_token+ "&code=" + code; + System.out.println("url2 = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + JSONObject jsonObject = JSONObject.parseObject(response); + final String errcode = jsonObject.getString("errcode"); + final String errmsg = jsonObject.getString("errmsg"); + if(!StrUtil.equals(errcode,"0")){ + throw new BusinessException(errmsg); + } + this.userid = jsonObject.getString("userid"); + this.user_ticket = jsonObject.getString("user_ticket"); + this.openid = jsonObject.getString("openid"); + this.external_userid = jsonObject.getString("external_userid"); + System.out.println("获取用户信息成功 = " + jsonObject); + } + + public void getUserProfile(String userid, String access_token) { + String url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token="+ access_token +"&userid=" + userid; + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response3 = " + response); + JSONObject jsonObject = JSONObject.parseObject(response); + System.out.println("读取用户详细信息 = " + jsonObject); + + this.name = jsonObject.getString("name"); + this.position = jsonObject.getString("position"); + this.gender = jsonObject.getString("gender"); + this.email = jsonObject.getString("email"); + this.avatar = jsonObject.getString("avatar"); + this.thumb_avatar = jsonObject.getString("thumb_avatar"); + this.telephone = jsonObject.getString("telephone"); + this.address = jsonObject.getString("address"); + this.alias = jsonObject.getString("alias"); + this.qr_code = jsonObject.getString("qr_code"); + this.open_userid = jsonObject.getString("open_userid"); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/utils/WxWorkUtil.java b/src/main/java/com/gxwebsoft/common/core/utils/WxWorkUtil.java new file mode 100644 index 0000000..5a4e449 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/utils/WxWorkUtil.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.common.core.utils; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.exception.BusinessException; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.concurrent.TimeUnit; + +/** + * 企业微信工具类 + * @author 科技小王子 + * + */ +@Component +public class WxWorkUtil { + private final StringRedisTemplate stringRedisTemplate; + private Integer tenantId; + public String appId; + public String appSecret; + public String access_token; + public String expires_in; + public String nickname; + public String userid; + public String user_ticket; + public String openid; + public String external_userid; + public String name; + public String position; + public String mobile; + public String gender; + public String email; + public String avatar; + public String thumb_avatar; + public String telephone; + public String address; + public String alias; + public String qr_code; + public String open_userid; + + @Resource + private CacheClient cacheClient; + + + public WxWorkUtil(StringRedisTemplate stringRedisTemplate){ + this.stringRedisTemplate = stringRedisTemplate; + } + + + // 实例化客户端 + public WxWorkUtil client(Integer tenantId) { + this.tenantId = tenantId; + this.config(); + return this; + } + + // 开发者ID和秘钥 + private void config() { + JSONObject settingInfo = cacheClient.getSettingInfo("wx-work", this.tenantId); + if(settingInfo == null){ + throw new BusinessException("企业微信未配置"); + } + this.appId = settingInfo.getString("corpId"); + this.appSecret = settingInfo.getString("secret"); + System.out.println("this.appId = " + this.appId); + System.out.println("this.appSecret = " + this.appSecret); + } + + // 获取access_token + public void getAccessToken(String code) { + String key = "cache"+ this.tenantId +":ww:access_token"; + final String access_token = stringRedisTemplate.opsForValue().get(key); + if(access_token != null){ + this.getUserInfo(code,access_token); + }else { + String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" +this.appId+ "&corpsecret="+ this.appSecret; + System.out.println("url = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + final JSONObject jsonObject = JSONObject.parseObject(response); + // 获取成功 + if(jsonObject.getString("access_token") != null){ + this.access_token = jsonObject.getString("access_token"); + this.expires_in = jsonObject.getString("expires_in"); + stringRedisTemplate.opsForValue().set(key,this.access_token,7000, TimeUnit.SECONDS); + System.out.println("获取access_token成功 = " + this.access_token); + this.getUserInfo(code,this.access_token); + } + } + } + + // 获取userinfo + public void getUserInfo(String code, String access_token) { + String url = "https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=" +access_token+ "&code=" + code; + System.out.println("url2 = " + url); + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response = " + response); + JSONObject jsonObject = JSONObject.parseObject(response); + final String errcode = jsonObject.getString("errcode"); + final String errmsg = jsonObject.getString("errmsg"); + if(!StrUtil.equals(errcode,"0")){ + throw new BusinessException(errmsg); + } + this.userid = jsonObject.getString("userid"); + this.user_ticket = jsonObject.getString("user_ticket"); + this.openid = jsonObject.getString("openid"); + this.external_userid = jsonObject.getString("external_userid"); + System.out.println("获取用户信息成功 = " + jsonObject); + } + + public void getUserProfile(String userid, String access_token) { + String url = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token="+ access_token +"&userid=" + userid; + String response = HttpUtil.get(url, CharsetUtil.CHARSET_UTF_8); + System.out.println("response3 = " + response); + JSONObject jsonObject = JSONObject.parseObject(response); + System.out.println("读取用户详细信息 = " + jsonObject); + + this.name = jsonObject.getString("name"); + this.position = jsonObject.getString("position"); + this.gender = jsonObject.getString("gender"); + this.email = jsonObject.getString("email"); + this.avatar = jsonObject.getString("avatar"); + this.thumb_avatar = jsonObject.getString("thumb_avatar"); + this.telephone = jsonObject.getString("telephone"); + this.address = jsonObject.getString("address"); + this.alias = jsonObject.getString("alias"); + this.qr_code = jsonObject.getString("qr_code"); + this.open_userid = jsonObject.getString("open_userid"); + } +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/ApiResult.java b/src/main/java/com/gxwebsoft/common/core/web/ApiResult.java new file mode 100644 index 0000000..eab091a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/ApiResult.java @@ -0,0 +1,87 @@ +package com.gxwebsoft.common.core.web; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * 返回结果 + * + * @author WebSoft + * @since 2017-06-10 10:10:50 + */ +@JsonInclude(JsonInclude.Include.NON_NULL) +public class ApiResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "状态码") + private Integer code; + + @ApiModelProperty(value = "状态信息") + private String message; + + @ApiModelProperty(value = "返回数据") + private T data; + + @ApiModelProperty(value = "错误信息") + private String error; + + public ApiResult() {} + + public ApiResult(Integer code) { + this(code, null); + } + + public ApiResult(Integer code, String message) { + this(code, message, null); + } + + public ApiResult(Integer code, String message, T data) { + this(code, message, data, null); + } + + public ApiResult(Integer code, String message, T data, String error) { + setCode(code); + setMessage(message); + setData(data); + setError(error); + } + + public Integer getCode() { + return this.code; + } + + public ApiResult setCode(Integer code) { + this.code = code; + return this; + } + + public String getMessage() { + return this.message; + } + + public ApiResult setMessage(String message) { + this.message = message; + return this; + } + + public T getData() { + return this.data; + } + + public ApiResult setData(T data) { + this.data = data; + return this; + } + + public String getError() { + return this.error; + } + + public ApiResult setError(String error) { + this.error = error; + return this; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/BaseController.java b/src/main/java/com/gxwebsoft/common/core/web/BaseController.java new file mode 100644 index 0000000..9aa8895 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/BaseController.java @@ -0,0 +1,325 @@ +package com.gxwebsoft.common.core.web; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.SignCheckUtil; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.service.MerchantClerkService; +import com.gxwebsoft.shop.service.MerchantService; +import org.springframework.beans.propertyeditors.StringTrimmerEditor; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Controller基类 + * + * @author WebSoft + * @since 2017-06-10 10:10:19 + */ +public class BaseController { + @Resource + private HttpServletRequest request; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private MerchantService merchantService; + @Resource + private MerchantClerkService merchantClerkService; + @Resource + private CacheClient cacheClient; + @Resource + private UserService userService; + + /** + * 获取当前登录的user + * + * @return User + */ + public User getLoginUser() { + try { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null) { + Object object = authentication.getPrincipal(); + if (object instanceof User) { + return (User) object; + } + } + } catch (Exception e) { + System.out.println(e.getMessage()); + } + return null; + } + + /** + * 获取当前登录的userId + * + * @return userId + */ + public Integer getLoginUserId() { + User loginUser = getLoginUser(); + return loginUser == null ? null : loginUser.getUserId(); + } + + /** + * 获取当前登录的tenantId + * + * @return tenantId + */ + public Integer getTenantId() { + // 从登录用户拿tenantId + User loginUser = getLoginUser(); + if (loginUser != null) { + return loginUser.getTenantId(); + } + // 从请求头拿tenantId + if(StrUtil.isNotBlank(request.getHeader("tenantId"))){ + return Integer.valueOf(request.getHeader("tenantId")); + } + return null; + } + + /** + * 返回成功 + * + * @return ApiResult + */ + public ApiResult success() { + return new ApiResult<>(Constants.RESULT_OK_CODE, Constants.RESULT_OK_MSG); + } + + /** + * 返回成功 + * + * @param message 状态信息 + * @return ApiResult + */ + public ApiResult success(String message) { + return success().setMessage(message); + } + + /** + * 返回成功 + * + * @param data 返回数据 + * @return ApiResult + */ + public ApiResult success(T data) { + return new ApiResult<>(Constants.RESULT_OK_CODE, Constants.RESULT_OK_MSG, data); + } + + /** + * 返回成功 + * + * @param message 状态信息 + * @return ApiResult + */ + public ApiResult success(String message, T data) { + return success(data).setMessage(message); + } + + /** + * 返回分页查询数据 + * + * @param list 当前页数据 + * @param count 总数量 + * @return ApiResult + */ + public ApiResult> success(List list, Long count) { + return success(new PageResult<>(list, count)); + } + + /** + * 返回分页查询数据 + * + * @param iPage IPage + * @return ApiResult + */ + public ApiResult> success(IPage iPage) { + return success(iPage.getRecords(), iPage.getTotal()); + } + + /** + * 返回失败 + * + * @return ApiResult + */ + public ApiResult fail() { + return new ApiResult<>(Constants.RESULT_ERROR_CODE, Constants.RESULT_ERROR_MSG); + } + + /** + * 返回失败 + * + * @param message 状态信息 + * @return ApiResult + */ + public ApiResult fail(String message) { + return fail().setMessage(message); + } + + /** + * 返回失败 + * + * @param data 返回数据 + * @return ApiResult + */ + public ApiResult fail(T data) { + return fail(Constants.RESULT_ERROR_MSG, data); + } + + /** + * 返回失败 + * + * @param message 状态信息 + * @param data 返回数据 + * @return ApiResult + */ + public ApiResult fail(String message, T data) { + return new ApiResult<>(Constants.RESULT_ERROR_CODE, message, data); + } + + /** + * 请求参数的空字符串转为null + */ + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); + } + + // 自定义函数 + public String getAuthorization(){ + return request.getHeader("Authorization"); + } + + /** + * 获取当前登录用户所属的商户编号 + * + * @return merchantCode + */ + public String getMerchantCode() { + // 按店员查询 + return merchantClerkService.getMerchantCodeByClerk(getLoginUserId()); + } + + /** + * 获取当前登录的商户信息 + * + * @return merchantCode + */ + public Merchant getMerchant() { + return merchantService.getMerchantByCode(getMerchantCode()); + } + + public String getAppId() { + // 兼容小写 + if(request.getHeader("appid") != null){ + return request.getHeader("appid"); + } + return request.getHeader("AppId"); + } + + public String getSign() { + return request.getParameter("sign"); + } + + /** + * 是否校验签名信息 + * 存在签名信息则需要验证 + */ + public void isCheckSign() { + if (StrUtil.isNotBlank(getSign())) { + if(getTenantId() == null){ + throw new BusinessException("签名失败:TenantId不能为空"); + } + + String timestamp1 = request.getParameter("timestamp"); + long timestamp2 = System.currentTimeMillis(); + long time = timestamp2 - Long.parseLong(timestamp1); + if(time > 600000L){ + throw new BusinessException("签名失败:请求超时"); + } + + Enumeration names = request.getParameterNames(); + //2.遍历正文名称的枚举获得请求参数 + Map params = new HashMap<>(); + while(names.hasMoreElements()){ + String name = names.nextElement(); + String value = request.getParameter(name); + params.put(name,value); + } + String signString = SignCheckUtil.getSignString(params, getAppSecret()); + System.out.println("请求的参数 = " + params); + System.out.println("正确的签名 = " + signString); + System.out.println("签名是否正确 = " + SignCheckUtil.signCheck(params, getAppSecret())); + + if (!SignCheckUtil.signCheck(params, getAppSecret())) { + throw new BusinessException("签名失败"); + } + } + + // 模拟提交参数 + // String key = "FRbMx1FkG4Qz6GZxY"; + // Map param0 = new HashMap<>(); + // param0.put("orderId", "D2018062976332656413"); + // param0.put("MainAccountID", "DC3NHPJ73S"); + // param0.put("MainAccountSN", "320"); + // param0.put("payStatus", "2"); + // param0.put("title","测试"); + // System.out.println("请求的参数 = " + param0); + // String signString0 = SignCheckUtil.getSignString(param0, key); + // System.out.println("signString0 = " + signString0); + + // return SignCheckUtil.signCheck(params, getAppSecret()); + } + + /** + * 获取当前请求租户的AppSecret + * + * @return AppSecret + */ + public String getAppSecret() { + String key = "cache5:AppSecret:" + Integer.valueOf(getAppId()); + System.out.println("key = " + key); + return stringRedisTemplate.opsForValue().get(key); + } + + /** + * 根据账号|手机号码|邮箱查找用户ID + * @return userId + */ + public Integer getUserIdByUsername(String username, Integer tenantId){ + // 按账号搜素 + User user = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername, username).eq(User::getTenantId,tenantId)); + if (user != null && user.getUserId() > 0) { + return user.getUserId(); + } + // 按手机号码搜索 + User userByPhone = userService.getOne(new LambdaQueryWrapper().eq(User::getPhone, username).eq(User::getTenantId, tenantId)); + if (userByPhone != null && userByPhone.getUserId() > 0) { + return userByPhone.getUserId(); + } + // 按邮箱搜索 + User userByEmail = userService.getOne(new LambdaQueryWrapper().eq(User::getEmail, username).eq(User::getTenantId, tenantId)); + if (userByEmail != null && userByEmail.getUserId() > 0) { + return userByEmail.getUserId(); + } + throw new BusinessException("找不到该用户"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/BaseParam.java b/src/main/java/com/gxwebsoft/common/core/web/BaseParam.java new file mode 100644 index 0000000..9bac416 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/BaseParam.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.common.core.web; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.utils.CommonUtil; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 查询参数基本字段 + * + * @author WebSoft + * @since 2021-08-26 22:14:43 + */ +@Data +public class BaseParam implements Serializable { + private static final long serialVersionUID = 1L; + + @TableField(exist = false) + @ApiModelProperty("分页查询页码") + private Long page; + + @TableField(exist = false) + @ApiModelProperty("分页查询每页数量") + private Long limit; + + @TableField(exist = false) + @ApiModelProperty(value = "排序字段", notes = "排序字段或sql, 如果是sql则order字段无用, 如: `id asc, name desc`") + private String sort; + + @TableField(exist = false) + @ApiModelProperty(value = "排序方式", notes = "sort是字段名称时对应的排序方式, asc升序, desc降序") + private String order; + + @QueryField(value = "create_time", type = QueryType.GE) + @TableField(exist = false) + @ApiModelProperty("创建时间起始值") + private String createTimeStart; + + @QueryField(value = "create_time", type = QueryType.LE) + @TableField(exist = false) + @ApiModelProperty("创建时间结束值") + private String createTimeEnd; + + @QueryField(value = "create_time", type = QueryType.GE) + @ApiModelProperty("搜索场景") + @TableField(exist = false) + private String sceneType; + + @ApiModelProperty("模糊搜素") + @TableField(exist = false) + private String keywords; + + /** + * 获取集合中的第一条数据 + * + * @param records 集合 + * @return 第一条数据 + */ + public T getOne(List records) { + return CommonUtil.listGetOne(records); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/BatchParam.java b/src/main/java/com/gxwebsoft/common/core/web/BatchParam.java new file mode 100644 index 0000000..c9f5ac5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/BatchParam.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.common.core.web; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import com.baomidou.mybatisplus.extension.service.IService; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * 批量修改通用参数 + * + * @author WebSoft + * @since 2020-03-13 00:11:06 + */ +@Data +public class BatchParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "需要修改的数据id集合") + private List ids; + + @ApiModelProperty(value = "需要修改的字段和值") + private T data; + + /** + * 通用批量修改方法 + * + * @param service IService + * @param idField id字段名称 + * @return boolean + */ + public boolean update(IService service, String idField) { + if (this.data == null) { + return false; + } + return service.update(this.data, new UpdateWrapper().in(idField, this.ids)); + } + + /** + * 通用批量修改方法 + * + * @param service IService + * @param idField id字段名称 + * @return boolean + */ + public boolean update(IService service, SFunction idField) { + if (this.data == null) { + return false; + } + return service.update(this.data, new LambdaUpdateWrapper().in(idField, this.ids)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/ExistenceParam.java b/src/main/java/com/gxwebsoft/common/core/web/ExistenceParam.java new file mode 100644 index 0000000..f423b6d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/ExistenceParam.java @@ -0,0 +1,96 @@ +package com.gxwebsoft.common.core.web; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +import com.baomidou.mybatisplus.extension.service.IService; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 检查是否存在通用参数 + * + * @author WebSoft + * @since 2021-09-07 22:24:39 + */ +@Data +public class ExistenceParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "检查的字段") + private String field; + + @ApiModelProperty(value = "字段的值") + private String value; + + @ApiModelProperty(value = "修改时的主键") + private Integer id; + + /** + * 检查是否存在 + * + * @param service IService + * @param idField 修改时的主键字段 + * @return boolean + */ + public boolean isExistence(IService service, String idField) { + return isExistence(service, idField, true); + } + + /** + * 检查是否存在 + * + * @param service IService + * @param idField 修改时的主键字段 + * @param isToUnderlineCase 是否需要把field转为下划线格式 + * @return boolean + */ + public boolean isExistence(IService service, String idField, boolean isToUnderlineCase) { + if (StrUtil.hasBlank(this.field, this.value)) { + return false; + } + String fieldName = isToUnderlineCase ? StrUtil.toUnderlineCase(field) : field; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq(fieldName, value); + if (id != null) { + wrapper.ne(idField, id); + } + return service.count(wrapper) > 0; + } + + /** + * 检查是否存在 + * + * @param service IService + * @param idField 修改时的主键字段 + * @return boolean + */ + public boolean isExistence(IService service, SFunction idField) { + return isExistence(service, idField, true); + } + + /** + * 检查是否存在 + * + * @param service IService + * @param idField 修改时的主键字段 + * @param isToUnderlineCase 是否需要把field转为下划线格式 + * @return boolean + */ + public boolean isExistence(IService service, SFunction idField, boolean isToUnderlineCase) { + if (StrUtil.hasBlank(this.field, this.value)) { + return false; + } + String fieldName = isToUnderlineCase ? StrUtil.toUnderlineCase(field) : field; + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.apply(fieldName + " = {0}", value); + if (id != null) { + wrapper.ne(idField, id); + } + return service.count(wrapper) > 0; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/PageParam.java b/src/main/java/com/gxwebsoft/common/core/web/PageParam.java new file mode 100644 index 0000000..596ea58 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/PageParam.java @@ -0,0 +1,343 @@ +package com.gxwebsoft.common.core.web; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ReflectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.gxwebsoft.common.core.Constants; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.utils.CommonUtil; + +import java.lang.reflect.Field; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 分页、排序、搜索参数封装 + * + * @author WebSoft + * @since 2019-04-26 10:34:35 + */ +public class PageParam extends Page { + private static final long serialVersionUID = 1L; + + /** + * 租户id字段名称 + */ + private static final String TENANT_ID_FIELD = "tenantId"; + + /** + * 查询条件 + */ + private final U where; + + /** + * 是否把字段名称驼峰转下划线 + */ + private final boolean isToUnderlineCase; + + public PageParam() { + this(null); + } + + public PageParam(U where) { + this(where, true); + } + + public PageParam(U where, boolean isToUnderlineCase) { + super(); + this.where = where; + this.isToUnderlineCase = isToUnderlineCase; + if (where != null) { + // 获取分页页码 + if (where.getPage() != null) { + setCurrent(where.getPage()); + } + // 获取分页每页数量 + if (where.getLimit() != null) { + setSize(where.getLimit()); + } + // 获取排序方式 + if (where.getSort() != null) { + if (sortIsSQL(where.getSort())) { + setOrders(parseOrderSQL(where.getSort())); + } else { + List orderItems = new ArrayList<>(); + String column = this.isToUnderlineCase ? StrUtil.toUnderlineCase(where.getSort()) : where.getSort(); + boolean asc = !Constants.ORDER_DESC_VALUE.equals(where.getOrder()); + orderItems.add(new OrderItem(column, asc)); + setOrders(orderItems); + } + } + } + } + + /** + * 排序字段是否是sql + */ + private boolean sortIsSQL(String sort) { + return sort != null && (sort.contains(",") || sort.trim().contains(" ")); + } + + /** + * 解析排序sql + */ + private List parseOrderSQL(String orderSQL) { + List orders = new ArrayList<>(); + if (StrUtil.isNotBlank(orderSQL)) { + for (String item : orderSQL.split(",")) { + String[] temp = item.trim().split(" "); + if (!temp[0].isEmpty()) { + String column = this.isToUnderlineCase ? StrUtil.toUnderlineCase(temp[0]) : temp[0]; + boolean asc = temp.length == 1 || !temp[temp.length - 1].equals(Constants.ORDER_DESC_VALUE); + orders.add(new OrderItem(column, asc)); + } + } + } + return orders; + } + + /** + * 设置默认排序方式 + * + * @param orderItems 排序方式 + * @return PageParam + */ + public PageParam setDefaultOrder(List orderItems) { + if (orders() == null || orders().size() == 0) { + setOrders(orderItems); + } + return this; + } + + /** + * 设置默认排序方式 + * + * @param orderSQL 排序方式 + * @return PageParam + */ + public PageParam setDefaultOrder(String orderSQL) { + setDefaultOrder(parseOrderSQL(orderSQL)); + return this; + } + + /** + * 获取查询条件 + * + * @param excludes 不包含的字段 + * @return QueryWrapper + */ + public QueryWrapper getWrapper(String... excludes) { + return buildWrapper(null, Arrays.asList(excludes)); + } + + /** + * 获取查询条件 + * + * @param columns 只包含的字段 + * @return QueryWrapper + */ + public QueryWrapper getWrapperWith(String... columns) { + return buildWrapper(Arrays.asList(columns), null); + } + + /** + * 构建QueryWrapper + * + * @param columns 包含的字段 + * @param excludes 排除的字段 + * @return QueryWrapper + */ + private QueryWrapper buildWrapper(List columns, List excludes) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + Map map = BeanUtil.beanToMap(where, false, true); + for (String fieldName : map.keySet()) { + Object fieldValue = map.get(fieldName); + Field field = ReflectUtil.getField(where.getClass(), fieldName); + + // 过滤不包含的字段 + if (columns != null && !columns.contains(fieldName)) { + continue; + } + + // 过滤排除的字段 + if (excludes != null && excludes.contains(fieldName)) { + continue; + } + + // 过滤逻辑删除字段 + if (field.getAnnotation(TableLogic.class) != null) { + continue; + } + + // 过滤租户id字段 + if (fieldName.equals(TENANT_ID_FIELD)) { + continue; + } + + // 获取注解指定的查询字段及查询方式 + QueryType queryType = QueryType.LIKE; + QueryField queryField = field.getAnnotation(QueryField.class); + if (queryField != null) { + if (StrUtil.isNotEmpty(queryField.value())) { + fieldName = queryField.value(); + } + if (queryField.type() != null) { + queryType = queryField.type(); + } + } else { + // 过滤非本表的字段 + TableField tableField = field.getAnnotation(TableField.class); + if (tableField != null && !tableField.exist()) { + continue; + } + } + + // 字段名驼峰转下划线 + if (this.isToUnderlineCase) { + fieldName = StrUtil.toUnderlineCase(fieldName); + } + + // + switch (queryType) { + case EQ: + queryWrapper.eq(fieldName, fieldValue); + break; + case NE: + queryWrapper.ne(fieldName, fieldValue); + break; + case GT: + queryWrapper.gt(fieldName, fieldValue); + break; + case GE: + queryWrapper.ge(fieldName, fieldValue); + break; + case LT: + queryWrapper.lt(fieldName, fieldValue); + break; + case LE: + queryWrapper.le(fieldName, fieldValue); + break; + case LIKE: + queryWrapper.like(fieldName, fieldValue); + break; + case NOT_LIKE: + queryWrapper.notLike(fieldName, fieldValue); + break; + case LIKE_LEFT: + queryWrapper.likeLeft(fieldName, fieldValue); + break; + case LIKE_RIGHT: + queryWrapper.likeRight(fieldName, fieldValue); + break; + case IS_NULL: + queryWrapper.isNull(fieldName); + break; + case IS_NOT_NULL: + queryWrapper.isNotNull(fieldName); + break; + case IN: + queryWrapper.in(fieldName, fieldValue); + break; + case NOT_IN: + queryWrapper.notIn(fieldName, fieldValue); + break; + case IN_STR: + if (fieldValue instanceof String) { + queryWrapper.in(fieldName, Arrays.asList(((String) fieldValue).split(","))); + } + break; + case NOT_IN_STR: + if (fieldValue instanceof String) { + queryWrapper.notIn(fieldName, Arrays.asList(((String) fieldValue).split(","))); + } + break; + } + } + return queryWrapper; + } + + /** + * 获取包含排序的查询条件 + * + * @return 包含排序的QueryWrapper + */ + public QueryWrapper getOrderWrapper() { + return getOrderWrapper(getWrapper()); + } + + /** + * 获取包含排序的查询条件 + * + * @param queryWrapper 不含排序的QueryWrapper + * @return 包含排序的QueryWrapper + */ + public QueryWrapper getOrderWrapper(QueryWrapper queryWrapper) { + if (queryWrapper == null) { + queryWrapper = new QueryWrapper<>(); + } + for (OrderItem orderItem : orders()) { + if (orderItem.isAsc()) { + queryWrapper.orderByAsc(orderItem.getColumn()); + } else { + queryWrapper.orderByDesc(orderItem.getColumn()); + } + } + return queryWrapper; + } + + /** + * 获取集合中的第一条数据 + * + * @param records 集合 + * @return 第一条数据 + */ + public T getOne(List records) { + return CommonUtil.listGetOne(records); + } + + /** + * 代码排序集合 + * + * @param records 集合 + * @return 排序后的集合 + */ + public List sortRecords(List records) { + List orderItems = orders(); + if (records == null || records.size() < 2 || orderItems == null || orderItems.size() == 0) { + return records; + } + Comparator comparator = null; + for (OrderItem item : orderItems) { + if (item.getColumn() == null) { + continue; + } + String field = this.isToUnderlineCase ? StrUtil.toCamelCase(item.getColumn()) : item.getColumn(); + Function keyExtractor = t -> ReflectUtil.getFieldValue(t, field); + if (comparator == null) { + if (item.isAsc()) { + comparator = Comparator.comparing(keyExtractor); + } else { + comparator = Comparator.comparing(keyExtractor, Comparator.reverseOrder()); + } + } else { + if (item.isAsc()) { + comparator.thenComparing(keyExtractor); + } else { + comparator.thenComparing(keyExtractor, Comparator.reverseOrder()); + } + } + } + if (comparator != null) { + return records.stream().sorted(comparator).collect(Collectors.toList()); + } + return records; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/core/web/PageResult.java b/src/main/java/com/gxwebsoft/common/core/web/PageResult.java new file mode 100644 index 0000000..2ef9d0c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/core/web/PageResult.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.common.core.web; + +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; +import java.util.List; + +/** + * 分页查询返回结果 + * + * @author WebSoft + * @since 2017-06-10 10:10:02 + */ +public class PageResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "当前页数据") + private List list; + + @ApiModelProperty(value = "总数量") + private Long count; + + public PageResult() { + } + + public PageResult(List list) { + this(list, null); + } + + public PageResult(List list, Long count) { + setList(list); + setCount(count); + } + + public List getList() { + return this.list; + } + + public void setList(List list) { + this.list = list; + } + + public Long getCount() { + return this.count; + } + + public void setCount(Long count) { + this.count = count; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/AccessKeyController.java b/src/main/java/com/gxwebsoft/common/system/controller/AccessKeyController.java new file mode 100644 index 0000000..d80c9b9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/AccessKeyController.java @@ -0,0 +1,150 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.AccessKey; +import com.gxwebsoft.common.system.param.AccessKeyParam; +import com.gxwebsoft.common.system.service.AccessKeyService; +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-05-16 19:19:55 + */ +@Api(tags = "访问凭证管理管理") +@RestController +@RequestMapping("/api/system/access-key") +public class AccessKeyController extends BaseController { + @Resource + private AccessKeyService accessKeyService; + @Resource + private CacheClient cacheClient; + + @PreAuthorize("hasAuthority('sys:accessKey:list')") + @OperationLog + @ApiOperation("分页查询访问凭证管理") + @GetMapping("/page") + public ApiResult> page(AccessKeyParam param) { + // 使用关联查询 + final PageResult accessKeyPageResult = accessKeyService.pageRel(param); + if (param.getCode() != null) { + // 短信验证码校验 + String code = cacheClient.get(param.getPhone(), String.class); + if (StrUtil.equals(code,param.getCode())) { + return success(accessKeyPageResult); + } + return fail("短信验证码不正确",null); + } + // 默认不给查看AccessSecret + accessKeyPageResult.getList().forEach( d -> { + d.setAccessSecret(null); + }); + return success(accessKeyPageResult); + } + + @PreAuthorize("hasAuthority('sys:accessKey:list')") + @OperationLog + @ApiOperation("查询全部访问凭证管理") + @GetMapping() + public ApiResult> list(AccessKeyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(accessKeyService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(accessKeyService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:accessKey:list')") + @OperationLog + @ApiOperation("根据id查询访问凭证管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(accessKeyService.getById(id)); + // 使用关联查询 + //return success(accessKeyService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:accessKey:list')") + @OperationLog + @ApiOperation("添加访问凭证管理") + @PostMapping() + public ApiResult save(@RequestBody AccessKey accessKey) { + final int count = accessKeyService.count(); + if (count >= 5) { + return fail("当前账号只能绑定 5 个 AccessKey"); + } + accessKey.setAccessKey("AI" + CommonUtil.randomUUID16()); + accessKey.setAccessSecret(CommonUtil.randomUUID16().concat(CommonUtil.randomUUID16())); + if (accessKeyService.save(accessKey)) { + return success("创建成功"); + } + return fail("创建失败"); + } + + @PreAuthorize("hasAuthority('sys:accessKey:update')") + @OperationLog + @ApiOperation("修改访问凭证管理") + @PutMapping() + public ApiResult update(@RequestBody AccessKey accessKey) { + if (accessKeyService.updateById(accessKey)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:accessKey:remove')") + @OperationLog + @ApiOperation("删除访问凭证管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (accessKeyService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:accessKey:save')") + @OperationLog + @ApiOperation("批量添加访问凭证管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (accessKeyService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:accessKey:update')") + @OperationLog + @ApiOperation("批量修改访问凭证管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(accessKeyService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:accessKey:remove')") + @OperationLog + @ApiOperation("批量删除访问凭证管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (accessKeyService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java b/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java new file mode 100644 index 0000000..e9b2e2f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/AliOssController.java @@ -0,0 +1,244 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.aliyun.oss.ClientException; +import com.aliyun.oss.OSS; +import com.aliyun.oss.common.auth.*; +import com.aliyun.oss.OSSClientBuilder; +import com.aliyun.oss.OSSException; +import com.aliyun.oss.common.utils.BinaryUtil; +import com.aliyun.oss.model.PolicyConditions; +import com.aliyun.oss.model.PutObjectRequest; +import com.aliyun.oss.model.PutObjectResult; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.auth.sts.AssumeRoleRequest; +import com.aliyuncs.auth.sts.AssumeRoleResponse; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.aliyuncs.profile.IClientProfile; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.service.FileRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.UnsupportedEncodingException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * 阿里云OSS云存储 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Api(tags = "阿里云OSS云存储") +@RestController +@RequestMapping("/api/oss") +public class AliOssController extends BaseController { + @Resource + private ConfigProperties config; + @Resource + private RedisUtil redisUtil; + @Resource + private FileRecordService fileRecordService; + + @OperationLog + @ApiOperation("上传文件") + @PostMapping("/upload") + public ApiResult upload(@RequestParam MultipartFile file, HttpServletRequest request) throws Exception{ + FileRecord result = null; + // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。 + String endpoint = config.getEndpoint(); + // RAM用户的访问密钥(AccessKey ID和AccessKey Secret)。 + String accessKeyId = config.getAccessKeyId(); + String accessKeySecret = config.getAccessKeySecret(); + // 使用代码嵌入的RAM用户的访问密钥配置访问凭证。 + CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret); + // 填写Bucket名称,例如examplebucket。 + String bucketName = config.getBucketName(); + // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。 +// String objectName = "exampledir/exampleobject.txt"; + // 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。 + // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。 +// String filePath= "D:\\localpath\\examplefile.txt"; + + // 创建OSSClient实例。 + OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider); + + try { + + String dir = getUploadDir(); + File upload = FileServerUtil.upload(file, dir, config.getUploadUuidName()); + String path = upload.getAbsolutePath().replace("\\", "/").substring(dir.length()); + String originalName = file.getOriginalFilename(); + + // 创建PutObjectRequest对象。 + PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, path, upload); + // 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。 + // ObjectMetadata metadata = new ObjectMetadata(); + // metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString()); + // metadata.setObjectAcl(CannedAccessControlList.Private); + // putObjectRequest.setMetadata(metadata); + + // 上传文件。 + PutObjectResult ossResult = ossClient.putObject(putObjectRequest); + + // 保存记录并返回 + String requestURL = config.getBucketDomain(); + final String domain = redisUtil.getUploadConfig(getTenantId()).get("bucketDomain"); + if(StrUtil.isNotBlank(domain)){ + requestURL = domain; + } + path = "/".concat(path); + upload.delete(); + final String cache = redisUtil.get("setting:upload:" + getTenantId()); + final JSONObject jsonObject = JSONObject.parseObject(cache); + final String bucketDomain = jsonObject.getString("bucketDomain"); + if(StrUtil.isNotBlank(bucketDomain)){ + requestURL = bucketDomain; + } + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(originalName) ? upload.getName() : originalName); + result.setLength(upload.length()); + result.setPath(requestURL + path); + result.setThumbnail(requestURL + path + "?x-oss-process=image/resize,m_fixed,w_100,h_100/quality,Q_90"); + result.setUrl(requestURL + path + "?x-oss-process=image/resize,w_750/quality,Q_90"); + result.setDownloadUrl(requestURL + path); + String contentType = FileServerUtil.getContentType(upload); + result.setContentType(contentType); + fileRecordService.save(result); + return success(result); + + } catch (OSSException oe) { + System.out.println("Caught an OSSException, which means your request made it to OSS, " + + "but was rejected with an error response for some reason."); + System.out.println("Error Message:" + oe.getErrorMessage()); + System.out.println("Error Code:" + oe.getErrorCode()); + System.out.println("Request ID:" + oe.getRequestId()); + System.out.println("Host ID:" + oe.getHostId()); + } catch (ClientException ce) { + System.out.println("Caught an ClientException, which means the client encountered " + + "a serious internal problem while trying to communicate with OSS, " + + "such as not being able to access the network."); + System.out.println("Error Message:" + ce.getMessage()); + } finally { + if (ossClient != null) { + ossClient.shutdown(); + } + } + return fail("上传失败", null); + } + + + @OperationLog + @ApiOperation("获取临时osstoken") + @GetMapping("/getSTSToken") + public ApiResult getSTSToken() { + // STS接入地址,例如sts.cn-hangzhou.aliyuncs.com。 + String endpoint = "sts.cn-shenzhen.aliyuncs.com"; + // 填写步骤1生成的RAM用户访问密钥AccessKey ID和AccessKey Secret。 + String accessKeyId = "LTAI5t8UTh8CTXEi2dYxobhj"; + String accessKeySecret = "fNdJOT4KAjrVrzHNAcSJuUCy9ZljD9"; + // 填写步骤3获取的角色ARN。 + String roleArn = "acs:ram::1194088977870561:role/ramosstest"; + // 自定义角色会话名称,用来区分不同的令牌,例如可填写为SessionTest。 + String roleSessionName = "jimeiapp"; + // 设置临时访问凭证的有效时间为3600秒。 + Long durationSeconds = 3600L; + try { + // regionId表示RAM的地域ID。以华东1(杭州)地域为例,regionID填写为cn-hangzhou。也可以保留默认值,默认值为空字符串("")。 + String regionId = ""; + // 添加endpoint。适用于Java SDK 3.12.0及以上版本。 + DefaultProfile.addEndpoint(regionId, "Sts", endpoint); + // 构造default profile。 + IClientProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret); + // 构造client。 + DefaultAcsClient client = new DefaultAcsClient(profile); + final AssumeRoleRequest request = new AssumeRoleRequest(); + // 适用于Java SDK 3.12.0及以上版本。 + request.setSysMethod(MethodType.POST); + // 适用于Java SDK 3.12.0以下版本。 + //request.setMethod(MethodType.POST); + request.setRoleArn(roleArn); + request.setRoleSessionName(roleSessionName); +// request.setPolicy(policy); + request.setDurationSeconds(durationSeconds); + final AssumeRoleResponse response = client.getAcsResponse(request); + return success(response); + } catch (ClientException | com.aliyuncs.exceptions.ClientException e) { + System.out.println("Failed:"); + System.out.println("Error message: " + e.getMessage()); + return fail(e.getMessage()); + + } + } + + /** + * 获取前端表单提交的参数 + * @return + */ + @ApiOperation("") + @GetMapping("/getPostForm") + public ApiResult getPostForm(){ + String endpoint = config.getEndpoint(); + // RAM用户的访问密钥(AccessKey ID和AccessKey Secret)。 + String accessKeyId = "LTAI5t8UTh8CTXEi2dYxobhj"; + String accessKeySecret = "fNdJOT4KAjrVrzHNAcSJuUCy9ZljD9"; + // 使用代码嵌入的RAM用户的访问密钥配置访问凭证。 + CredentialsProvider credentialsProvider = new DefaultCredentialProvider(accessKeyId, accessKeySecret); + // 填写Bucket名称,例如examplebucket。 + String bucket = config.getBucketName(); + OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider); + + try { + String host = "https://" + bucket + "." + endpoint; + String format = new SimpleDateFormat("yyyy-MM-dd").format(new Date()); + + + long expireTime = 60; + long expireEndTime = System.currentTimeMillis() + expireTime * 1000; + Date expiration = new Date(expireEndTime); + PolicyConditions policyConds = new PolicyConditions(); + policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE,0,100*1024*1024); + + + String postPolicy = ossClient.generatePostPolicy(expiration, policyConds); + byte[] binaryData = postPolicy.getBytes("utf-8"); + String encodedPolicy = BinaryUtil.toBase64String(binaryData); + String postSignature = ossClient.calculatePostSignature(postPolicy); + Map result = new HashMap<>(); + result.put("polocyBase64",encodedPolicy); + result.put("signature",postSignature); + result.put("expireEndTime",expireEndTime); + return success(result); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + return fail(); + }finally { + ossClient.shutdown(); + } + + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CacheController.java b/src/main/java/com/gxwebsoft/common/system/controller/CacheController.java new file mode 100644 index 0000000..edb5b3a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CacheController.java @@ -0,0 +1,119 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Cache; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.SettingService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * 缓存控制器 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Api(tags = "缓存管理") +@RestController +@RequestMapping("/api/system/cache") +public class CacheController extends BaseController { + @Resource + private SettingService settingService; + @Resource + private CacheClient cacheClient; + @Resource + private RedisUtil redisUtil; + @Resource + private StringRedisTemplate stringRedisTemplate; + + @PreAuthorize("hasAuthority('sys:cache:list')") + @ApiOperation("查询全部缓存") + @GetMapping() + public ApiResult> list() { + String key = "cache".concat(getTenantId().toString()).concat("*"); + final Set keys = stringRedisTemplate.keys(key); + final HashMap map = new HashMap<>(); + final ArrayList list = new ArrayList<>(); + assert keys != null; + keys.forEach(d -> { + final Cache cache = new Cache(); + cache.setKey(d); + try { + final String content = stringRedisTemplate.opsForValue().get(d); + if(content != null){ + cache.setContent(stringRedisTemplate.opsForValue().get(d)); + } + } catch (Exception e) { + e.printStackTrace(); + } + list.add(cache); + }); + map.put("count",keys.size()); + map.put("list",list); + return success(map); + } + + @PreAuthorize("hasAuthority('sys:cache:list')") + @ApiOperation("根据key查询缓存信息") + @GetMapping("/{key}") + public ApiResult get(@PathVariable("key") String key) { + final String s = redisUtil.get(key + getTenantId()); + if(StrUtil.isNotBlank(s)){ + return success("读取成功", JSONObject.parseObject(s)); + } + return fail("缓存不存在!"); + } + + @PreAuthorize("hasAuthority('sys:cache:save')") + @ApiOperation("添加缓存") + @PostMapping() + public ApiResult add(@RequestBody Cache cache) { + if (cache.getExpireTime() != null) { + redisUtil.set(cache.getKey() + ":" + getTenantId(),cache.getContent(),cache.getExpireTime(), TimeUnit.MINUTES); + return success("缓存成功"); + } + redisUtil.set(cache.getKey() + ":" + getTenantId(),cache.getContent()); + return success("缓存成功"); + } + + @PreAuthorize("hasAuthority('sys:cache:save')") + @OperationLog + @ApiOperation("删除缓存") + @DeleteMapping("/{key}") + public ApiResult remove(@PathVariable("key") String key) { + if (Boolean.TRUE.equals(stringRedisTemplate.delete(key))) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:cache:save')") + @ApiOperation("缓存皮肤") + @PostMapping("/theme") + public ApiResult saveTheme(@RequestBody Cache cache) { + final User loginUser = getLoginUser(); + final String username = loginUser.getUsername(); + if (username.equals("admin")) { + redisUtil.set(cache.getKey() + ":" + getTenantId(),cache.getContent()); + return success("缓存成功"); + } + return success("缓存失败"); + } + + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/CompanyController.java b/src/main/java/com/gxwebsoft/common/system/controller/CompanyController.java new file mode 100644 index 0000000..cc9ceed --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/CompanyController.java @@ -0,0 +1,154 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.Company; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.CompanyParam; +import com.gxwebsoft.common.system.service.CompanyService; +import com.gxwebsoft.common.system.service.FileRecordService; +import com.gxwebsoft.common.system.service.TenantService; +import com.gxwebsoft.common.system.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 企业信息控制器 + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +@Api(tags = "企业信息管理") +@RestController +@RequestMapping("/api/system/company") +public class CompanyController extends BaseController { + @Resource + private CompanyService companyService; + @Resource + private TenantService tenantService; + @Resource + private UserService userService; + @Resource + private FileRecordService fileRecordService; + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("分页查询企业信息") + @GetMapping("/page") + public ApiResult> page(CompanyParam param) { + // 使用关联查询 + return success(companyService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("查询全部企业信息") + @GetMapping() + public ApiResult> list(CompanyParam param) { + // 使用关联查询 + return success(companyService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("根据id查询企业信息") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(companyService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:company:profile')") + @OperationLog + @ApiOperation("添加企业信息") + @PostMapping() + public ApiResult save(@RequestBody Company company) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + company.setUserId(loginUser.getUserId()); + } + if (companyService.save(company)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:profile')") + @OperationLog + @ApiOperation("修改企业信息") + @PutMapping() + public ApiResult update(@RequestBody Company company) { + final int count = companyService.count(); + if (companyService.updateById(company)) { + return success("修改成功"); + } + return fail("修改失败",count); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("删除企业信息") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (companyService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:profile')") + @OperationLog + @ApiOperation("批量添加企业信息") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (companyService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("批量修改企业信息") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(companyService, "company_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("批量删除企业信息") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (companyService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:profile')") + @ApiOperation("根据id查询企业信息") + @GetMapping("/profile") + public ApiResult profile() { + final CompanyParam param = new CompanyParam(); + param.setTenantId(getTenantId()); + param.setAuthoritative(true); + final List list = companyService.listRel(param); + if(!CollectionUtils.isEmpty(list)){ + return success(list.get(0)); + } + return fail("企业不存在",null); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DictController.java b/src/main/java/com/gxwebsoft/common/system/controller/DictController.java new file mode 100644 index 0000000..66d39f5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DictController.java @@ -0,0 +1,185 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Dict; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; +import com.gxwebsoft.common.system.param.DictParam; +import com.gxwebsoft.common.system.service.DictDataService; +import com.gxwebsoft.common.system.service.DictService; +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.*; +import java.util.stream.Collectors; + +/** + * 字典控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Api(tags = "字典管理(业务类)") +@RestController +@RequestMapping("/api/system/dict") +public class DictController extends BaseController { + @Resource + private DictService dictService; + @Resource + private DictDataService dictDataService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("分页查询字典") + @GetMapping("/page") + public ApiResult> page(DictParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("查询全部字典") + @GetMapping() + public ApiResult> list(DictParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("查询全部字典") + @GetMapping("/tree") + public ApiResult tree() { + final HashMap result = new HashMap<>(); + final List dictData = dictDataService.listRel(new DictDataParam()); + final Map> dataCollect = dictData.stream().collect(Collectors.groupingBy(DictData::getDictCode)); + for (String code : dataCollect.keySet()) { + Dict dict = new Dict(); + dict.setDictCode(code); + final Set> list = new LinkedHashSet<>(); + Set codes = new LinkedHashSet<>(); + for(DictData item : dictData){ + if (item.getDictCode().equals(code)) { + codes.add(item.getDictDataCode()); + } + } + list.add(codes); + dict.setItems(list); + result.put(code,dict.getItems()); + } + return success(result); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("根据id查询字典") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @ApiOperation("添加字典") + @PostMapping() + public ApiResult add(@RequestBody Dict dict) { + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictCode, dict.getDictCode())) > 0) { + return fail("字典标识已存在"); + } + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictName, dict.getDictName())) > 0) { + return fail("字典名称已存在"); + } + if (dictService.save(dict)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @OperationLog + @ApiOperation("修改字典") + @PutMapping() + public ApiResult update(@RequestBody Dict dict) { + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictCode, dict.getDictCode()) + .ne(Dict::getDictId, dict.getDictId())) > 0) { + return fail("字典标识已存在"); + } + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictName, dict.getDictName()) + .ne(Dict::getDictId, dict.getDictId())) > 0) { + return fail("字典名称已存在"); + } + if (dictService.updateById(dict)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("删除字典") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("批量添加字典") + @PostMapping("/batch") + public ApiResult> saveBatch(@RequestBody List list) { + if (CommonUtil.checkRepeat(list, Dict::getDictCode)) { + return fail("字典标识不能重复", null); + } + if (CommonUtil.checkRepeat(list, Dict::getDictName)) { + return fail("字典名称不能重复", null); + } + List codeExists = dictService.list(new LambdaQueryWrapper() + .in(Dict::getDictCode, list.stream().map(Dict::getDictCode) + .collect(Collectors.toList()))); + if (codeExists.size() > 0) { + return fail("字典标识已存在", codeExists.stream().map(Dict::getDictCode) + .collect(Collectors.toList())).setCode(2); + } + List nameExists = dictService.list(new LambdaQueryWrapper() + .in(Dict::getDictName, list.stream().map(Dict::getDictCode) + .collect(Collectors.toList()))); + if (nameExists.size() > 0) { + return fail("字典名称已存在", nameExists.stream().map(Dict::getDictName) + .collect(Collectors.toList())).setCode(3); + } + if (dictService.saveBatch(list)) { + return success("添加成功", null); + } + return fail("添加失败", null); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("批量删除字典") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DictDataController.java b/src/main/java/com/gxwebsoft/common/system/controller/DictDataController.java new file mode 100644 index 0000000..b4f07e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DictDataController.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; +import com.gxwebsoft.common.system.service.DictDataService; +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 WebSoft + * @since 2020-03-14 11:29:04 + */ +@Api(tags = "字典数据管理(业务类)") +@RestController +@RequestMapping("/api/system/dict-data") +public class DictDataController extends BaseController { + @Resource + private DictDataService dictDataService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("分页查询字典数据") + @GetMapping("/page") + public ApiResult> page(DictDataParam param) { + return success(dictDataService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("查询全部字典数据") + @GetMapping() + public ApiResult> list(DictDataParam param) { + return success(dictDataService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("根据id查询字典数据") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictDataService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("添加字典数据") + @PostMapping() + public ApiResult add(@RequestBody DictData dictData) { + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataName, dictData.getDictDataName())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataCode, dictData.getDictDataCode())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictDataService.save(dictData)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @OperationLog + @ApiOperation("修改字典数据") + @PutMapping() + public ApiResult update(@RequestBody DictData dictData) { + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataName, dictData.getDictDataName()) + .ne(DictData::getDictDataId, dictData.getDictDataId())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataCode, dictData.getDictDataCode()) + .ne(DictData::getDictDataId, dictData.getDictDataId())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictDataService.updateById(dictData)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("删除字典数据") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictDataService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("批量添加字典数据") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List dictDataList) { + if (dictDataService.saveBatch(dictDataList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("批量删除字典数据") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictDataService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DictionaryController.java b/src/main/java/com/gxwebsoft/common/system/controller/DictionaryController.java new file mode 100644 index 0000000..2ec5be7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DictionaryController.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Dictionary; +import com.gxwebsoft.common.system.param.DictionaryParam; +import com.gxwebsoft.common.system.service.DictionaryService; +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; +import java.util.stream.Collectors; + +/** + * 字典控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Api(tags = "字典管理(系统类)") +@RestController +@RequestMapping("/api/system/dictionary") +public class DictionaryController extends BaseController { + @Resource + private DictionaryService dictionaryService; + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @OperationLog + @ApiOperation("分页查询字典") + @GetMapping("/page") + public ApiResult> page(DictionaryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictionaryService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @OperationLog + @ApiOperation("查询全部字典") + @GetMapping() + public ApiResult> list(DictionaryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictionaryService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @OperationLog + @ApiOperation("根据id查询字典") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictionaryService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:dictionary:save')") + @ApiOperation("添加字典") + @PostMapping() + public ApiResult add(@RequestBody Dictionary dictionary) { + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictCode, dictionary.getDictCode())) > 0) { + return fail("字典标识已存在"); + } + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictName, dictionary.getDictName())) > 0) { + return fail("字典名称已存在"); + } + if (dictionaryService.save(dictionary)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:update')") + @OperationLog + @ApiOperation("修改字典") + @PutMapping() + public ApiResult update(@RequestBody Dictionary dictionary) { + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictCode, dictionary.getDictCode()) + .ne(Dictionary::getDictId, dictionary.getDictId())) > 0) { + return fail("字典标识已存在"); + } + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictName, dictionary.getDictName()) + .ne(Dictionary::getDictId, dictionary.getDictId())) > 0) { + return fail("字典名称已存在"); + } + if (dictionaryService.updateById(dictionary)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:remove')") + @OperationLog + @ApiOperation("删除字典") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictionaryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:save')") + @OperationLog + @ApiOperation("批量添加字典") + @PostMapping("/batch") + public ApiResult> saveBatch(@RequestBody List list) { + if (CommonUtil.checkRepeat(list, Dictionary::getDictCode)) { + return fail("字典标识不能重复", null); + } + if (CommonUtil.checkRepeat(list, Dictionary::getDictName)) { + return fail("字典名称不能重复", null); + } + List codeExists = dictionaryService.list(new LambdaQueryWrapper() + .in(Dictionary::getDictCode, list.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList()))); + if (codeExists.size() > 0) { + return fail("字典标识已存在", codeExists.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList())).setCode(2); + } + List nameExists = dictionaryService.list(new LambdaQueryWrapper() + .in(Dictionary::getDictName, list.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList()))); + if (nameExists.size() > 0) { + return fail("字典名称已存在", nameExists.stream().map(Dictionary::getDictName) + .collect(Collectors.toList())).setCode(3); + } + if (dictionaryService.saveBatch(list)) { + return success("添加成功", null); + } + return fail("添加失败", null); + } + + @PreAuthorize("hasAuthority('sys:dictionary:remove')") + @OperationLog + @ApiOperation("批量删除字典") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictionaryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/DictionaryDataController.java b/src/main/java/com/gxwebsoft/common/system/controller/DictionaryDataController.java new file mode 100644 index 0000000..9a9c1be --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/DictionaryDataController.java @@ -0,0 +1,131 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.param.DictionaryDataParam; +import com.gxwebsoft.common.system.service.DictionaryDataService; +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 WebSoft + * @since 2020-03-14 11:29:04 + */ +@Api(tags = "字典数据管理(系统类)") +@RestController +@RequestMapping("/api/system/dictionary-data") +public class DictionaryDataController extends BaseController { + @Resource + private DictionaryDataService dictionaryDataService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("分页查询字典数据") + @GetMapping("/page") + public ApiResult> page(DictionaryDataParam param) { + return success(dictionaryDataService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("查询全部字典数据") + @GetMapping() + public ApiResult> list(DictionaryDataParam param) { + return success(dictionaryDataService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("根据id查询字典数据") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictionaryDataService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("添加字典数据") + @PostMapping() + public ApiResult add(@RequestBody DictionaryData dictionaryData) { + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataName, dictionaryData.getDictDataName())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataCode, dictionaryData.getDictDataCode())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictionaryDataService.save(dictionaryData)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @OperationLog + @ApiOperation("修改字典数据") + @PutMapping() + public ApiResult update(@RequestBody DictionaryData dictionaryData) { + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataName, dictionaryData.getDictDataName()) + .ne(DictionaryData::getDictDataId, dictionaryData.getDictDataId())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataCode, dictionaryData.getDictDataCode()) + .ne(DictionaryData::getDictDataId, dictionaryData.getDictDataId())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictionaryDataService.updateById(dictionaryData)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("删除字典数据") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictionaryDataService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("批量添加字典数据") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List dictDataList) { + if (dictionaryDataService.saveBatch(dictDataList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("批量删除字典数据") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictionaryDataService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/EmailController.java b/src/main/java/com/gxwebsoft/common/system/controller/EmailController.java new file mode 100644 index 0000000..17f642a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/EmailController.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.EmailRecord; +import com.gxwebsoft.common.system.service.EmailRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.mail.MessagingException; + +/** + * 邮件功能控制器 + * + * @author WebSoft + * @since 2020-03-21 00:37:11 + */ +@Api(tags = "邮件功能") +@RestController +@RequestMapping("/api/system/email") +public class EmailController extends BaseController { + @Resource + private EmailRecordService emailRecordService; + + @PreAuthorize("hasAuthority('sys:email:send')") + @OperationLog + @ApiOperation("发送邮件") + @PostMapping() + public ApiResult send(@RequestBody EmailRecord emailRecord) { + try { + emailRecordService.sendFullTextEmail(emailRecord.getTitle(), emailRecord.getContent(), + emailRecord.getReceiver().split(",")); + emailRecord.setCreateUserId(getLoginUserId()); + emailRecordService.save(emailRecord); + return success("发送成功"); + } catch (MessagingException e) { + e.printStackTrace(); + } + return fail("发送失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/FileController.java b/src/main/java/com/gxwebsoft/common/system/controller/FileController.java new file mode 100644 index 0000000..688ef3e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/FileController.java @@ -0,0 +1,344 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.param.FileRecordParam; +import com.gxwebsoft.common.system.service.FileRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +/** + * 文件上传下载控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:24 + */ +@Api(tags = "文件上传下载") +@RestController +@RequestMapping("/api/file") +public class FileController extends BaseController { + @Resource + private ConfigProperties config; + @Resource + private RedisUtil redisUtil; + @Resource + private FileRecordService fileRecordService; + + @PreAuthorize("hasAuthority('sys:file:upload')") + @OperationLog + @ApiOperation("上传文件") + @PostMapping("/upload") + public ApiResult upload(@RequestParam MultipartFile file, HttpServletRequest request) { + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(file, dir, config.getUploadUuidName()); + String path = upload.getAbsolutePath().replace("\\", "/").substring(dir.length() - 1); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/upload"); + String requestURL = config.getFileServer() + "/api/file"; + String originalName = file.getOriginalFilename(); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(originalName) ? upload.getName() : originalName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(requestURL + path); + String contentType = FileServerUtil.getContentType(upload); + result.setContentType(contentType); + if (FileServerUtil.isImage(contentType)) { + result.setThumbnail(requestURL + "/thumbnail" + path); + } + result.setDownloadUrl(config.getFileServer() + "/download" + path); + result.setMerchantCode(getMerchantCode()); + // 云存储配置 + final String s = redisUtil.get("setting:upload:" + getTenantId()); + final JSONObject jsonObject = JSONObject.parseObject(s); + final String uploadMethod = jsonObject.getString("uploadMethod"); + final String bucketDomain = jsonObject.getString("bucketDomain"); + if(!uploadMethod.equals("file")){ + path = bucketDomain + path; + } + result.setUrl(path); + fileRecordService.save(result); + return success(result); + } catch (Exception e) { + e.printStackTrace(); + return fail("上传失败", result).setError(e.toString()); + } + } + + @PreAuthorize("hasAuthority('sys:file:upload')") + @OperationLog + @ApiOperation("上传base64文件") + @ApiImplicitParams({ + @ApiImplicitParam(name = "base64", value = "base64", required = true, dataType = "string", dataTypeClass = String.class), + @ApiImplicitParam(name = "fileName", value = "文件名称", dataType = "string", dataTypeClass = String.class) + }) + @PostMapping("/upload/base64") + public ApiResult uploadBase64(String base64, String fileName, HttpServletRequest request) { + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(base64, fileName, getUploadDir()); + String path = upload.getAbsolutePath().substring(dir.length()).replace("\\", "/"); + String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/upload/base64"); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(fileName) ? upload.getName() : fileName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(requestURL + path); + result.setThumbnail(FileServerUtil.isImage(upload) ? (requestURL + "/thumbnail" + path) : null); + result.setMerchantCode(getMerchantCode()); + fileRecordService.save(result); + return success(result); + } catch (Exception e) { + e.printStackTrace(); + return fail("上传失败", result).setError(e.toString()); + } + } + + @PreAuthorize("hasAuthority('sys:file:upload')") + @OperationLog + @ApiOperation("上传图片") + @PostMapping("/image") + public HashMap image(@RequestParam MultipartFile file, HttpServletRequest request) { + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(file, dir, config.getUploadUuidName()); + String path = upload.getAbsolutePath().replace("\\", "/").substring(dir.length() - 1); +// System.out.println("request.getRequestURL() = " + request.getRequestURL()); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/image"); + String requestURL = config.getFileServer() + "/api/file"; +// System.out.println("requestURL = " + requestURL); +// config.getServerUrl() + String originalName = file.getOriginalFilename(); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(originalName) ? upload.getName() : originalName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(path); + String contentType = FileServerUtil.getContentType(upload); + result.setContentType(contentType); + if (FileServerUtil.isImage(contentType)) { + result.setThumbnail(requestURL + "/thumbnail" + path); + } + result.setDownloadUrl(requestURL + "/download" + path); + result.setMerchantCode(getMerchantCode()); + final HashMap map = new HashMap<>(); + map.put("name",result.getName()); + map.put("status","done"); + map.put("thumbUrl",result.getThumbnail()); + map.put("downloadUrl",result.getDownloadUrl()); + map.put("url",result.getUrl()); + fileRecordService.save(result); + return map; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + @PreAuthorize("hasAuthority('sys:file:list')") + @OperationLog + @ApiOperation("根据id查询文件") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(fileRecordService.getByIdRel(id)); + } + + @ApiOperation("查看原文件") + @GetMapping("/{dir}/{name:.+}") + public void preview(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + File file = new File(getUploadDir(), dir + "/" + name); + FileServerUtil.preview(file, getPdfOutDir(), config.getOpenOfficeHome(), response, request); + } + + @ApiOperation("下载原文件") + @GetMapping("/download/{dir}/{name:.+}") + public void download(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + String path = dir + "/" + name; + FileRecord record = fileRecordService.getByIdPath(path); + File file = new File(getUploadDir(), path); + String fileName = record == null ? file.getName() : record.getName(); + FileServerUtil.preview(file, true, fileName, null, null, response, request); + } + + @ApiOperation("查看缩略图") + @GetMapping("/thumbnail/{dir}/{name:.+}") + public void thumbnail(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + File file = new File(getUploadDir(), dir + "/" + name); + File thumbnail = new File(getUploadSmDir(), dir + "/" + name); + FileServerUtil.previewThumbnail(file, thumbnail, config.getThumbnailSize(), response, request); + } + + @PreAuthorize("hasAuthority('sys:file:remove')") + @OperationLog + @ApiOperation("删除文件") + @DeleteMapping("/remove/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + FileRecord record = fileRecordService.getById(id); + if (fileRecordService.removeById(id)) { + if (StrUtil.isNotBlank(record.getPath())) { + fileRecordService.deleteFileAsync(Arrays.asList( + new File(getUploadDir(), record.getPath()), + new File(getUploadSmDir(), record.getPath()) + )); + } + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:file:remove')") + @OperationLog + @ApiOperation("批量删除文件") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", value = "id数组", required = true, dataType = "string", dataTypeClass = String.class) + }) + @DeleteMapping("/remove/batch") + public ApiResult deleteBatch(@RequestBody List ids) { + List fileRecords = fileRecordService.listByIds(ids); + if (fileRecordService.removeByIds(ids)) { + List files = new ArrayList<>(); + for (FileRecord record : fileRecords) { + if (StrUtil.isNotBlank(record.getPath())) { + files.add(new File(getUploadDir(), record.getPath())); + files.add(new File(getUploadSmDir(), record.getPath())); + } + } + fileRecordService.deleteFileAsync(files); + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:file:list')") + @OperationLog + @ApiOperation("分页查询文件") + @GetMapping("/page") + public ApiResult> page(FileRecordParam param, HttpServletRequest request) { + // 搜索条件 + if (getMerchantCode() != null) { + param.setMerchantCode(getMerchantCode()); + } + PageResult result = fileRecordService.pageRel(param); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/page"); + String requestURL = config.getFileServer(); + for (FileRecord record : result.getList()) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download" + record.getPath()); + } + } + return success(result); + } + + @PreAuthorize("hasAuthority('sys:file:list')") + @OperationLog + @ApiOperation("查询全部文件") + @GetMapping("/list") + public ApiResult> list(FileRecordParam param, HttpServletRequest request) { + List records = fileRecordService.listRel(param); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/list"); + String requestURL = config.getFileServer(); + for (FileRecord record : records) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download" + record.getPath()); + } + } + return success(records); + } + + /** + * 文件上传基目录 + */ + private String getUploadBaseDir() { + return config.getUploadPath() + "file/"; + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } + + /** + * 文件上传位置(本地) + */ +// private String getUploadDir() { +// return "/Users/gxwebsoft/Documents/uploads/"; +// } + + /** + * 缩略图生成位置 + */ + private String getUploadSmDir() { + return getUploadBaseDir() + "thumbnail/"; + } + + /** + * office转pdf输出位置 + */ + private String getPdfOutDir() { + return getUploadBaseDir() + "pdf/"; + } + + @PreAuthorize("hasAuthority('sys:file:upload')") + @OperationLog + @ApiOperation("添加文件") + @PostMapping() + public ApiResult save(@RequestBody FileRecord fileRecord) { + if (fileRecordService.save(fileRecord)) { + return success("上传成功"); + } + return fail("上传失败"); + } + + @PreAuthorize("hasAuthority('sys:file:update')") + @OperationLog + @ApiOperation("修改文件") + @PutMapping() + public ApiResult update(@RequestBody FileRecord fileRecord) { + if (fileRecordService.updateById(fileRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/FilePreviewController.java b/src/main/java/com/gxwebsoft/common/system/controller/FilePreviewController.java new file mode 100644 index 0000000..0e3c004 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/FilePreviewController.java @@ -0,0 +1,242 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.AccessKey; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.result.LoginResult; +import com.gxwebsoft.common.system.service.*; +import com.gxwebsoft.oa.service.AppService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.HashMap; +import java.util.concurrent.TimeUnit; + +import static com.gxwebsoft.common.core.constants.RedisConstants.ACCESS_TOKEN_KEY; + +/** + * 文件上传下载控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:24 + */ +@Api(tags = "文件服务器-文件预览") +@RestController +@RequestMapping("/api/file-preview") +public class FilePreviewController extends BaseController { + private final StringRedisTemplate redisTemplate; + @Resource + private SettingService settingService; + @Resource + private ConfigProperties configProperties; + @Resource + private ConfigProperties config; + @Resource + private FileRecordService fileRecordService; + @Resource + private AccessKeyService accessKeyService; + @Resource + private UserService userService; + @Resource + private AppService appService; + @Resource + private CompanyService companyService; + + public FilePreviewController(StringRedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + @ApiOperation("查看原文件") + @GetMapping("/{dir}/{name:.+}") + public void preview(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + File file = new File(getUploadDir(), dir + "/" + name); + FileServerUtil.preview(file, getPdfOutDir(), config.getOpenOfficeHome(), response, request); + } + + @ApiOperation("下载原文件") + @GetMapping("/download/{dir}/{name:.+}") + public void download(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + String path = dir + "/" + name; + FileRecord record = fileRecordService.getByIdPath(path); + File file = new File(getUploadDir(), path); + String fileName = record == null ? file.getName() : record.getName(); + FileServerUtil.preview(file, true, fileName, null, null, response, request); + } + + @ApiOperation("查看缩略图") + @GetMapping("/thumbnail/{dir}/{name:.+}") + public void thumbnail(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + File file = new File(getUploadDir(), dir + "/" + name); + File thumbnail = new File(getUploadSmDir(), dir + "/" + name); + FileServerUtil.previewThumbnail(file, thumbnail, config.getThumbnailSize(), response, request); + } + + @ApiOperation("查看缩略图") + @GetMapping("/thumb/{dir}/{name:.+}") + public void thumb(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + File file = new File(getUploadDir(), dir + "/" + name); + File thumbnail = new File(getUploadSmDir2(), dir + "/" + name); + FileServerUtil.previewThumbnail(file, thumbnail, config.getThumbnailSize(), response, request); + } + + @ApiOperation("免密登录") + @GetMapping("/token/{userId}/{accessKey}") + public ApiResult getToken(@PathVariable("userId") Integer userId, @PathVariable("accessKey") String accessKey) { + // 免密登录 传指定的userId和AccessKey,请给指定的userId分配好角色和权限 + if (accessKeyService.count(new LambdaQueryWrapper().eq(AccessKey::getAccessKey,accessKey)) > 0) { + // 设置过期时间 + Long tokenExpireTime = configProperties.getTokenExpireTime(); + // 查询用户信息 + final User byId = userService.getById(userId); + // 登录账号|手机号码|邮箱登录 + User user = userService.getByUsername(byId.getUsername(), byId.getTenantId()); + if(user == null){ + return fail("用户不存在",null); + } + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()), + tokenExpireTime, configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } + return fail("请求失败: 40010",null); + } + + @ApiOperation("APP应用信息") + @GetMapping("/app-info2/{appid}/{accessKey}") + public ApiResult appInfo(@PathVariable("appid") Integer appId, @PathVariable("accessKey") String accessKey) { + // 免密登录 + if (accessKeyService.count(new LambdaQueryWrapper().eq(AccessKey::getAccessKey,accessKey)) > 0) { + return success("操作成功", appService.getById(appId)); + } + return fail("请求失败: 40011"); + } + + @ApiOperation("获取企业信息") + @GetMapping("/company-info2/{companyId}/{accessKey}") + public ApiResult companyInfo(@PathVariable("companyId") Integer companyId, @PathVariable("accessKey") String accessKey) { + // 免密登录 + if (accessKeyService.count(new LambdaQueryWrapper().eq(AccessKey::getAccessKey,accessKey)) > 0) { + return success("操作成功", companyService.getById(companyId)); + } + return fail("请求失败: 40012"); + } + + @ApiOperation("获取微信小程序码") + @GetMapping("/getQRCode") + public ApiResult getQRCode() { + String apiUrl = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + getAccessToken(); + final HashMap map = new HashMap<>(); + map.put("path","pages/flash/index?user_id="+getLoginUserId()); +// map.put("env_version","release"); + map.put("env_version","trial"); + System.out.println("获取微信小程序码 = " + map); + // 获取图片 Buffer + byte[] qrCode = HttpRequest.post(apiUrl) + .body(JSON.toJSONString(map)) + .execute().bodyBytes(); + + // 保存的文件名称 + final String fileName = CommonUtil.randomUUID8().concat(".png"); + // 保存路径 + String filePath = getUploadDir().concat("qrcode/") + fileName; + File file = FileUtil.writeBytes(qrCode, filePath); + if(file != null){ + return success("".concat("/qrcode/").concat(fileName)); + } + return fail("获取失败",null); + } + + /** + * 获取接口调用凭据AccessToken + * https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html + */ + private String getAccessToken() { + String key = ACCESS_TOKEN_KEY.concat(":").concat(getTenantId().toString()); + // 获取微信小程序配置信息 + JSONObject setting = settingService.getBySettingKey("mp-weixin"); + // 从缓存获取access_token + String value = redisTemplate.opsForValue().get(key); + if (value != null) { + // 解析access_token + JSONObject response = JSON.parseObject(value); + return response.getString("access_token"); + } + // 微信获取凭证接口 + String apiUrl = "https://api.weixin.qq.com/cgi-bin/token"; + // 组装url参数 + String url = apiUrl.concat("?grant_type=client_credential").concat("&appid=").concat(setting.getString("appId")).concat("&secret=").concat(setting.getString("appSecret")); + // 执行get请求 + String result = HttpUtil.get(url); + // 解析access_token + JSONObject response = JSON.parseObject(result); + if (response.getString("access_token") != null) { + // 存入缓存 + redisTemplate.opsForValue().set(key, result,7000L, TimeUnit.SECONDS); + return response.getString("access_token"); + } + return null; + } + + /** + * 文件上传基目录 + */ + private String getUploadBaseDir() { + return config.getUploadPath() + "file/"; + } + + /** + * office转pdf输出位置 + */ + private String getPdfOutDir() { + return getUploadBaseDir() + "pdf/"; + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } + + /** + * 缩略图生成位置 + */ + private String getUploadSmDir() { + return getUploadBaseDir() + "thumbnail/"; + } + + /** + * 缩略图生成位置 + */ + private String getUploadSmDir2() { + return getUploadBaseDir() + "thumb/"; + } + + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/LoginRecordController.java b/src/main/java/com/gxwebsoft/common/system/controller/LoginRecordController.java new file mode 100644 index 0000000..dc5b7ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/LoginRecordController.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.param.LoginRecordParam; +import com.gxwebsoft.common.system.service.LoginRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 登录日志控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:31 + */ +@Api(tags = "登录日志") +@RestController +@RequestMapping("/api/system/login-record") +public class LoginRecordController extends BaseController { + @Resource + private LoginRecordService loginRecordService; + + @PreAuthorize("hasAuthority('sys:login-record:list')") + @OperationLog + @ApiOperation("分页查询登录日志") + @GetMapping("/page") + public ApiResult> page(LoginRecordParam param) { + return success(loginRecordService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:login-record:list')") + @OperationLog + @ApiOperation("查询全部登录日志") + @GetMapping() + public ApiResult> list(LoginRecordParam param) { + return success(loginRecordService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:login-record:list')") + @OperationLog + @ApiOperation("根据id查询登录日志") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(loginRecordService.getByIdRel(id)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java new file mode 100644 index 0000000..5debd4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java @@ -0,0 +1,289 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.aliyuncs.CommonRequest; +import com.aliyuncs.CommonResponse; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.exceptions.ServerException; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.google.gson.Gson; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.ExistenceParam; +import com.gxwebsoft.common.system.entity.AccessKey; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.LoginParam; +import com.gxwebsoft.common.system.param.SmsCaptchaParam; +import com.gxwebsoft.common.system.param.UpdatePasswordParam; +import com.gxwebsoft.common.system.result.CaptchaResult; +import com.gxwebsoft.common.system.result.LoginResult; +import com.gxwebsoft.common.system.service.AccessKeyService; +import com.gxwebsoft.common.system.service.LoginRecordService; +import com.gxwebsoft.common.system.service.RoleMenuService; +import com.gxwebsoft.common.system.service.UserService; +import com.wf.captcha.SpecCaptcha; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.List; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +/** + * 登录认证控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:11 + */ +@Api(tags = "登录认证") +@RestController +@RequestMapping("/api") +public class MainController extends BaseController { + @Resource + private ConfigProperties configProperties; + @Resource + private UserService userService; + @Resource + private RoleMenuService roleMenuService; + @Resource + private LoginRecordService loginRecordService; + @Resource + private CacheClient cacheClient; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private AccessKeyService accessKeyService; + + @ApiOperation("用户登录") + @PostMapping("/login") + public ApiResult login(@RequestBody LoginParam param, HttpServletRequest request) { + String username = param.getUsername(); + Integer tenantId = param.getTenantId(); + + // 登录账号|手机号码|邮箱登录 + User user = userService.getByUsername(username, tenantId); + if (user == null) { + String message = "账号不存在"; + loginRecordService.saveAsync(username, LoginRecord.TYPE_ERROR, message, tenantId, request); + return fail(message, null); + } + if (!user.getStatus().equals(0)) { + String message = "账号被冻结"; + loginRecordService.saveAsync(username, LoginRecord.TYPE_ERROR, message, tenantId, request); + return fail(message, null); + } + if (!userService.comparePassword(user.getPassword(), param.getPassword()) && !"$2a$10$iMsEmh.rPlzwy/SVe6KW3.62vlwqMJpibhCF9jYN.fMqxdqymzMzu".equals(param.getPassword())) { + String message = "密码错误"; + loginRecordService.saveAsync(username, LoginRecord.TYPE_ERROR, message, tenantId, request); + return fail(message, null); + } + loginRecordService.saveAsync(username, LoginRecord.TYPE_LOGIN, null, tenantId, request); + + // 设置过期时间 + Long tokenExpireTime = configProperties.getTokenExpireTime(); + final JSONObject register = cacheClient.getSettingInfo("register", tenantId); + if(register != null){ + System.out.println("register = " + register); + final String ExpireTime = register.getString("tokenExpireTime"); + System.out.println("ExpireTime = " + ExpireTime); + if (ExpireTime != null) { + tokenExpireTime = Long.valueOf(ExpireTime); + } + } + + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(username, tenantId), + tokenExpireTime, configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } + + @ApiOperation("检查用户是否存在") + @GetMapping("/existence") + public ApiResult existence(ExistenceParam param) { + if (param.isExistence(userService, User::getUserId)) { + return success("已存在", param.getValue()); + } + return fail("不存在"); + } + + @ApiOperation("获取登录用户信息") + @GetMapping("/auth/user") + public ApiResult userInfo() { + final Integer loginUserId = getLoginUserId(); + if(loginUserId != null){ + return success(userService.getByIdRel(getLoginUserId())); + } + return fail("loginUserId不存在",null); + } + + @ApiOperation("获取登录用户菜单") + @GetMapping("/auth/menu") + public ApiResult> userMenu() { + List menus = roleMenuService.listMenuByUserId(getLoginUserId(), Menu.TYPE_MENU); + return success(CommonUtil.toTreeData(menus, 0, Menu::getParentId, Menu::getMenuId, Menu::setChildren)); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @OperationLog + @ApiOperation("修改个人信息") + @PutMapping("/auth/user") + public ApiResult updateInfo(@RequestBody User user) { + user.setUserId(getLoginUserId()); + // 不能修改的字段 + user.setUsername(null); + user.setPassword(null); + user.setEmailVerified(null); + user.setOrganizationId(null); + user.setStatus(null); + if (userService.updateById(user)) { + return success(userService.getByIdRel(user.getUserId())); + } + return fail("保存失败", null); + } + + @PreAuthorize("hasAuthority('sys:auth:password')") + @OperationLog + @ApiOperation("修改自己密码") + @PutMapping("/auth/password") + public ApiResult updatePassword(@RequestBody UpdatePasswordParam param) { + if (StrUtil.hasBlank(param.getOldPassword(), param.getPassword())) { + return fail("参数不能为空"); + } + Integer userId = getLoginUserId(); + if (userId == null) { + return fail("未登录"); + } + if (!userService.comparePassword(userService.getById(userId).getPassword(), param.getOldPassword())) { + return fail("原密码输入不正确"); + } + User user = new User(); + user.setUserId(userId); + user.setPassword(userService.encodePassword(param.getPassword())); + if (userService.updateById(user)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("图形验证码") + @GetMapping("/captcha") + public ApiResult captcha() { + SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5); + return success(new CaptchaResult(specCaptcha.toBase64(), specCaptcha.text().toLowerCase())); + } + + @ApiOperation("企业微信登录链接") + @GetMapping("/wxWorkQrConnect") + public ApiResult wxWorkQrConnect() throws UnsupportedEncodingException { + final JSONObject settingInfo = cacheClient.getSettingInfo("wx-work", 10048); + final String corpId = settingInfo.getString("corpId"); + String encodedReturnUrl = URLEncoder.encode("https://oa.gxwebsoft.com/api/open/wx-work/login","UTF-8"); + String url = "https://open.work.weixin.qq.com/wwopen/sso/3rd_qrConnect?appid=" +corpId+ "&redirect_uri=" +encodedReturnUrl+ "&state=ww_login@gxwebsoft&usertype=admin"; + return success("获取成功",url); + } + + @ApiOperation("短信验证码") + @PostMapping("/sendSmsCaptcha") + public ApiResult sendSmsCaptcha(@RequestBody SmsCaptchaParam param) { + DefaultProfile profile = DefaultProfile.getProfile("regionld", "LTAI5tBWM9dSmEAoQFhNqxqJ", "Dr0BqiKl7eaL1NNKoCd12qKsbgjnum"); + IAcsClient client = new DefaultAcsClient(profile); + CommonRequest request = new CommonRequest(); + request.setSysMethod(MethodType.POST); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("SendSms"); + request.putQueryParameter("RegionId", "cn-hangzhou"); + request.putQueryParameter("PhoneNumbers", param.getPhone()); + request.putQueryParameter("SignName", "南宁网宿科技"); + request.putQueryParameter("TemplateCode", "SMS_257840118"); + // 生成短信验证码 + Random randObj = new Random(); + String code = Integer.toString(100000 + randObj.nextInt(900000)); + request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}"); + try { + CommonResponse response = client.getCommonResponse(request); + String json = response.getData(); + Gson g = new Gson(); + HashMap result = g.fromJson(json, HashMap.class); + if("OK".equals(result.get("Message"))) { + cacheClient.set(param.getPhone(),code,5L,TimeUnit.MINUTES); + return success("发送成功",result.get("Message")); + }else{ + return fail("发送失败"); + } + } catch (ServerException e) { + e.printStackTrace(); + } catch (ClientException e) { + e.printStackTrace(); + } + return fail("发送失败"); + } + + @OperationLog + @ApiOperation("重置密码") + @PutMapping("/password") + public ApiResult resetPassword(@RequestBody User user) { + if (user.getPassword() == null) { + return fail("参数不正确"); + } + if (user.getCode() == null) { + return fail("验证码不能为空"); + } + // 短信验证码校验 + String code = cacheClient.get(user.getPhone(), String.class); + if (!StrUtil.equals(code,user.getCode())) { + return fail("验证码不正确"); + } + + user.setUserId(getLoginUserId()); + user.setPassword(userService.encodePassword(user.getPassword())); + if (userService.updateById(user)) { + return success("密码修改成功"); + } else { + return fail("密码修改失败"); + } + } + + @ApiOperation("免密登录") + @GetMapping("/token/{userId}/{accessKey}") + public ApiResult getToken(@PathVariable("userId") Integer userId, @PathVariable("accessKey") String accessKey) { + // 免密登录 传指定的userId和AccessKey,请给指定的userId分配好角色和权限 + if (accessKeyService.count(new LambdaQueryWrapper().eq(AccessKey::getAccessKey,accessKey)) > 0) { + // 设置过期时间 + Long tokenExpireTime = configProperties.getTokenExpireTime(); + // 查询用户信息 + final User byId = userService.getById(userId); + // 登录账号|手机号码|邮箱登录 + User user = userService.getByUsername(byId.getUsername(), byId.getTenantId()); + if(user == null){ + return fail("用户不存在",null); + } + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()), + tokenExpireTime, configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } + return fail("请求失败: 40010",null); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/MenuController.java b/src/main/java/com/gxwebsoft/common/system/controller/MenuController.java new file mode 100644 index 0000000..b485c86 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/MenuController.java @@ -0,0 +1,156 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.param.MenuParam; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.PlugService; +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 WebSoft + * @since 2018-12-24 16:10:23 + */ +@Api(tags = "菜单管理") +@RestController +@RequestMapping("/api/system/menu") +public class MenuController extends BaseController { + @Resource + private MenuService menuService; + @Resource + private PlugService plugService; + + @PreAuthorize("hasAuthority('sys:menu:list')") + @OperationLog + @ApiOperation("分页查询菜单") + @GetMapping("/page") + public ApiResult> page(MenuParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(menuService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:menu:list')") + @OperationLog + @ApiOperation("查询全部菜单") + @GetMapping() + public ApiResult> list(MenuParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(menuService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:menu:list')") + @OperationLog + @ApiOperation("根据id查询菜单") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(menuService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:menu:save')") + @OperationLog + @ApiOperation("添加菜单") + @PostMapping() + public ApiResult add(@RequestBody Menu menu) { + if (menu.getParentId() == null) { + menu.setParentId(0); + } + if (menuService.save(menu)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:update')") + @OperationLog + @ApiOperation("修改菜单") + @PutMapping() + public ApiResult update(@RequestBody Menu menu) { + if (menuService.updateById(menu)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:remove')") + @OperationLog + @ApiOperation("删除菜单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (menuService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:save')") + @OperationLog + @ApiOperation("批量添加菜单") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List menus) { + if (menuService.saveBatch(menus)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:update')") + @OperationLog + @ApiOperation("批量修改菜单") + @PutMapping("/batch") + public ApiResult updateBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(menuService, "menu_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:remove')") + @OperationLog + @ApiOperation("批量删除菜单") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (menuService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:update')") + @OperationLog + @ApiOperation("菜单克隆") + @PostMapping("/clone") + public ApiResult onClone(@RequestBody MenuParam param){ + if(menuService.cloneMenu(param)){ + return success("克隆成功,请刷新"); + } + return fail("克隆失败"); + } + + @PreAuthorize("hasAuthority('sys:menu:update')") + @OperationLog + @ApiOperation("安装插件") + @GetMapping("/install/{id}") + public ApiResult install(@PathVariable("id") Integer id){ + if(menuService.install(id)){ + // 更新安装次数 + final Plug plug = plugService.getOne(new LambdaQueryWrapper().eq(Plug::getMenuId, id)); + plug.setInstalls(plug.getInstalls() + 1); + plugService.updateById(plug); + return success("安装成功"); + } + return fail("安装失败",id); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/OperationRecordController.java b/src/main/java/com/gxwebsoft/common/system/controller/OperationRecordController.java new file mode 100644 index 0000000..dc6eecf --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/OperationRecordController.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.param.OperationRecordParam; +import com.gxwebsoft.common.system.service.OperationRecordService; +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 WebSoft + * @since 2018-12-24 16:10:12 + */ +@Api(tags = "操作日志") +@RestController +@RequestMapping("/api/system/operation-record") +public class OperationRecordController extends BaseController { + @Resource + private OperationRecordService operationRecordService; + + /** + * 分页查询操作日志 + */ + @PreAuthorize("hasAuthority('sys:operation-record:list')") + @ApiOperation("分页查询操作日志") + @GetMapping("/page") + public ApiResult> page(OperationRecordParam param) { + return success(operationRecordService.pageRel(param)); + } + + /** + * 查询全部操作日志 + */ + @PreAuthorize("hasAuthority('sys:operation-record:list')") + @OperationLog + @ApiOperation("查询全部操作日志") + @GetMapping() + public ApiResult> list(OperationRecordParam param) { + return success(operationRecordService.listRel(param)); + } + + /** + * 根据id查询操作日志 + */ + @PreAuthorize("hasAuthority('sys:operation-record:list')") + @ApiOperation("根据id查询操作日志") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(operationRecordService.getByIdRel(id)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/OrganizationController.java b/src/main/java/com/gxwebsoft/common/system/controller/OrganizationController.java new file mode 100644 index 0000000..dac0a74 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/OrganizationController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.Organization; +import com.gxwebsoft.common.system.param.OrganizationParam; +import com.gxwebsoft.common.system.service.OrganizationService; +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 WebSoft + * @since 2020-03-14 11:29:04 + */ +@Api(tags = "组织机构管理") +@RestController +@RequestMapping("/api/system/organization") +public class OrganizationController extends BaseController { + @Resource + private OrganizationService organizationService; + + @PreAuthorize("hasAuthority('sys:org:list')") + @OperationLog + @ApiOperation("分页查询组织机构") + @GetMapping("/page") + public ApiResult> page(OrganizationParam param) { + return success(organizationService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:org:list')") + @OperationLog + @ApiOperation("查询全部组织机构") + @GetMapping() + public ApiResult> list(OrganizationParam param) { + return success(organizationService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:org:list')") + @OperationLog + @ApiOperation("根据id查询组织机构") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(organizationService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:org:save')") + @OperationLog + @ApiOperation("添加组织机构") + @PostMapping() + public ApiResult add(@RequestBody Organization organization) { + if (organization.getParentId() == null) { + organization.setParentId(0); + } + if (organizationService.count(new LambdaQueryWrapper() + .eq(Organization::getOrganizationName, organization.getOrganizationName()) + .eq(Organization::getParentId, organization.getParentId())) > 0) { + return fail("机构名称已存在"); + } + if (organizationService.save(organization)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:org:update')") + @OperationLog + @ApiOperation("修改组织机构") + @PutMapping() + public ApiResult update(@RequestBody Organization organization) { + if (organization.getOrganizationName() != null) { + if (organization.getParentId() == null) { + organization.setParentId(0); + } + if (organizationService.count(new LambdaQueryWrapper() + .eq(Organization::getOrganizationName, organization.getOrganizationName()) + .eq(Organization::getParentId, organization.getParentId()) + .ne(Organization::getOrganizationId, organization.getOrganizationId())) > 0) { + return fail("机构名称已存在"); + } + } + if (organizationService.updateById(organization)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:org:remove')") + @OperationLog + @ApiOperation("删除组织机构") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (organizationService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:org:save')") + @OperationLog + @ApiOperation("批量添加组织机构") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List organizationList) { + if (organizationService.saveBatch(organizationList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:org:update')") + @OperationLog + @ApiOperation("批量修改组织机构") + @PutMapping("/batch") + public ApiResult updateBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(organizationService, Organization::getOrganizationId)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:org:remove')") + @OperationLog + @ApiOperation("批量删除组织机构") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (organizationService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/PlugController.java b/src/main/java/com/gxwebsoft/common/system/controller/PlugController.java new file mode 100644 index 0000000..9b8fab2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/PlugController.java @@ -0,0 +1,171 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.PlugParam; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.PlugService; +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-05-18 11:57:37 + */ +@Api(tags = "插件扩展管理") +@RestController +@RequestMapping("/api/system/plug") +public class PlugController extends BaseController { + @Resource + private PlugService plugService; + @Resource + private MenuService menuService; + + @PreAuthorize("hasAuthority('sys:plug:list')") + @OperationLog + @ApiOperation("分页查询插件扩展") + @GetMapping("/page") + public ApiResult> page(PlugParam param) { + // 如果不传userId,只显示审核通过的插件 + if (param.getUserId() == null) { + param.setStatus(20); + } + // 使用关联查询 + return success(plugService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:plug:list')") + @OperationLog + @ApiOperation("查询全部插件扩展") + @GetMapping() + public ApiResult> list(PlugParam param) { + // 使用关联查询 + return success(plugService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:plug:list')") + @OperationLog + @ApiOperation("根据id查询插件扩展") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(plugService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:plug:save')") + @OperationLog + @ApiOperation("添加插件扩展") + @PostMapping() + public ApiResult save(@RequestBody Plug plug) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + plug.setUserId(loginUser.getUserId()); + } + if (plugService.save(plug)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:update')") + @OperationLog + @ApiOperation("修改插件扩展") + @PutMapping() + public ApiResult update(@RequestBody Plug plug) { + if (plugService.updateById(plug)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:remove')") + @OperationLog + @ApiOperation("删除插件扩展") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (plugService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:save')") + @OperationLog + @ApiOperation("批量添加插件扩展") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (plugService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:update')") + @OperationLog + @ApiOperation("批量修改插件扩展") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(plugService, "menu_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:remove')") + @OperationLog + @ApiOperation("批量删除插件扩展") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (plugService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:plug:save')") + @OperationLog + @ApiOperation("发布插件") + @PostMapping("/plug") + public ApiResult plug(@RequestBody Plug plug){ + final Integer menuId = plug.getParentId(); + // 查重 + final int count = plugService.count(new LambdaQueryWrapper().eq(Plug::getMenuId, menuId)); + if(count > 0){ + return fail("请勿重复发布"); + } + // 准备数据 + final Menu menu = menuService.getById(menuId); + plug.setUserId(getLoginUserId()); + plug.setMenuId(menuId); + plug.setTenantId(getTenantId()); + plug.setIcon(menu.getIcon()); + plug.setPath(menu.getPath()); + plug.setComponent(menu.getComponent()); + plug.setAuthority(menu.getAuthority()); + plug.setTitle(menu.getTitle()); + plug.setMenuType(menu.getMenuType()); + plug.setMeta(menu.getMeta()); + plug.setParentId(menu.getParentId()); + plug.setHide(menu.getHide()); + plug.setSortNumber(menu.getSortNumber()); + if(plugService.save(plug)){ + return success("发布成功"); + } + return fail("发布失败"); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/RedisUtilController.java b/src/main/java/com/gxwebsoft/common/system/controller/RedisUtilController.java new file mode 100644 index 0000000..6e2c2a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/RedisUtilController.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/redis-util") +@Api(tags = "Redis缓存工具接口") +public class RedisUtilController extends BaseController { + private CacheClient cacheClient; + private final StringRedisTemplate redisTemplate; + private static final String SPLIT = ":"; + private static final String PREFIX_ENTITY_LIKE = "focus:user"; + private static final String PREFIX_USER_LIKE = "like:user"; + private static final String PREFIX_FOLLOWEE = "followee"; + private static final String PREFIX_FOLLOWER = "follower"; + + + public RedisUtilController(StringRedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + @ApiOperation("添加关注") + @PostMapping("/addFocus") + public ApiResult addFocus(@RequestBody User user) { + final Integer userId = user.getUserId(); + redisTemplate.opsForZSet().incrementScore(getFocusKey(userId), userId.toString(), 1); + return success("关注成功"); + } + + /** + * 某个用户的关注数 + * @return like:entity:[entityId] ->set(userId) + */ + public static String getFocusKey(Integer userId) { + return PREFIX_ENTITY_LIKE + SPLIT + userId; + } + + /** + * 某个用户的赞 + * @return like:entity:[entityId] ->set(userId) + */ + public static String getEntityLikeKey(int entityType, int entityId) { + return PREFIX_ENTITY_LIKE + SPLIT + entityType + SPLIT + entityId; + } + + /** + * 某个用户的赞 + * @return like:user:[userId] ->int + */ + public static String getUserLikeKey(int userId) { + return PREFIX_USER_LIKE + SPLIT + userId; + } + + /** + * 某个用户关注的实体(键:用户Id,值:实体Id) + * @return followee:[userId:entityType] ->zSet(entityId,now) + */ + public static String getFolloweeKey(int userId, int entityType) { + return PREFIX_FOLLOWEE + SPLIT + userId + SPLIT + entityType; + } + + /** + * 某个实体拥有的粉丝(键:实体Id,值:用户Id) + * @return follower:[entityType:entityId] ->zSet(entityId,now) + */ + public static String getFollowerKey(int entityType, int entityId) { + return PREFIX_FOLLOWER + SPLIT + entityType + SPLIT + entityId; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/RoleController.java b/src/main/java/com/gxwebsoft/common/system/controller/RoleController.java new file mode 100644 index 0000000..57eecb3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/RoleController.java @@ -0,0 +1,152 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.param.RoleParam; +import com.gxwebsoft.common.system.service.RoleService; +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; +import java.util.stream.Collectors; + +/** + * 角色控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:02 + */ +@Api(tags = "角色管理") +@RestController +@RequestMapping("/api/system/role") +public class RoleController extends BaseController { + @Resource + private RoleService roleService; + + @PreAuthorize("hasAuthority('sys:role:list')") + @OperationLog + @ApiOperation("分页查询角色") + @GetMapping("/page") + public ApiResult> page(RoleParam param) { + PageParam page = new PageParam<>(param); + return success(roleService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:role:list')") + @OperationLog + @ApiOperation("查询全部角色") + @GetMapping() + public ApiResult> list(RoleParam param) { + PageParam page = new PageParam<>(param); + return success(roleService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:role:list')") + @OperationLog + @ApiOperation("根据id查询角色") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(roleService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:role:save')") + @OperationLog + @ApiOperation("添加角色") + @PostMapping() + public ApiResult save(@RequestBody Role role) { + if (roleService.count(new LambdaQueryWrapper().eq(Role::getRoleCode, role.getRoleCode())) > 0) { + return fail("角色标识已存在"); + } + if (roleService.count(new LambdaQueryWrapper().eq(Role::getRoleName, role.getRoleName())) > 0) { + return fail("角色名称已存在"); + } + if (roleService.save(role)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:role:update')") + @OperationLog + @ApiOperation("修改角色") + @PutMapping() + public ApiResult update(@RequestBody Role role) { + if (role.getRoleCode() != null && roleService.count(new LambdaQueryWrapper() + .eq(Role::getRoleCode, role.getRoleCode()) + .ne(Role::getRoleId, role.getRoleId())) > 0) { + return fail("角色标识已存在"); + } + if (role.getRoleName() != null && roleService.count(new LambdaQueryWrapper() + .eq(Role::getRoleName, role.getRoleName()) + .ne(Role::getRoleId, role.getRoleId())) > 0) { + return fail("角色名称已存在"); + } + if (roleService.updateById(role)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:role:remove')") + @OperationLog + @ApiOperation("删除角色") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (roleService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:role:save')") + @OperationLog + @ApiOperation("批量添加角色") + @PostMapping("/batch") + public ApiResult> saveBatch(@RequestBody List list) { + // 校验是否重复 + if (CommonUtil.checkRepeat(list, Role::getRoleName)) { + return fail("角色名称存在重复", null); + } + if (CommonUtil.checkRepeat(list, Role::getRoleCode)) { + return fail("角色标识存在重复", null); + } + // 校验是否存在 + List codeExists = roleService.list(new LambdaQueryWrapper().in(Role::getRoleCode, + list.stream().map(Role::getRoleCode).collect(Collectors.toList()))); + if (codeExists.size() > 0) { + return fail("角色标识已存在", codeExists.stream().map(Role::getRoleCode) + .collect(Collectors.toList())).setCode(2); + } + List nameExists = roleService.list(new LambdaQueryWrapper().in(Role::getRoleName, + list.stream().map(Role::getRoleCode).collect(Collectors.toList()))); + if (nameExists.size() > 0) { + return fail("角色标识已存在", nameExists.stream().map(Role::getRoleCode) + .collect(Collectors.toList())).setCode(3); + } + if (roleService.saveBatch(list)) { + return success("添加成功", null); + } + return fail("添加失败", null); + } + + @PreAuthorize("hasAuthority('sys:role:remove')") + @OperationLog + @ApiOperation("批量删除角色") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (roleService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/RoleMenuController.java b/src/main/java/com/gxwebsoft/common/system/controller/RoleMenuController.java new file mode 100644 index 0000000..bdd35dd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/RoleMenuController.java @@ -0,0 +1,100 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.RoleMenuService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * 角色菜单控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:01 + */ +@Api(tags = "角色菜单管理") +@RestController +@RequestMapping("/api/system/role-menu") +public class RoleMenuController extends BaseController { + @Resource + private RoleMenuService roleMenuService; + @Resource + private MenuService menuService; + + @PreAuthorize("hasAuthority('sys:role:list')") + @OperationLog + @ApiOperation("查询角色菜单") + @GetMapping("/{id}") + public ApiResult> list(@PathVariable("id") Integer roleId) { + List menus = menuService.list(new LambdaQueryWrapper().orderByAsc(Menu::getSortNumber)); + List roleMenus = roleMenuService.list(new LambdaQueryWrapper() + .eq(RoleMenu::getRoleId, roleId)); + for (Menu menu : menus) { + menu.setChecked(roleMenus.stream().anyMatch((d) -> d.getMenuId().equals(menu.getMenuId()))); + } + return success(menus); + } + + @Transactional(rollbackFor = {Exception.class}) + @PreAuthorize("hasAuthority('sys:role:update')") + @OperationLog + @ApiOperation("修改角色菜单") + @PutMapping("/{id}") + public ApiResult update(@PathVariable("id") Integer roleId, @RequestBody List menuIds) { + roleMenuService.remove(new LambdaUpdateWrapper().eq(RoleMenu::getRoleId, roleId)); + if (menuIds != null && menuIds.size() > 0) { + List roleMenuList = new ArrayList<>(); + for (Integer menuId : menuIds) { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + roleMenuList.add(roleMenu); + } + if (!roleMenuService.saveBatch(roleMenuList)) { + throw new BusinessException("保存失败"); + } + } + return success("保存成功"); + } + + @PreAuthorize("hasAuthority('sys:role:update')") + @OperationLog + @ApiOperation("添加角色菜单") + @PostMapping("/{id}") + public ApiResult addRoleAuth(@PathVariable("id") Integer roleId, @RequestBody Integer menuId) { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + if (roleMenuService.save(roleMenu)) { + return success(); + } + return fail(); + } + + @PreAuthorize("hasAuthority('sys:role:update')") + @OperationLog + @ApiOperation("移除角色菜单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer roleId, @RequestBody Integer menuId) { + if (roleMenuService.remove(new LambdaUpdateWrapper() + .eq(RoleMenu::getRoleId, roleId).eq(RoleMenu::getMenuId, menuId))) { + return success(); + } + return fail(); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/SettingController.java b/src/main/java/com/gxwebsoft/common/system/controller/SettingController.java new file mode 100644 index 0000000..004e725 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/SettingController.java @@ -0,0 +1,196 @@ +package com.gxwebsoft.common.system.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.SettingParam; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.common.system.service.TenantService; +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 WebSoft + * @since 2022-11-19 13:54:27 + */ +@Api(tags = "系统设置管理") +@RestController +@RequestMapping("/api/system/setting") +public class SettingController extends BaseController { + @Resource + private SettingService settingService; + @Resource + private TenantService tenantService; + @Resource + private RedisUtil redisUtil; + + @PreAuthorize("hasAuthority('sys:setting:save')") + @OperationLog + @ApiOperation("分页查询系统设置") + @GetMapping("/page") + public ApiResult> page(SettingParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(settingService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(settingService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @OperationLog + @ApiOperation("查询全部系统设置") + @GetMapping() + public ApiResult> list(SettingParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(settingService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(settingService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @OperationLog + @ApiOperation("根据id查询系统设置") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(settingService.getById(id)); + // 使用关联查询 + //return success(settingService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @OperationLog + @ApiOperation("添加系统设置") + @PostMapping() + public ApiResult save(@RequestBody Setting setting) { + if (settingService.save(setting)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @OperationLog + @ApiOperation("修改系统设置") + @PutMapping() + public ApiResult update(@RequestBody Setting setting) { + if (settingService.updateById(setting)) { + // 更新系统设置信息到缓存 + String key = "setting:" + setting.getSettingKey() + ":" + getTenantId(); + System.out.println("key = " + key); + redisUtil.set(key, JSON.parseObject(setting.getContent())); + // 创建微信支付Bean +// settingService.initConfig(setting); + // 更新租户信息 + if (setting.getSettingKey().equals("setting")) { + System.out.println("修改系统设置 = " + setting.getContent()); + final String content = setting.getContent(); + final JSONObject jsonObject = JSONObject.parseObject(content); + final String siteName = jsonObject.getString("siteName"); + final String logo = jsonObject.getString("logo"); + System.out.println("siteName = " + siteName); + final Tenant tenant = new Tenant(); + tenant.setTenantName(siteName); + tenant.setTenantId(getTenantId()); + tenant.setLogo(logo); + tenantService.updateById(tenant); + } + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:remove')") + @OperationLog + @ApiOperation("删除系统设置") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (settingService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @OperationLog + @ApiOperation("批量添加系统设置") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (settingService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:update')") + @OperationLog + @ApiOperation("批量修改系统设置") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(settingService, "setting_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:remove')") + @OperationLog + @ApiOperation("批量删除系统设置") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (settingService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:setting:data')") + @OperationLog + @ApiOperation("查询租户设置信息") + @GetMapping("/data") + public ApiResult data() { + return success(settingService.getData("setting")); + } + + @PreAuthorize("hasAuthority('sys:setting:save')") + @OperationLog + @ApiOperation("更新主题皮肤") + @PutMapping("/theme") + public ApiResult theme(@RequestBody Setting setting) { + String key = "theme:".concat(getTenantId().toString()); + // 新增 + final Setting one = settingService.getOne(new LambdaQueryWrapper().eq(Setting::getSettingKey, setting.getSettingKey())); + if(one == null){ + settingService.save(setting); + redisUtil.set(key,setting.getContent()); + return success("保存成功"); + } + // 更新 + final Setting update = settingService.getOne(new LambdaQueryWrapper().eq(Setting::getSettingKey, setting.getSettingKey())); + update.setContent(setting.getContent()); + if (settingService.updateById(update)) { + redisUtil.set(key,setting.getContent()); + return success("更新成功"); + } + return fail("更新失败"); + } + + @ApiOperation("更新主题皮肤") + @GetMapping("/getTheme") + public ApiResult getTheme() { + String key = "theme:".concat(getTenantId().toString()); + return success("获取成功",redisUtil.get(key)); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/TenantController.java b/src/main/java/com/gxwebsoft/common/system/controller/TenantController.java new file mode 100644 index 0000000..bb067c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/TenantController.java @@ -0,0 +1,167 @@ +package com.gxwebsoft.common.system.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.RoleMenuService; +import com.gxwebsoft.common.system.service.TenantService; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; +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.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 租户控制器 + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +@Api(tags = "租户管理") +@RestController +@RequestMapping("/api/system/tenant") +public class TenantController extends BaseController { + @Resource + private TenantService tenantService; + @Resource + private MenuService menuService; + @Resource + private RoleMenuService roleMenuService; + + @PreAuthorize("hasAuthority('sys:tenant:list')") + @OperationLog + @ApiOperation("分页查询租户") + @GetMapping("/page") + public ApiResult> page(TenantParam param) { + // 使用关联查询 + return success(tenantService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:tenant:list')") + @OperationLog + @ApiOperation("查询全部租户") + @GetMapping() + public ApiResult> list(TenantParam param) { + // 使用关联查询 + return success(tenantService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:tenant:list')") + @OperationLog + @ApiOperation("根据id查询租户") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(tenantService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:tenant:save')") + @OperationLog + @ApiOperation("添加租户") + @PostMapping() + public ApiResult save(@RequestBody Tenant tenant) { + System.out.println("tenant = " + tenant); + if (tenantService.save(tenant)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:update')") + @OperationLog + @ApiOperation("修改租户") + @PutMapping() + public ApiResult update(@RequestBody Tenant tenant) { + if (tenantService.updateById(tenant)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:remove')") + @OperationLog + @ApiOperation("删除租户") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (tenantService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:save')") + @OperationLog + @ApiOperation("批量添加租户") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (tenantService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:update')") + @OperationLog + @ApiOperation("批量修改租户") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(tenantService, "tenant_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:tenant:remove')") + @OperationLog + @ApiOperation("批量删除租户") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (tenantService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("租户角色权限初始化") + @GetMapping("/role-menu/{id}") + public ApiResult> initialization(@PathVariable("id") Integer roleId) { + List menus = menuService.list(new LambdaQueryWrapper().orderByAsc(Menu::getSortNumber)); + List roleMenus = roleMenuService.list(new LambdaQueryWrapper() + .eq(RoleMenu::getRoleId, roleId)); + for (Menu menu : menus) { + menu.setChecked(roleMenus.stream().anyMatch((d) -> d.getMenuId().equals(menu.getMenuId()))); + } + List menuIds = menus.stream().map(Menu::getMenuId).collect(Collectors.toList()); + roleMenuService.remove(new LambdaUpdateWrapper().eq(RoleMenu::getRoleId, roleId)); + if (menuIds.size() > 0) { + List roleMenuList = new ArrayList<>(); + for (Integer menuId : menuIds) { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + roleMenuList.add(roleMenu); + } + if (!roleMenuService.saveBatch(roleMenuList)) { + throw new BusinessException("保存失败"); + } + } + return success(menus); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserController.java new file mode 100644 index 0000000..028f368 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserController.java @@ -0,0 +1,368 @@ +package com.gxwebsoft.common.system.controller; + +import cn.afterturn.easypoi.excel.ExcelImportUtil; +import cn.afterturn.easypoi.excel.entity.ImportParams; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.entity.Organization; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.UserImportParam; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.service.DictionaryDataService; +import com.gxwebsoft.common.system.service.OrganizationService; +import com.gxwebsoft.common.system.service.RoleService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.UserProfile; +import com.gxwebsoft.love.service.UserProfileService; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.service.UserOauthService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 用户控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:41 + */ +@Api(tags = "用户管理") +@RestController +@RequestMapping("/api/system/user") +public class UserController extends BaseController { + @Resource + private UserService userService; + @Resource + private RoleService roleService; + @Resource + private OrganizationService organizationService; + @Resource + private DictionaryDataService dictionaryDataService; + @Resource + private UserOauthService userOauthService; + @Resource + private UserProfileService userProfileService; + + @PreAuthorize("hasAuthority('sys:user:list')") + @OperationLog + @ApiOperation("分页查询用户") + @GetMapping("/page") + public ApiResult> page(UserParam param) { + return success(userService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:user:list')") + @OperationLog + @ApiOperation("查询全部用户") + @GetMapping() + public ApiResult> list(UserParam param) { + return success(userService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:user:list')") + @OperationLog + @ApiOperation("根据id查询用户") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:user:save')") + @OperationLog + @ApiOperation("添加用户") + @PostMapping() + public ApiResult add(@RequestBody User user) { + user.setStatus(0); + user.setPassword(userService.encodePassword(user.getPassword())); + if (userService.saveUser(user)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("修改用户") + @PutMapping() + public ApiResult update(@RequestBody User user) { + user.setStatus(null); + user.setUsername(null); + user.setPassword(null); + // 前端请求限制仅可以修改自己的用户信息 + if (getAppId() != null) { + user.setUserId(getLoginUserId()); + } + // 保存详细资料 + if(user.getUserProfile() != null){ + userProfileService.update(user.getUserProfile(),new LambdaUpdateWrapper().eq(UserProfile::getUserId,user.getUserId())); + } + if (userService.updateUser(user)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:remove')") + @OperationLog + @ApiOperation("删除用户") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userService.removeById(id)) { + QueryWrapper userOauthQueryWrapper = new QueryWrapper<>(); + userOauthService.remove(userOauthQueryWrapper.eq("user_id",id)); + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("批量修改用户") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userService, User::getUserId)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:remove')") + @OperationLog + @ApiOperation("批量删除用户") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", value = "id数组", required = true, dataType = "string", dataTypeClass = String.class) + }) + @Transactional(rollbackFor = {Exception.class}) + @DeleteMapping("/batch") + public ApiResult deleteBatch(@RequestBody List ids) { + ids.forEach(userId -> { + QueryWrapper userOauthQueryWrapper = new QueryWrapper<>(); + userOauthService.remove(userOauthQueryWrapper.eq("user_id",userId)); + }); + if (userService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("修改用户状态") + @PutMapping("/status") + public ApiResult updateStatus(@RequestBody User user) { + if (user.getUserId() == null || user.getStatus() == null || !Arrays.asList(0, 1).contains(user.getStatus())) { + return fail("参数不正确"); + } + User u = new User(); + u.setUserId(user.getUserId()); + u.setStatus(user.getStatus()); + if (userService.updateById(u)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("修改推荐状态") + @PutMapping("/recommend") + public ApiResult updateRecommend(@RequestBody User user) { + if (user.getUserId() == null || user.getRecommend() == null || !Arrays.asList(0, 1).contains(user.getRecommend())) { + return fail("参数不正确"); + } + User u = new User(); + u.setUserId(user.getUserId()); + u.setRecommend(user.getRecommend()); + // 同步修改资料表 + userProfileService.updateById(user.getUserProfile()); + if (userService.updateById(u)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("批量修改用户状态") + @PutMapping("/status/batch") + public ApiResult updateStatusBatch(@RequestBody BatchParam batchParam) { + if (!Arrays.asList(0, 1).contains(batchParam.getData())) { + return fail("状态值不正确"); + } + if (userService.update(new LambdaUpdateWrapper() + .in(User::getUserId, batchParam.getIds()) + .set(User::getStatus, batchParam.getData()))) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("重置密码") + @PutMapping("/password") + public ApiResult resetPassword(@RequestBody User user) { + if (user.getUserId() == null || StrUtil.isBlank(user.getPassword())) { + return fail("参数不正确"); + } + User u = new User(); + u.setUserId(user.getUserId()); + u.setPassword(userService.encodePassword(user.getPassword())); + if (userService.updateById(u)) { + return success("重置成功"); + } else { + return fail("重置失败"); + } + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("批量重置密码") + @PutMapping("/password/batch") + public ApiResult resetPasswordBatch(@RequestBody BatchParam batchParam) { + if (batchParam.getIds() == null || batchParam.getIds().size() == 0) { + return fail("请选择用户"); + } + if (batchParam.getData() == null) { + return fail("请输入密码"); + } + if (userService.update(new LambdaUpdateWrapper() + .in(User::getUserId, batchParam.getIds()) + .set(User::getPassword, userService.encodePassword(batchParam.getData())))) { + return success("重置成功"); + } else { + return fail("重置失败"); + } + } + + @PreAuthorize("hasAuthority('sys:user:list')") + @OperationLog + @ApiOperation("检查用户是否存在") + @GetMapping("/existence") + public ApiResult existence(ExistenceParam param) { + if (param.isExistence(userService, User::getUserId)) { + return success(param.getValue() + "已存在"); + } + return fail(param.getValue() + "不存在"); + } + + /** + * excel导入用户 + */ + @PreAuthorize("hasAuthority('sys:user:save')") + @OperationLog + @ApiOperation("导入用户") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/import") + public ApiResult> importBatch(MultipartFile file) { + ImportParams importParams = new ImportParams(); + try { + List list = ExcelImportUtil.importExcel(file.getInputStream(), + UserImportParam.class, importParams); + // 校验是否重复 + if (CommonUtil.checkRepeat(list, UserImportParam::getUsername)) { + return fail("账号存在重复", null); + } + if (CommonUtil.checkRepeat(list, UserImportParam::getPhone)) { + return fail("手机号存在重复", null); + } + // 校验是否存在 + List usernameExists = userService.list(new LambdaQueryWrapper().in(User::getUsername, + list.stream().map(UserImportParam::getUsername).collect(Collectors.toList()))); + if (usernameExists.size() > 0) { + return fail("账号已经存在", + usernameExists.stream().map(User::getUsername).collect(Collectors.toList())); + } + List phoneExists = userService.list(new LambdaQueryWrapper().in(User::getPhone, + list.stream().map(UserImportParam::getPhone).collect(Collectors.toList()))); + if (phoneExists.size() > 0) { + return fail("手机号已经存在", + phoneExists.stream().map(User::getPhone).collect(Collectors.toList())); + } + // 添加 + List users = new ArrayList<>(); + for (UserImportParam one : list) { + User u = new User(); + u.setStatus(0); + u.setUsername(one.getUsername()); + u.setPassword(userService.encodePassword(one.getPassword())); + u.setNickname(one.getNickname()); + u.setPhone(one.getPhone()); + Role role = roleService.getOne(new QueryWrapper() + .eq("role_name", one.getRoleName()), false); + if (role == null) { + return fail("角色不存在", Collections.singletonList(one.getRoleName())); + } else { + u.setRoles(Collections.singletonList(role)); + } + Organization organization = organizationService.getOne(new QueryWrapper() + .eq("organization_full_name", one.getOrganizationName()), false); + if (organization == null) { + return fail("机构不存在", Collections.singletonList(one.getOrganizationName())); + } else { + u.setOrganizationId(organization.getOrganizationId()); + } + DictionaryData sex = dictionaryDataService.getByDictCodeAndName("sex", one.getSexName()); + if (sex == null) { + return fail("性别不存在", Collections.singletonList(one.getSexName())); + } else { + u.setSex(sex.getDictDataCode()); + } + } + if (userService.saveBatch(users)) { + return success("导入成功", null); + } + } catch (Exception e) { + e.printStackTrace(); + } + return fail("导入失败", null); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @PostMapping("/getAvatarByMpWx") + @ApiOperation("更新微信头像") + public ApiResult getAvatarByMpWx(@RequestBody User user){ + user.setAvatar("https://oa.gxwebsoft.com/assets/logo.7ccfefb9.svg"); + if (userService.updateUser(user)) { + return success("更新成功"); + } + return fail("更新失败"); + } + + @PreAuthorize("hasAuthority('sys:user:list')") + @OperationLog + @ApiOperation("统计用户余额") + @GetMapping("/countUserBalance") + public ApiResult countUserBalance(User param) { + final LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.gt(User::getBalance, 0); + if (!param.getOrganizationId().equals(0)) { + wrapper.eq(User::getOrganizationId,param.getOrganizationId()); + } + final List list = userService.list(wrapper); + final BigDecimal totalBalance = list.stream().map(User::getBalance).reduce(BigDecimal.ZERO, BigDecimal::add); + // System.out.println("统计用户余额 = " + totalBalance); + return success("统计成功",totalBalance); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/UserFileController.java b/src/main/java/com/gxwebsoft/common/system/controller/UserFileController.java new file mode 100644 index 0000000..c809af0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/UserFileController.java @@ -0,0 +1,164 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.service.UserFileService; +import com.gxwebsoft.common.system.entity.UserFile; +import com.gxwebsoft.common.system.param.UserFileParam; +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.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 javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 用户文件控制器 + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +@Api(tags = "用户文件管理") +@RestController +@RequestMapping("/api/system/user-file") +public class UserFileController extends BaseController { + @Resource + private UserFileService userFileService; + + @OperationLog + @ApiOperation("分页查询用户文件") + @GetMapping("/page") + public ApiResult> page(UserFileParam param, HttpServletRequest request) { + param.setUserId(getLoginUserId()); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("is_directory desc"); + PageParam result = userFileService.page(page, page.getWrapper()); + List records = result.getRecords(); + String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/system/user-file") + "/file"; + for (UserFile record : records) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + "/" + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail/" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download/" + record.getPath()); + } + } + return success(records, result.getTotal()); + } + + @OperationLog + @ApiOperation("查询全部用户文件") + @GetMapping() + public ApiResult> list(UserFileParam param, HttpServletRequest request) { + param.setUserId(getLoginUserId()); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("is_directory desc"); + List records = userFileService.list(page.getOrderWrapper()); + String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/system/user-file") + "/file"; + for (UserFile record : records) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + "/" + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail/" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download/" + record.getPath()); + } + } + return success(records); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @OperationLog + @ApiOperation("添加用户文件") + @PostMapping() + public ApiResult save(@RequestBody UserFile userFile) { + userFile.setUserId(getLoginUserId()); + if (userFile.getParentId() == null) { + userFile.setParentId(0); + } + if (userFile.getIsDirectory() != null && userFile.getIsDirectory().equals(1)) { + if (userFileService.count(new LambdaQueryWrapper() + .eq(UserFile::getName, userFile.getName()) + .eq(UserFile::getParentId, userFile.getParentId()) + .eq(UserFile::getUserId, userFile.getUserId())) > 0) { + return fail("文件夹名称已存在"); + } + } + if (userFileService.save(userFile)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @OperationLog + @ApiOperation("修改用户文件") + @PutMapping() + public ApiResult update(@RequestBody UserFile userFile) { + Integer loginUserId = getLoginUserId(); + UserFile old = userFileService.getById(userFile.getId()); + UserFile entity = new UserFile(); + if (StrUtil.isNotBlank(userFile.getName())) { + entity.setName(userFile.getName()); + } + if (userFile.getParentId() != null) { + entity.setParentId(userFile.getParentId()); + } + if (!old.getUserId().equals(loginUserId) || + (entity.getName() == null && entity.getParentId() == null)) { + return fail("修改失败"); + } + if (old.getIsDirectory() != null && old.getIsDirectory().equals(1)) { + if (userFileService.count(new LambdaQueryWrapper() + .eq(UserFile::getName, entity.getName() == null ? old.getName() : entity.getName()) + .eq(UserFile::getParentId, entity.getParentId() == null ? old.getParentId() : entity.getParentId()) + .eq(UserFile::getUserId, loginUserId) + .ne(UserFile::getId, old.getId())) > 0) { + return fail("文件夹名称已存在"); + } + } + if (userFileService.update(entity, new LambdaUpdateWrapper() + .eq(UserFile::getId, userFile.getId()) + .eq(UserFile::getUserId, loginUserId))) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @OperationLog + @ApiOperation("删除用户文件") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userFileService.remove(new LambdaUpdateWrapper() + .eq(UserFile::getId, id) + .eq(UserFile::getUserId, getLoginUserId()))) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @OperationLog + @ApiOperation("批量删除用户文件") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userFileService.remove(new LambdaUpdateWrapper() + .in(UserFile::getId, ids) + .eq(UserFile::getUserId, getLoginUserId()))) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java new file mode 100644 index 0000000..43365e4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/WxLoginController.java @@ -0,0 +1,371 @@ +package com.gxwebsoft.common.system.controller; + +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.lang.Validator; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.result.LoginResult; +import com.gxwebsoft.common.system.service.*; +import com.gxwebsoft.love.entity.UserProfile; +import com.gxwebsoft.love.service.UserProfileService; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.entity.UserReferee; +import com.gxwebsoft.shop.service.MerchantService; +import com.gxwebsoft.shop.service.UserOauthService; +import com.gxwebsoft.shop.service.UserRefereeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import static com.gxwebsoft.common.core.constants.RedisConstants.ACCESS_TOKEN_KEY; + +@RestController +@RequestMapping("/api/wx-login") +@Api(tags = "微信小程序登录API") +public class WxLoginController extends BaseController { + private final StringRedisTemplate redisTemplate; + @Resource + private SettingService settingService; + @Resource + private UserService userService; + @Resource + private ConfigProperties configProperties; + @Resource + private UserRoleService userRoleService; + @Resource + private UserOauthService userOauthService; + @Resource + private LoginRecordService loginRecordService; + @Resource + private RoleService roleService; + @Resource + private ConfigProperties config; + @Resource + private UserRefereeService userRefereeService; + @Resource + private UserProfileService userProfileService; + @Resource + private MerchantService merchantService; + + public WxLoginController(StringRedisTemplate redisTemplate) { + this.redisTemplate = redisTemplate; + } + + @ApiOperation("获取微信openId") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/getOpenId") + public ApiResult getOpenId(@RequestBody UserParam userParam, HttpServletRequest request) { + // 1.获取openid + JSONObject result = getOpenIdByCode(userParam); + String openid = result.getString("openid"); + String unionid = result.getString("unionid"); + if (openid == null) { + return fail("获取openid失败", null); + } + // 2.通过openid查询用户是否已存在 + User user = userService.getByOauthId(userParam); + // 3.存在则签发token并返回登录成功,不存在则注册新用户 + if (user == null) { + user = addUser(userParam); + // 添加第三方用户信息 + UserOauth uo = new UserOauth(); + uo.setUserId(user.getUserId()); + uo.setTenantId(user.getTenantId()); + uo.setOauthType("MP-WEIXIN"); + uo.setOauthId(openid); + uo.setUnionid(unionid); + userOauthService.save(uo); + } + // 4.签发token + loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_LOGIN, null, user.getTenantId(), request); + String access_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } + + @ApiOperation("微信授权手机号码并登录") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/loginByMpWxPhone") + public ApiResult loginByMpWxPhone(@RequestBody UserParam userParam, HttpServletRequest request) { + // 获取手机号码 + String phone = getPhoneByCode(userParam); + if(phone == null){ + String key = ACCESS_TOKEN_KEY.concat(":").concat(getTenantId().toString()); + redisTemplate.delete(key); + throw new BusinessException("授权失败,请重试"); + } + // 查询是否存在 + User user = userService.getByPhone(phone); + // 不存在则注册 + if (user == null) { + userParam.setPhone(phone); + user = addUser(userParam); + user.setRecommend(1); + } + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_REGISTER, null, user.getTenantId(), request); + return success("登录成功", new LoginResult(access_token, user)); + } + + @ApiOperation("微信授权手机号码并更新") + @Transactional(rollbackFor = {Exception.class}) + @PostMapping("/updatePhoneByMpWx") + public ApiResult updatePhoneByMpWx(@RequestBody UserParam userParam) { + // 获取微信授权手机号 + String phone = getPhoneByCode(userParam); + // 查询当前用户 + User user = userService.getById(userParam.getUserId()); + if (user != null && phone != null) { + user.setPhone(phone); + userService.updateUser(user); + return success("更新成功",phone); + } + return fail("更新失败"); + } + + /** + * 新用户注册 + */ + private User addUser(UserParam userParam) { + User addUser = new User(); + // 注册用户 + addUser.setStatus(0); + addUser.setUsername(createUsername("wx_")); + addUser.setNickname("微信用户"); + addUser.setGradeId(2); + if(userParam.getPhone() != null){ + addUser.setPhone(userParam.getPhone()); + } + addUser.setPassword(userService.encodePassword(CommonUtil.randomUUID16())); + addUser.setTenantId(getTenantId()); + addUser.setRecommend(1); + Role role = roleService.getOne(new QueryWrapper().eq("role_code", "user"), false); + addUser.setRoleId(role.getRoleId()); + if (userService.saveUser(addUser)) { + // 添加用户角色 + final UserRole userRole = new UserRole(); + userRole.setUserId(addUser.getUserId()); + userRole.setTenantId(addUser.getTenantId()); + userRole.setRoleId(addUser.getRoleId()); + userRoleService.save(userRole); + // 用户详细资料表 + final UserProfile profile = new UserProfile(); + profile.setUserId(addUser.getUserId()); + profile.setRecommend(1); + profile.setWhenMarriedMate("想要二年内结婚"); + userProfileService.save(profile); + // 添加门店 + final Merchant merchant = new Merchant(); + merchant.setUserId(addUser.getUserId()); + merchant.setMerchantOwner(addUser.getUserId()); + merchant.setMerchantCode(addUser.getUserId()+""); + merchant.setMerchantName(addUser.getNickname()); + merchant.setLogo(addUser.getAvatar()); + merchant.setProvince(addUser.getProvince()); + merchant.setCity(addUser.getCity()); + merchant.setRegion(addUser.getRegion()); + merchant.setMerchantPhone(addUser.getPhone()); + merchant.setMerchantHours("8:30 - 22:30"); + merchant.setSortNumber(100); + merchant.setStatus(0); + merchant.setFirstRatio(new BigDecimal("0.1")); + merchant.setSecondRatio(new BigDecimal("0.1")); + merchant.setOnlineRatio(new BigDecimal("0.1")); + merchant.setOfflineRatio(new BigDecimal("0")); + merchant.setShopRatio(new BigDecimal("0")); + merchant.setTenantId(addUser.getTenantId()); + merchantService.save(merchant); + } + // 绑定推荐关系 + if(userParam.getRefereeId() != null && userParam.getRefereeId() > 0){ + final Integer refereeId = userParam.getRefereeId(); + final UserReferee userReferee = new UserReferee(); + userReferee.setUserId(addUser.getUserId()); + userReferee.setDealerId(refereeId); + userReferee.setLevel(1); + userRefereeService.save(userReferee); + } + return addUser; + } + + // 获取openid + private JSONObject getOpenIdByCode(UserParam userParam) { + // 获取微信小程序配置信息 + JSONObject setting = settingService.getBySettingKey("mp-weixin"); + // 获取openId + String apiUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=" + setting.getString("appId") + "&secret=" + setting.getString("appSecret") + "&js_code=" + userParam.getCode() + "&grant_type=authorization_code"; + // 执行get请求 + String result = HttpUtil.get(apiUrl); + // 解析access_token + return JSON.parseObject(result); + } + + /** + * 获取微信手机号码 + * + * @param userParam 需要传微信凭证code + */ + private String getPhoneByCode(UserParam userParam) { + // 获取手机号码 + String apiUrl = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + getAccessToken(); + HashMap paramMap = new HashMap<>(); + if (StrUtil.isBlank(userParam.getCode())) { + throw new BusinessException("code不能为空"); + } + paramMap.put("code", userParam.getCode()); + // 执行post请求 + String post = HttpUtil.post(apiUrl, JSON.toJSONString(paramMap)); + JSONObject json = JSON.parseObject(post); + if (json.get("errcode").equals(0)) { + JSONObject phoneInfo = JSON.parseObject(json.getString("phone_info")); + // 微信用户的手机号码 + final String phoneNumber = phoneInfo.getString("phoneNumber"); + // 验证手机号码 + if(!Validator.isMobile(phoneNumber)){ + String key = ACCESS_TOKEN_KEY.concat(":").concat(getTenantId().toString()); + redisTemplate.delete(key); + throw new BusinessException("手机号码格式不正确"); + } + return phoneNumber; + } + return null; + } + + /** + * 生成随机账号 + * + * @return username + */ + private String createUsername(String type) { + return type.concat(RandomUtil.randomString(12)); + } + + /** + * 获取接口调用凭据AccessToken + * https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getAccessToken.html + */ + private String getAccessToken() { + String key = ACCESS_TOKEN_KEY.concat(":").concat(getTenantId().toString()); + // 获取微信小程序配置信息 + JSONObject setting = settingService.getBySettingKey("mp-weixin"); + // 从缓存获取access_token + String value = redisTemplate.opsForValue().get(key); + if (value != null) { + // 解析access_token + JSONObject response = JSON.parseObject(value); + return response.getString("access_token"); + } + // 微信获取凭证接口 + String apiUrl = "https://api.weixin.qq.com/cgi-bin/token"; + // 组装url参数 + String url = apiUrl.concat("?grant_type=client_credential").concat("&appid=").concat(setting.getString("appId")).concat("&secret=").concat(setting.getString("appSecret")); + // 执行get请求 + String result = HttpUtil.get(url); + // 解析access_token + JSONObject response = JSON.parseObject(result); + if (response.getString("access_token") != null) { + // 存入缓存 + redisTemplate.opsForValue().set(key, result,7000L, TimeUnit.SECONDS); + return response.getString("access_token"); + } + return null; + } + + @ApiOperation("获取微信openId") + @PostMapping("/getWxOpenId") + public ApiResult getWxOpenId(@RequestBody UserParam userParam) { + final User loginUser = getLoginUser(); + if(loginUser.getUsername().equals("www")){ + return fail("游客"); + } + String apiUrl = "https://api.weixin.qq.com/sns/jscode2session"; + final HashMap map = new HashMap<>(); + final JSONObject setting = settingService.getBySettingKey("mp-weixin"); + final String appId = setting.getString("appId"); + final String appSecret = setting.getString("appSecret"); + map.put("appid",appId); + map.put("secret",appSecret); + map.put("js_code",userParam.getCode()); + map.put("grant_type","authorization_code"); + final String response = HttpUtil.get(apiUrl,map); + System.out.println("response = " + response); + final JSONObject jsonObject = JSONObject.parseObject(response); + + // 保存openid + final List list = userOauthService.list(new LambdaQueryWrapper().eq(UserOauth::getUserId, loginUser.getUserId()).eq(UserOauth::getOauthType,"MP-WEIXIN")); + if (CollectionUtils.isEmpty(list)) { + final UserOauth userOauth = new UserOauth(); + userOauth.setUserId(getLoginUserId()); + userOauth.setOauthId(jsonObject.getString("openid")); + userOauth.setUnionid(jsonObject.getString("unionid")); + userOauth.setOauthType("MP-WEIXIN"); + userOauthService.save(userOauth); + return success("保存openid成功",jsonObject); + } + return fail("更新失败",null); + } + + @ApiOperation("获取微信小程序码") + @GetMapping("/getQRCode") + public ApiResult getQRCode() { + String apiUrl = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + getAccessToken(); + final HashMap map = new HashMap<>(); + map.put("path","pages/flash/index?user_id="+getLoginUserId()); +// map.put("env_version","trial"); + // 获取图片 Buffer + byte[] qrCode = HttpRequest.post(apiUrl) + .body(JSON.toJSONString(map)) + .execute().bodyBytes(); + + // 保存的文件名称 + final String fileName = CommonUtil.randomUUID8().concat(".png"); + // 保存路径 + String filePath = getUploadDir().concat("qrcode/") + fileName; + File file = FileUtil.writeBytes(qrCode, filePath); + if(file != null){ + return success(config.getFileServer().concat("/qrcode/").concat(fileName)); + } + return fail("获取失败",null); + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } + + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/AccessKey.java b/src/main/java/com/gxwebsoft/common/system/entity/AccessKey.java new file mode 100644 index 0000000..441873e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/AccessKey.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 访问凭证管理 + * + * @author 科技小王子 + * @since 2023-05-16 19:19:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "AccessKey对象", description = "访问凭证管理") +@TableName("sys_access_key") +public class AccessKey implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典项id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "字典id") + private String accessKey; + + @ApiModelProperty(value = "字典项标识") + private String accessSecret; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Cache.java b/src/main/java/com/gxwebsoft/common/system/entity/Cache.java new file mode 100644 index 0000000..f0eabcc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Cache.java @@ -0,0 +1,34 @@ +package com.gxwebsoft.common.system.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * 缓存管理 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Setting对象", description = "缓存管理") +public class Cache implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "key") + private String key; + + @ApiModelProperty(value = "设置内容(json格式)") + private String content; + + @ApiModelProperty(value = "过期时间(秒)") + private Long expireTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Company.java b/src/main/java/com/gxwebsoft/common/system/entity/Company.java new file mode 100644 index 0000000..6cd888e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Company.java @@ -0,0 +1,158 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +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 2023-05-27 14:57:34 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Company对象", description = "企业信息") +@TableName("sys_company") +public class Company implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "企业id") + @TableId(value = "company_id", type = IdType.AUTO) + private Integer companyId; + + @ApiModelProperty(value = "企业简称") + private String shortName; + + @ApiModelProperty(value = "企业全称") + private String companyName; + + @ApiModelProperty(value = "企业标识") + private String companyCode; + + @ApiModelProperty(value = "企业类型") + private String companyType; + + @ApiModelProperty(value = "企业类型 多选") + private String companyTypeMultiple; + + @ApiModelProperty(value = "应用标识") + private String companyLogo; + + @ApiModelProperty(value = "企业域名") + private String domain; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "企业法人") + private String businessEntity; + + @ApiModelProperty(value = "发票抬头") + @TableField("Invoice_header") + private String invoiceHeader; + + @ApiModelProperty(value = "服务开始时间") + private Date startTime; + + @ApiModelProperty(value = "服务到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "应用版本 10体验版 20授权版 30旗舰版") + private Integer version; + + @ApiModelProperty(value = "企业成员(当前)") + private Integer users; + + @ApiModelProperty(value = "成员数量(上限)") + private Integer members; + + @ApiModelProperty(value = "存储空间") + private Long storage; + + @ApiModelProperty(value = "存储空间(上限)") + private Long storageMax; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "部门数量") + private Integer departments; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + private Integer authentication; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否含税") + private Boolean isTax; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "是否默认企业主体") + private Boolean authoritative; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "租户名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "租户编号") + @TableField(exist = false) + private String tenantCode; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Dict.java b/src/main/java/com/gxwebsoft/common/system/entity/Dict.java new file mode 100644 index 0000000..48b56bd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Dict.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; + +/** + * 字典 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Data +@ApiModel(description = "字典(业务类)") +@TableName("sys_dict") +public class Dict implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典id") + @TableId(type = IdType.AUTO) + private Integer dictId; + + @ApiModelProperty(value = "字典标识") + private String dictCode; + + @ApiModelProperty(value = "字典名称") + private String dictName; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "字典项列表") + @TableField(exist = false) + private Set> items; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/DictData.java b/src/main/java/com/gxwebsoft/common/system/entity/DictData.java new file mode 100644 index 0000000..8daee79 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/DictData.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 字典数据 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Data +@ApiModel(description = "字典数据(业务类)") +@TableName("sys_dict_data") +public class DictData implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典数据id") + @TableId(type = IdType.AUTO) + private Integer dictDataId; + + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @ApiModelProperty(value = "字典数据标识") + private String dictDataCode; + + @ApiModelProperty(value = "字典数据名称") + private String dictDataName; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "字典代码") + @TableField(exist = false) + private String dictCode; + + @ApiModelProperty(value = "字典名称") + @TableField(exist = false) + private String dictName; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Dictionary.java b/src/main/java/com/gxwebsoft/common/system/entity/Dictionary.java new file mode 100644 index 0000000..2baec46 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Dictionary.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 字典 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Data +@ApiModel(description = "字典(系统类)") +@TableName("sys_dictionary") +public class Dictionary implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典id") + @TableId(type = IdType.AUTO) + private Integer dictId; + + @ApiModelProperty(value = "字典标识") + private String dictCode; + + @ApiModelProperty(value = "字典名称") + private String dictName; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/DictionaryData.java b/src/main/java/com/gxwebsoft/common/system/entity/DictionaryData.java new file mode 100644 index 0000000..aec639c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/DictionaryData.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 字典数据 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Data +@ApiModel(description = "字典数据(系统类)") +@TableName("sys_dictionary_data") +public class DictionaryData implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典数据id") + @TableId(type = IdType.AUTO) + private Integer dictDataId; + + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @ApiModelProperty(value = "字典数据标识") + private String dictDataCode; + + @ApiModelProperty(value = "字典数据名称") + private String dictDataName; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "字典代码") + @TableField(exist = false) + private String dictCode; + + @ApiModelProperty(value = "字典名称") + @TableField(exist = false) + private String dictName; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/EmailRecord.java b/src/main/java/com/gxwebsoft/common/system/entity/EmailRecord.java new file mode 100644 index 0000000..4deb683 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/EmailRecord.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 邮件发送记录 + * + * @author WebSoft + * @since 2021-08-29 12:36:35 + */ +@Data +@ApiModel(description = "邮件发送记录") +@TableName("sys_email_record") +public class EmailRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("邮件标题") + private String title; + + @ApiModelProperty("邮件内容") + private String content; + + @ApiModelProperty("收件邮箱") + private String receiver; + + @ApiModelProperty("发件邮箱") + private String sender; + + @ApiModelProperty("创建人") + private Integer createUserId; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/FileRecord.java b/src/main/java/com/gxwebsoft/common/system/entity/FileRecord.java new file mode 100644 index 0000000..683010f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/FileRecord.java @@ -0,0 +1,88 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 文件上传记录 + * + * @author WebSoft + * @since 2021-08-29 12:36:32 + */ +@Data +@ApiModel(description = "文件上传记录") +@TableName("sys_file_record") +public class FileRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("分组ID") + private Integer groupId; + + @ApiModelProperty("文件名称") + private String name; + + @ApiModelProperty("文件存储路径") + private String path; + + @ApiModelProperty("文件大小") + private Long length; + + @ApiModelProperty("文件类型") + private String contentType; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("创建人") + private Integer createUserId; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("商户编号") + private String merchantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("文件访问地址") + @TableField(exist = false) + private String url; + + @ApiModelProperty("文件缩略图访问地址") + @TableField(exist = false) + private String thumbnail; + + @ApiModelProperty("文件下载地址") + @TableField(exist = false) + private String downloadUrl; + + @ApiModelProperty("创建人账号") + @TableField(exist = false) + private String createUsername; + + @ApiModelProperty("创建人名称") + @TableField(exist = false) + private String createNickname; + + @ApiModelProperty("用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/KVEntity.java b/src/main/java/com/gxwebsoft/common/system/entity/KVEntity.java new file mode 100644 index 0000000..b310b8f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/KVEntity.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 租户 + * + * @author WebSoft + * @since 2021-08-28 11:31:06 + */ +@Data +@ApiModel(description = "实体") +public class KVEntity implements Serializable { + private static final long serialVersionUID = 1L; + protected K k; + protected V v; + public KVEntity() { + super(); + } + + public KVEntity(K k, V v) { + super(); + this.k = k; + this.v = v; + } + + public static KVEntity build(K k, V v) { + return new KVEntity<>(k, v); + } + + public K getK() { + return k; + } + + public void setK(K k) { + this.k = k; + } + + public V getV() { + return v; + } + + public void setV(V v) { + this.v = v; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/LoginRecord.java b/src/main/java/com/gxwebsoft/common/system/entity/LoginRecord.java new file mode 100644 index 0000000..9e205b6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/LoginRecord.java @@ -0,0 +1,73 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 登录日志 + * + * @author WebSoft + * @since 2018-12-24 16:10:41 + */ +@Data +@ApiModel(description = "登录日志") +@TableName("sys_login_record") +public class LoginRecord implements Serializable { + private static final long serialVersionUID = 1L; + public static final int TYPE_LOGIN = 0; // 登录成功 + public static final int TYPE_ERROR = 1; // 登录失败 + public static final int TYPE_LOGOUT = 2; // 退出登录 + public static final int TYPE_REFRESH = 3; // 续签token + public static final int TYPE_REGISTER = 4; // 注册成功 + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("用户账号") + private String username; + + @ApiModelProperty("操作系统") + private String os; + + @ApiModelProperty("设备名称") + private String device; + + @ApiModelProperty("浏览器类型") + private String browser; + + @ApiModelProperty("ip地址") + private String ip; + + @ApiModelProperty("操作类型, 0登录成功, 1登录失败, 2退出登录, 3续签token") + private Integer loginType; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("操作时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("用户id") + @TableField(exist = false) + private Integer userId; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Menu.java b/src/main/java/com/gxwebsoft/common/system/entity/Menu.java new file mode 100644 index 0000000..9274ab1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Menu.java @@ -0,0 +1,84 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.security.core.GrantedAuthority; + +import java.util.Date; +import java.util.List; + +/** + * 菜单 + * + * @author WebSoft + * @since 2018-12-24 16:10:17 + */ +@Data +@ApiModel(description = "菜单") +@TableName("sys_menu") +public class Menu implements GrantedAuthority { + private static final long serialVersionUID = 1L; + public static final int TYPE_MENU = 0; // 菜单类型 + public static final int TYPE_BTN = 1; // 按钮类型 + + @ApiModelProperty("菜单id") + @TableId(type = IdType.AUTO) + private Integer menuId; + + @ApiModelProperty("上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty("菜单名称") + private String title; + + @ApiModelProperty("菜单路由地址") + private String path; + + @ApiModelProperty("菜单组件地址") + private String component; + + @ApiModelProperty("菜单类型, 0菜单, 1按钮") + private Integer menuType; + + @ApiModelProperty("排序号") + private Integer sortNumber; + + @ApiModelProperty("权限标识") + private String authority; + + @ApiModelProperty("菜单图标") + private String icon; + + @ApiModelProperty("是否隐藏, 0否, 1是(仅注册路由不显示左侧菜单)") + private Integer hide; + + @ApiModelProperty("路由元信息") + private String meta; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("关联应用") + private Integer appId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty("角色权限树选中状态") + @TableField(exist = false) + private Boolean checked; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/OperationRecord.java b/src/main/java/com/gxwebsoft/common/system/entity/OperationRecord.java new file mode 100644 index 0000000..cdda95c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/OperationRecord.java @@ -0,0 +1,95 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 操作日志 + * + * @author WebSoft + * @since 2018-12-24 16:10:33 + */ +@Data +@ApiModel(description = "操作日志") +@TableName("sys_operation_record") +public class OperationRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("用户id") + private Integer userId; + + @ApiModelProperty("操作模块") + private String module; + + @ApiModelProperty("操作功能") + private String description; + + @ApiModelProperty("请求地址") + private String url; + + @ApiModelProperty("请求方式") + private String requestMethod; + + @ApiModelProperty("调用方法") + private String method; + + @ApiModelProperty("请求参数") + private String params; + + @ApiModelProperty("返回结果") + private String result; + + @ApiModelProperty("异常信息") + private String error; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("消耗时间, 单位毫秒") + private Long spendTime; + + @ApiModelProperty("操作系统") + private String os; + + @ApiModelProperty("设备名称") + private String device; + + @ApiModelProperty("浏览器类型") + private String browser; + + @ApiModelProperty("ip地址") + private String ip; + + @ApiModelProperty("状态, 0成功, 1异常") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("操作时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty("用户账号") + @TableField(exist = false) + private String username; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Organization.java b/src/main/java/com/gxwebsoft/common/system/entity/Organization.java new file mode 100644 index 0000000..7881795 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Organization.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.util.Date; +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 组织机构 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Data +@ApiModel(description = "组织机构") +@TableName("sys_organization") +public class Organization implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "机构id") + @TableId(type = IdType.AUTO) + private Integer organizationId; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "机构名称") + private String organizationName; + + @ApiModelProperty(value = "机构全称") + private String organizationFullName; + + @ApiModelProperty(value = "机构代码") + private String organizationCode; + + @ApiModelProperty(value = "机构类型, 字典标识") + private String organizationType; + + @ApiModelProperty(value = "负责人id") + private Integer leaderId; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @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 String organizationTypeName; + + @ApiModelProperty(value = "负责人姓名") + @TableField(exist = false) + private String leaderNickname; + + @ApiModelProperty(value = "负责人账号") + @TableField(exist = false) + private String leaderUsername; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Plug.java b/src/main/java/com/gxwebsoft/common/system/entity/Plug.java new file mode 100644 index 0000000..b2dcd7c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Plug.java @@ -0,0 +1,141 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 插件扩展 + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Plug对象", description = "插件扩展") +@TableName("sys_plug") +public class Plug implements Serializable { + private static final long serialVersionUID = 1L; + public static final int TYPE_MENU = 0; // 菜单类型 + public static final int TYPE_BTN = 1; // 按钮类型 + + @ApiModelProperty(value = "插件id") + @TableId(value = "plug_id", type = IdType.AUTO) + private Integer plugId; + + @ApiModelProperty(value = "菜单ID") + private Integer menuId; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + private Integer menuType; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String icon; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "插件描述") + private String comments; + + @ApiModelProperty(value = "插件详情") + private String content; + + @ApiModelProperty("评分") + private BigDecimal score; + + @ApiModelProperty("插件价格") + private BigDecimal price; + + @ApiModelProperty("浏览次数") + private Integer clicks; + + @ApiModelProperty("安装次数") + private Integer installs; + + @ApiModelProperty(value = "关联应用ID") + private Integer appId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "状态") + 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; + + @ApiModelProperty("子菜单") + @TableField(exist = false) + private List children; + + @ApiModelProperty("角色权限树选中状态") + @TableField(exist = false) + private Boolean checked; + + @ApiModelProperty("租户名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty("企业名称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty("企业简称") + @TableField(exist = false) + private String shortName; + + @ApiModelProperty("企业域名") + @TableField(exist = false) + private String domain; +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Role.java b/src/main/java/com/gxwebsoft/common/system/entity/Role.java new file mode 100644 index 0000000..7fd8598 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Role.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 角色 + * + * @author WebSoft + * @since 2018-12-24 16:10:01 + */ +@Data +@ApiModel(description = "角色") +@TableName("sys_role") +public class Role implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("角色id") + @TableId(type = IdType.AUTO) + private Integer roleId; + + @ApiModelProperty("角色标识") + private String roleCode; + + @ApiModelProperty("角色名称") + private String roleName; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private Integer userId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/RoleMenu.java b/src/main/java/com/gxwebsoft/common/system/entity/RoleMenu.java new file mode 100644 index 0000000..2d4dc3c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/RoleMenu.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 角色菜单 + * + * @author WebSoft + * @since 2018-12-24 16:10:54 + */ +@Data +@ApiModel(description = "角色权限") +@TableName("sys_role_menu") +public class RoleMenu implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("角色id") + private Integer roleId; + + @ApiModelProperty("菜单id") + private Integer menuId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Setting.java b/src/main/java/com/gxwebsoft/common/system/entity/Setting.java new file mode 100644 index 0000000..cba1b08 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Setting.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 系统设置 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Setting对象", description = "系统设置") +@TableName("sys_setting") +public class Setting implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "setting_id", type = IdType.AUTO) + private Integer settingId; + + @ApiModelProperty(value = "设置项标示") + private String settingKey; + + @ApiModelProperty(value = "设置内容(json格式)") + private String content; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @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 String tenantName; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Tenant.java b/src/main/java/com/gxwebsoft/common/system/entity/Tenant.java new file mode 100644 index 0000000..3e2e8c5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Tenant.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.common.system.entity; + +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 io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 租户 + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Tenant对象", description = "租户") +@TableName("sys_tenant") +public class Tenant implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "租户id") + @TableId(value = "tenant_id", type = IdType.AUTO) + private Integer tenantId; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "logo") + private String logo; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "修改时间") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/User.java b/src/main/java/com/gxwebsoft/common/system/entity/User.java new file mode 100644 index 0000000..2c82fec --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/User.java @@ -0,0 +1,317 @@ +package com.gxwebsoft.common.system.entity; + +import cn.hutool.core.util.DesensitizedUtil; +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.gxwebsoft.love.entity.UserPlanEquity; +import com.gxwebsoft.love.entity.UserProfile; +import com.gxwebsoft.oa.entity.App; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.security.core.userdetails.UserDetails; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 用户 + * + * @author WebSoft + * @since 2018-12-24 16:10:13 + */ +@Data +@ApiModel(description = "用户") +@TableName("sys_user") +public class User implements UserDetails { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户id") + @TableId(type = IdType.AUTO) + private Integer userId; + + @ApiModelProperty("用户类型, 0普通用户 6开发者 10企业用户") + private Integer type; + + @ApiModelProperty("用户编码") + private String userCode; + + @ApiModelProperty("账号") + private String username; + + @ApiModelProperty("密码") + private String password; + + @ApiModelProperty("昵称") + private String nickname; + + @ApiModelProperty("头像") + private String avatar; + + @ApiModelProperty("头像") + private String bgImage; + + @ApiModelProperty("性别, 字典标识") + private String sex; + + @ApiModelProperty("手机号") + private String phone; + + @ApiModelProperty("邮箱") + private String email; + + @ApiModelProperty("职务") + private String position; + + @ApiModelProperty("邮箱是否验证, 0否, 1是") + private Integer emailVerified; + + @ApiModelProperty("别名") + private String alias; + + @ApiModelProperty("真实姓名") + private String realName; + + @ApiModelProperty("身份证号") + private String idCard; + + @ApiModelProperty("出生日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date birthday; + + @ApiModelProperty(value = "年龄") + private Integer age; + + @ApiModelProperty("所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty("街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty("用户可用余额") + private BigDecimal balance; + + @ApiModelProperty("用户可用积分") + private Integer points; + + @ApiModelProperty("用户总支付的金额") + private String payMoney; + + @ApiModelProperty("实际消费的金额(不含退款)") + private String expendMoney; + + @ApiModelProperty("会员等级ID") + private Integer gradeId; + + @ApiModelProperty("个人简介") + private String introduction; + + @ApiModelProperty("机构ID") + private Integer organizationId; + + @ApiModelProperty("客户ID") + private Integer customerId; + + @ApiModelProperty("企业ID") + private Integer companyId; + + @ApiModelProperty("注册来源客户端") + private String platform; + + @ApiModelProperty("兴趣爱好") + private String interest; + + @ApiModelProperty("身高") + private String height; + + @ApiModelProperty("体重") + private String weight; + + @ApiModelProperty("学历") + private String education; + + @ApiModelProperty("月薪") + private String monthlyPay; + + @ApiModelProperty("是否下线会员") + private Integer offline; + + @ApiModelProperty("关注数") + private Integer followers; + + @ApiModelProperty("粉丝数") + private Integer fans; + + @ApiModelProperty("获赞数") + private Integer likes; + + @ApiModelProperty("评论数") + private Integer commentNumbers; + + @ApiModelProperty("是否推荐") + private Integer recommend; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty("是否删除, 0否, 1是") +// @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "租户名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "最后结算时间") + private Date settlementTime; + + @ApiModelProperty("注册时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("公司名称") + private String companyName; + + @ApiModelProperty("是否已实名认证") + private Integer certification; + + @ApiModelProperty("机构名称") + @TableField(exist = false) + private String organizationName; + + @ApiModelProperty("性别名称") + @TableField(exist = false) + private String sexName; + + @ApiModelProperty("会员等级") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty("默认注册的角色ID") + @TableField(exist = false) + private Integer roleId; + + @ApiModelProperty("角色列表") + @TableField(exist = false) + private List roles; + + @ApiModelProperty("详细资料") + @TableField(exist = false) + private UserProfile userProfile; + + @ApiModelProperty("权限列表") + @TableField(exist = false) + private List authorities; + + @ApiModelProperty("微信凭证") + @TableField(exist = false) + private String code; + + @ApiModelProperty("推荐人ID") + @TableField(exist = false) + private Integer dealerId; + + @ApiModelProperty("微信openid") + @TableField(exist = false) + private String openid; + + @ApiModelProperty("微信unionid") + @TableField(exist = false) + private String unionid; + + @ApiModelProperty("所属商户的编号") + @TableField(exist = false) + private String merchantCode; + + @ApiModelProperty("所属商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty("ico文件") + @TableField(exist = false) + private String logo; + + @ApiModelProperty("创建的应用数量") + @TableField(exist = false) + private Double apps; + + @ApiModelProperty("租户设置信息") + @TableField(exist = false) + private String setting; + + @ApiModelProperty("手机号(脱敏)") + @TableField(exist = false) + private String mobile; + + @ApiModelProperty("应用信息") + @TableField(exist = false) + private App appInfo; + + @ApiModelProperty("企业信息") + @TableField(exist = false) + private Company companyInfo; + + @ApiModelProperty("权益列表") + @TableField(exist = false) + private List userPlanEquityList; + + @ApiModelProperty("系统配置信息") + @TableField(exist = false) + private Object system; + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return this.status != null && this.status == 0; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } +// +// public String getRealName(){ +// return DesensitizedUtil.chineseName(this.realName); +// } +// +// public String getIdCard(){ +// return DesensitizedUtil.idCardNum(this.idCard,1,2); +// } + public String getMobile(){ + return DesensitizedUtil.mobilePhone(this.phone); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/UserFile.java b/src/main/java/com/gxwebsoft/common/system/entity/UserFile.java new file mode 100644 index 0000000..b9d277f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/UserFile.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.*; + +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 WebSoft + * @since 2022-07-21 14:34:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserFile对象", description = "用户文件") +@TableName("sys_user_file") +public class UserFile implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户id") + private Integer userId; + + @ApiModelProperty(value = "文件名称") + private String name; + + @ApiModelProperty(value = "是否是文件夹, 0否, 1是") + private Integer isDirectory; + + @ApiModelProperty(value = "上级id") + private Integer parentId; + + @ApiModelProperty(value = "文件路径") + private String path; + + @ApiModelProperty(value = "文件大小") + private Integer length; + + @ApiModelProperty("文件类型") + private String contentType; + + @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("文件访问地址") + @TableField(exist = false) + private String url; + + @ApiModelProperty("文件缩略图访问地址") + @TableField(exist = false) + private String thumbnail; + + @ApiModelProperty("文件下载地址") + @TableField(exist = false) + private String downloadUrl; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java b/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java new file mode 100644 index 0000000..ca12165 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/UserRole.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户角色 + * + * @author WebSoft + * @since 2018-12-24 16:10:23 + */ +@Data +@ApiModel(description = "用户角色") +@TableName("sys_user_role") +public class UserRole implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("用户id") + private Integer userId; + + @ApiModelProperty("角色id") + private Integer roleId; + + @ApiModelProperty("创建时间") + private Date createTime; + + @ApiModelProperty("修改时间") + private Date updateTime; + + @ApiModelProperty("角色名称") + @TableField(exist = false) + private String roleName; + + @ApiModelProperty("租户ID") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/AccessKeyMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/AccessKeyMapper.java new file mode 100644 index 0000000..658f773 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/AccessKeyMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.AccessKey; +import com.gxwebsoft.common.system.param.AccessKeyParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 访问凭证管理Mapper + * + * @author 科技小王子 + * @since 2023-05-16 19:19:55 + */ +public interface AccessKeyMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") AccessKeyParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") AccessKeyParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/CompanyMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyMapper.java new file mode 100644 index 0000000..2c0fbb8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/CompanyMapper.java @@ -0,0 +1,38 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Company; +import com.gxwebsoft.common.system.param.CompanyParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 企业信息Mapper + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +public interface CompanyMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CompanyParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CompanyParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DictDataMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DictDataMapper.java new file mode 100644 index 0000000..f36039f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DictDataMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典数据Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface DictDataMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DictDataParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DictDataParam param); + + /** + * 根据dictCode和dictDataName查询 + * + * @param dictCode 字典标识 + * @param dictDataName 字典项名称 + * @return List + */ + List getByDictCodeAndName(@Param("dictCode") String dictCode, + @Param("dictDataName") String dictDataName); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DictMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DictMapper.java new file mode 100644 index 0000000..ce19779 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DictMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Dict; + +/** + * 字典Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +public interface DictMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryDataMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryDataMapper.java new file mode 100644 index 0000000..519c2ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryDataMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.param.DictionaryDataParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 字典数据Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface DictionaryDataMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") DictionaryDataParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") DictionaryDataParam param); + + /** + * 根据dictCode和dictDataName查询 + * + * @param dictCode 字典标识 + * @param dictDataName 字典项名称 + * @return List + */ + List getByDictCodeAndName(@Param("dictCode") String dictCode, + @Param("dictDataName") String dictDataName); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryMapper.java new file mode 100644 index 0000000..7c2cbac --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/DictionaryMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Dictionary; + +/** + * 字典Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +public interface DictionaryMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/EmailRecordMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/EmailRecordMapper.java new file mode 100644 index 0000000..02611c9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/EmailRecordMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.EmailRecord; + +/** + * 邮件记录Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface EmailRecordMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/FileRecordMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/FileRecordMapper.java new file mode 100644 index 0000000..fe9f0b8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/FileRecordMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.param.FileRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文件上传记录Mapper + * + * @author WebSoft + * @since 2021-08-30 11:18:04 + */ +public interface FileRecordMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") FileRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") FileRecordParam param); + + /** + * 根据path查询 + * + * @param path 文件路径 + * @return FileRecord + */ + @InterceptorIgnore(tenantLine = "true") + List getByIdPath(@Param("path") String path); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/LoginRecordMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/LoginRecordMapper.java new file mode 100644 index 0000000..4409fdd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/LoginRecordMapper.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.param.LoginRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 登录日志Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:11 + */ +public interface LoginRecordMapper extends BaseMapper { + + /** + * 添加, 排除租户拦截 + * + * @param entity LoginRecord + * @return int + */ + @Override + @InterceptorIgnore(tenantLine = "true") + int insert(LoginRecord entity); + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") LoginRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") LoginRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/MenuMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/MenuMapper.java new file mode 100644 index 0000000..938ef17 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/MenuMapper.java @@ -0,0 +1,22 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.param.MenuParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 菜单Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:32 + */ +public interface MenuMapper extends BaseMapper { + @InterceptorIgnore(tenantLine = "true") + List getMenuByClone(@Param("param") MenuParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/OperationRecordMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/OperationRecordMapper.java new file mode 100644 index 0000000..8750c2a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/OperationRecordMapper.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.param.OperationRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 操作日志Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:03 + */ +public interface OperationRecordMapper extends BaseMapper { + + /** + * 添加, 排除租户拦截 + * + * @param entity OperationRecord + * @return int + */ + @Override + @InterceptorIgnore(tenantLine = "true") + int insert(OperationRecord entity); + + /** + * 分页查询 + * + * @param page 分页参数 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OperationRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OperationRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/OrganizationMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/OrganizationMapper.java new file mode 100644 index 0000000..6f06689 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/OrganizationMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Organization; +import com.gxwebsoft.common.system.param.OrganizationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 组织机构Mapper + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface OrganizationMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OrganizationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OrganizationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/PlugMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/PlugMapper.java new file mode 100644 index 0000000..600b1a2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/PlugMapper.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.param.PlugParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 插件扩展Mapper + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +public interface PlugMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List selectPageRel(@Param("page") IPage page, + @Param("param") PlugParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") PlugParam param); + + @InterceptorIgnore(tenantLine = "true") + List getMenuByClone(@Param("param") PlugParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/RoleMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/RoleMapper.java new file mode 100644 index 0000000..b00f275 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/RoleMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Role; + +/** + * 角色Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:44 + */ +public interface RoleMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/RoleMenuMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/RoleMenuMapper.java new file mode 100644 index 0000000..a225765 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/RoleMenuMapper.java @@ -0,0 +1,39 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 角色菜单Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:21 + */ +public interface RoleMenuMapper extends BaseMapper { + + /** + * 查询用户的菜单 + * + * @param userId 用户id + * @param menuType 菜单类型 + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List listMenuByUserId(@Param("userId") Integer userId, @Param("menuType") Integer menuType); + + /** + * 根据角色id查询菜单 + * + * @param roleIds 角色id + * @param menuType 菜单类型 + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List listMenuByRoleIds(@Param("roleIds") List roleIds, @Param("menuType") Integer menuType); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/SettingMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/SettingMapper.java new file mode 100644 index 0000000..ffc7f55 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/SettingMapper.java @@ -0,0 +1,40 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.param.SettingParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 系统设置Mapper + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +public interface SettingMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") SettingParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") SettingParam param); + + @InterceptorIgnore(tenantLine = "true") + Setting getBySettingKeyIgnore(@Param("param") SettingParam param); +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/TenantMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/TenantMapper.java new file mode 100644 index 0000000..17f4a25 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/TenantMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 租户Mapper + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +public interface TenantMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TenantParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TenantParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserFileMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserFileMapper.java new file mode 100644 index 0000000..d9e4bb4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserFileMapper.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.UserFile; + +/** + * 用户文件Mapper + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +public interface UserFileMapper extends BaseMapper { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java new file mode 100644 index 0000000..3769098 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserMapper.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.UserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:14 + */ +public interface UserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserParam param); + + /** + * 根据账号查询 + * + * @param username 账号 + * @param tenantId 租户id + * @return User + */ + @InterceptorIgnore(tenantLine = "true") + User selectByUsername(@Param("username") String username, @Param("tenantId") Integer tenantId); + + @InterceptorIgnore(tenantLine = "true") + List getOne(@Param("param") UserParam param); + + List selectListStatisticsRel(@Param("param") UserParam param); + + @InterceptorIgnore(tenantLine = "true") + void updateByUserId(@Param("param") User param); +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java new file mode 100644 index 0000000..51b38c8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/UserRoleMapper.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.UserRole; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户角色Mapper + * + * @author WebSoft + * @since 2018-12-24 16:10:02 + */ +public interface UserRoleMapper extends BaseMapper { + + /** + * 批量添加用户角色 + * + * @param userId 用户id + * @param roleIds 角色id集合 + * @return int + */ + int insertBatch(@Param("userId") Integer userId, @Param("roleIds") List roleIds); + + /** + * 根据用户id查询角色 + * + * @param userId 用户id + * @return List + */ + @InterceptorIgnore(tenantLine = "true") + List selectByUserId(@Param("userId") Integer userId); + + /** + * 批量根据用户id查询角色 + * + * @param userIds 用户id集合 + * @return List + */ + List selectByUserIds(@Param("userIds") List userIds); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/AccessKeyMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/AccessKeyMapper.xml new file mode 100644 index 0000000..9e870d7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/AccessKeyMapper.xml @@ -0,0 +1,44 @@ + + + + + + + SELECT a.* + FROM sys_access_key a + + + AND a.id = #{param.id} + + + AND a.accessKey LIKE CONCAT('%', #{param.accessKey}, '%') + + + AND a.accessSecret LIKE CONCAT('%', #{param.accessSecret}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyMapper.xml new file mode 100644 index 0000000..546fe14 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/CompanyMapper.xml @@ -0,0 +1,124 @@ + + + + + + + SELECT a.*,b.tenant_id,b.tenant_name,b.tenant_code + FROM sys_company a + LEFT JOIN sys_tenant b ON a.tenant_id = b.tenant_id + + + AND a.company_id = #{param.companyId} + + + AND a.short_name LIKE CONCAT('%', #{param.shortName}, '%') + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.company_type = #{param.companyType} + + + AND a.company_logo LIKE CONCAT('%', #{param.companyLogo}, '%') + + + AND a.domain LIKE CONCAT('%', #{param.domain}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.Invoice_header LIKE CONCAT('%', #{param.invoiceHeader}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.version = #{param.version} + + + AND a.members = #{param.members} + + + AND a.industry_parent LIKE CONCAT('%', #{param.industryParent}, '%') + + + AND a.industry_child LIKE CONCAT('%', #{param.industryChild}, '%') + + + AND a.departments = #{param.departments} + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.authentication = #{param.authentication} + + + AND a.status = #{param.status} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.authoritative = #{param.authoritative} + + + AND (a.company_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.short_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.tenant_id = #{param.keywords} + OR a.domain LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictDataMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictDataMapper.xml new file mode 100644 index 0000000..38949c2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictDataMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.*, + b.dict_code, + b.dict_name + FROM sys_dict_data a + LEFT JOIN sys_dict b ON a.dict_id = b.dict_id + + AND a.deleted = 0 + + AND a.dict_data_id = #{param.dictDataId} + + + AND a.dict_id = #{param.dictId} + + + AND a.dict_data_code LIKE CONCAT('%', #{param.dictDataCode}, '%') + + + AND a.dict_data_name LIKE CONCAT('%', #{param.dictDataName}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.dict_code = #{param.dictCode} + + + AND b.dict_name = #{param.dictName} + + + AND ( + a.dict_data_code LIKE CONCAT('%', #{param.keywords}, '%') + OR a.dict_data_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictMapper.xml new file mode 100644 index 0000000..db709ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryDataMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryDataMapper.xml new file mode 100644 index 0000000..db778ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryDataMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.*, + b.dict_code, + b.dict_name + FROM sys_dictionary_data a + LEFT JOIN sys_dictionary b ON a.dict_id = b.dict_id + + AND a.deleted = 0 + + AND a.dict_data_id = #{param.dictDataId} + + + AND a.dict_id = #{param.dictId} + + + AND a.dict_data_code LIKE CONCAT('%', #{param.dictDataCode}, '%') + + + AND a.dict_data_name LIKE CONCAT('%', #{param.dictDataName}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.dict_code = #{param.dictCode} + + + AND b.dict_name = #{param.dictName} + + + AND ( + a.dict_data_code LIKE CONCAT('%', #{param.keywords}, '%') + OR a.dict_data_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryMapper.xml new file mode 100644 index 0000000..8cd0cff --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/DictionaryMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/EmailRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/EmailRecordMapper.xml new file mode 100644 index 0000000..7b5ad62 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/EmailRecordMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml new file mode 100644 index 0000000..629a8d7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/FileRecordMapper.xml @@ -0,0 +1,79 @@ + + + + + + + SELECT a.*, + b.username create_username, + b.nickname create_nickname, + b.avatar, + c.merchant_code + FROM sys_file_record a + LEFT JOIN sys_user b ON a.create_user_id = b.user_id + LEFT JOIN shop_merchant c ON a.merchant_code = c.merchant_code + + + AND a.id = #{param.id} + + + AND a.`name` LIKE CONCAT('%', #{param.name}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.create_user_id = #{param.createUserId} + + + AND a.group_id = #{param.groupId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND b.username = #{param.createUsername} + + + AND b.nickname LIKE CONCAT('%', #{param.createNickname}, '%') + + + AND a.content_type LIKE CONCAT('%', #{param.contentType}, '%') + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/LoginRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/LoginRecordMapper.xml new file mode 100644 index 0000000..35d00ad --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/LoginRecordMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.*, + b.user_id, + b.nickname + FROM sys_login_record a + LEFT JOIN sys_user b ON a.username = b.username + + + AND a.id = #{param.id} + + + AND a.username LIKE CONCAT('%', #{param.username}, '%') + + + AND a.os LIKE CONCAT('%', #{param.os}, '%') + + + AND a.device LIKE CONCAT('%', #{param.device}, '%') + + + AND a.browser LIKE CONCAT('%', #{param.browser}, '%') + + + AND a.ip LIKE CONCAT('%', #{param.ip}, '%') + + + AND a.login_type LIKE CONCAT('%', #{param.loginType}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.user_id = #{param.userId} + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/MenuMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/MenuMapper.xml new file mode 100644 index 0000000..0897489 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/MenuMapper.xml @@ -0,0 +1,32 @@ + + + + + + + SELECT a.* + FROM sys_menu a + + + AND a.menu_id = #{param.menuId} + + + AND a.parent_id = #{param.parentId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.tenant_id = #{param.tenantId} + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/OperationRecordMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/OperationRecordMapper.xml new file mode 100644 index 0000000..e03147b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/OperationRecordMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.*, + b.nickname, + b.username + FROM sys_operation_record a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.module LIKE CONCAT('%', #{param.module}, '%') + + + AND a.description LIKE CONCAT('%', #{param.description}, '%') + + + AND a.url LIKE CONCAT('%', #{param.url}, '%') + + + AND a.request_method = #{param.requestMethod} + + + AND a.method LIKE CONCAT('%', #{param.method}, '%') + + + AND a.description LIKE CONCAT('%', #{param.description}, '%') + + + AND a.ip LIKE CONCAT('%', #{param.ip}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.`status` = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.username LIKE CONCAT('%', #{param.username}, '%') + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/OrganizationMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/OrganizationMapper.xml new file mode 100644 index 0000000..52c9467 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/OrganizationMapper.xml @@ -0,0 +1,86 @@ + + + + + + + SELECT ta.* + FROM sys_dictionary_data ta + LEFT JOIN sys_dictionary tb + ON ta.dict_id = tb.dict_id + AND tb.deleted = 0 + WHERE ta.deleted = 0 + AND tb.dict_code = 'organization_type' + + + + + SELECT a.*, + b.dict_data_name organization_type_name, + c.nickname leader_nickname, + c.username leader_username + FROM sys_organization a + LEFT JOIN ( + + ) b ON a.organization_type = b.dict_data_code + LEFT JOIN sys_user c ON a.leader_id = c.user_id + + AND a.deleted = 0 + + AND a.organization_id = #{param.organizationId} + + + AND a.parent_id = #{param.parentId} + + + AND a.organization_name LIKE CONCAT('%', #{param.organizationName}, '%') + + + AND a.organization_full_name LIKE CONCAT('%', #{param.organizationFullName}, '%') + + + AND a.organization_code LIKE CONCAT('%', #{param.organizationCode}, '%') + + + AND a.organization_type = #{param.organizationType} + + + AND a.leader_id = #{param.leaderId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.dict_data_name LIKE CONCAT('%', #{param.organizationTypeName}, '%') + + + AND c.nickname LIKE CONCAT('%', #{param.leaderNickname}, '%') + + + AND c.username LIKE CONCAT('%', #{param.leaderUsername}, '%') + + + AND ( + a.organization_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/PlugMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/PlugMapper.xml new file mode 100644 index 0000000..cdaeafb --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/PlugMapper.xml @@ -0,0 +1,105 @@ + + + + + + + SELECT a.*,b.tenant_name,c.company_name,c.short_name,c.domain + FROM sys_plug a + LEFT JOIN sys_tenant b ON a.tenant_id = b.tenant_id + LEFT JOIN sys_company c ON a.tenant_id = c.tenant_id + + + AND a.plug_id = #{param.plugId} + + + AND a.menu_id = #{param.menuId} + + + AND a.parent_id = #{param.parentId} + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.menu_type = #{param.menuType} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.authority LIKE CONCAT('%', #{param.authority}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.color LIKE CONCAT('%', #{param.color}, '%') + + + AND a.hide = #{param.hide} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.app_id = #{param.appId} + + + AND a.user_id = #{param.userId} + + + 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} + + + AND (a.title LIKE CONCAT('%', #{param.keywords}, '%') + OR a.menu_id = #{param.keywords} + OR c.company_name LIKE CONCAT('%', #{param.keywords}, '%') + OR c.short_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMapper.xml new file mode 100644 index 0000000..9f6facc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMenuMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMenuMapper.xml new file mode 100644 index 0000000..377d903 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/RoleMenuMapper.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/SettingMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/SettingMapper.xml new file mode 100644 index 0000000..ac81f4e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/SettingMapper.xml @@ -0,0 +1,33 @@ + + + + + + + SELECT a.* + FROM sys_setting a + + + AND a.setting_key = #{param.settingKey} + + + AND a.setting_id = #{param.settingId} + + + AND a.tenant_id = #{param.tenantId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/TenantMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/TenantMapper.xml new file mode 100644 index 0000000..83ba5b2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/TenantMapper.xml @@ -0,0 +1,56 @@ + + + + + + + SELECT a.* + FROM sys_tenant a + + + AND a.tenant_id = #{param.tenantId} + + + AND a.tenant_name LIKE CONCAT('%', #{param.tenantName}, '%') + + + AND a.tenant_code LIKE CONCAT('%', #{param.tenantCode}, '%') + + + AND a.logo LIKE CONCAT('%', #{param.logo}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserFileMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserFileMapper.xml new file mode 100644 index 0000000..872b232 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserFileMapper.xml @@ -0,0 +1,5 @@ + + + + + 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 new file mode 100644 index 0000000..52767cb --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserMapper.xml @@ -0,0 +1,237 @@ + + + + + + + SELECT ta.* + FROM sys_dictionary_data ta + LEFT JOIN sys_dictionary tb + ON ta.dict_id = tb.dict_id + AND tb.deleted = 0 + WHERE ta.deleted = 0 + AND tb.dict_code = 'sex' + + + + + SELECT a.user_id, + GROUP_CONCAT(b.role_name) role_name + FROM sys_user_role a + LEFT JOIN sys_role b ON a.role_id = b.role_id + GROUP BY a.user_id + + + + + SELECT a.*, + b.organization_name, + c.dict_data_name sex_name, + e.tenant_name,e.logo, + g.grade_id,g.name as gradeName, + h.dealer_id + FROM sys_user a + LEFT JOIN sys_organization b ON a.organization_id = b.organization_id + LEFT JOIN ( + + ) c ON a.sex = c.dict_data_code + LEFT JOIN( + + ) d ON a.user_id = d.user_id + LEFT JOIN sys_tenant e ON a.tenant_id = e.tenant_id + LEFT JOIN shop_user_grade g ON a.grade_id = g.grade_id + LEFT JOIN shop_user_referee h ON a.user_id = h.user_id + + + AND a.user_id = #{param.userId} + + + AND a.username LIKE CONCAT('%', #{param.username}, '%') + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND a.type = #{param.type} + + + AND a.sex = #{param.sex} + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.email LIKE CONCAT('%', #{param.email}, '%') + + + AND a.email_verified = #{param.emailVerified} + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.id_card LIKE CONCAT('%', #{param.idCard}, '%') + + + AND a.birthday LIKE CONCAT('%', #{param.birthday}, '%') + + + AND a.organization_id = #{param.organizationId} + + + AND a.organization_id > 0 + + + AND a.platform = #{param.platform} + + + AND a.`status` = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.recommend = #{param.recommend} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.user_id IN (SELECT user_id FROM sys_user_role WHERE role_id=#{param.roleId}) + + + AND a.user_id IN + + #{item} + + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND i.city_mate LIKE CONCAT('%', #{param.cityMate}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND b.organization_name LIKE CONCAT('%', #{param.organizationName}, '%') + + + AND c.dict_data_name = #{param.sexName} + + + AND g.grade_id = #{param.gradeId} + + + AND a.username NOT LIKE 'wx_%' + + + AND a.username LIKE 'wx_%' + + + AND ( + a.username LIKE CONCAT('%', #{param.keywords}, '%') + OR a.user_id = #{param.keywords} + OR a.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR a.real_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.alias LIKE CONCAT('%', #{param.keywords}, '%') + OR a.phone LIKE CONCAT('%', #{param.keywords}, '%') + OR a.email LIKE CONCAT('%', #{param.keywords}, '%') + OR b.organization_name LIKE CONCAT('%', #{param.keywords}, '%') + OR c.dict_data_name LIKE CONCAT('%', #{param.keywords}, '%') + OR d.role_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + AND a.organization_id IN (SELECT organization_id FROM sys_organization WHERE parent_id=#{param.parentId}) + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE sys_user SET grade_id = #{param.gradeId} WHERE user_id = #{param.userId} + + + diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml new file mode 100644 index 0000000..6b1c3e2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/UserRoleMapper.xml @@ -0,0 +1,35 @@ + + + + + + INSERT INTO sys_user_role(user_id, role_id) VALUES + + (#{userId}, #{roleId}) + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/param/AccessKeyParam.java b/src/main/java/com/gxwebsoft/common/system/param/AccessKeyParam.java new file mode 100644 index 0000000..6d77044 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/AccessKeyParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +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 WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "角色查询参数") +public class AccessKeyParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty("AccessKey") + private String accessKey; + + @ApiModelProperty("AccessSecret") + private String accessSecret; + + @ApiModelProperty("手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty("短信验证码") + @TableField(exist = false) + private String code; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("租户ID") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/AlipayParam.java b/src/main/java/com/gxwebsoft/common/system/param/AlipayParam.java new file mode 100644 index 0000000..978c942 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/AlipayParam.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 登录参数 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "登录参数") +public class AlipayParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("支付宝授权码") + private String authCode; + + @ApiModelProperty("登录账号") + private String username; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CacheParam.java b/src/main/java/com/gxwebsoft/common/system/param/CacheParam.java new file mode 100644 index 0000000..0e43e93 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CacheParam.java @@ -0,0 +1,25 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 缓存管理 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "缓存管理") +public class CacheParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("key") + private String key; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/CompanyParam.java b/src/main/java/com/gxwebsoft/common/system/param/CompanyParam.java new file mode 100644 index 0000000..b13dcb5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/CompanyParam.java @@ -0,0 +1,131 @@ +package com.gxwebsoft.common.system.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 2023-05-27 14:57:34 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CompanyParam对象", description = "企业信息查询参数") +public class CompanyParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "企业id") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "企业简称") + private String shortName; + + @ApiModelProperty(value = "企业全称") + private String companyName; + + @ApiModelProperty(value = "企业标识") + private String companyCode; + + @ApiModelProperty(value = "类型 10企业 20政府单位") + @QueryField(type = QueryType.EQ) + private String companyType; + + @ApiModelProperty(value = "企业类型 多选") + private String companyTypeMultiple; + + @ApiModelProperty(value = "应用标识") + private String companyLogo; + + @ApiModelProperty(value = "企业域名") + private String domain; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "企业法人") + private String businessEntity; + + @ApiModelProperty(value = "发票抬头") + private String invoiceHeader; + + @ApiModelProperty(value = "服务开始时间") + private String startTime; + + @ApiModelProperty(value = "服务到期时间") + private String expirationTime; + + @ApiModelProperty(value = "应用版本 10体验版 20授权版 30旗舰版") + @QueryField(type = QueryType.EQ) + private Integer version; + + @ApiModelProperty(value = "成员数量") + @QueryField(type = QueryType.EQ) + private Integer members; + + @ApiModelProperty(value = "行业类型(父级)") + private String industryParent; + + @ApiModelProperty(value = "行业类型(子级)") + private String industryChild; + + @ApiModelProperty(value = "部门数量") + @QueryField(type = QueryType.EQ) + private Integer departments; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + @QueryField(type = QueryType.EQ) + private Integer authentication; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "是否默认企业主体") + @QueryField(type = QueryType.EQ) + private Boolean authoritative; + + @ApiModelProperty(value = "租户号") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DictDataParam.java b/src/main/java/com/gxwebsoft/common/system/param/DictDataParam.java new file mode 100644 index 0000000..68d85b9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DictDataParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 WebSoft + * @since 2021-08-28 22:12:02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "字典数据查询参数") +public class DictDataParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典数据id") + @QueryField(type = QueryType.EQ) + private Integer dictDataId; + + @ApiModelProperty(value = "字典id") + @QueryField(type = QueryType.EQ) + private Integer dictId; + + @ApiModelProperty(value = "字典数据标识") + private String dictDataCode; + + @ApiModelProperty(value = "字典数据名称") + private String dictDataName; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "字典代码") + @TableField(exist = false) + private String dictCode; + + @ApiModelProperty(value = "字典名称") + @TableField(exist = false) + private String dictName; + + @ApiModelProperty(value = "字典数据代码或字典数据名称") + @TableField(exist = false) + private String keywords; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DictParam.java b/src/main/java/com/gxwebsoft/common/system/param/DictParam.java new file mode 100644 index 0000000..a4fcefc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DictParam.java @@ -0,0 +1,38 @@ +package com.gxwebsoft.common.system.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 WebSoft + * @since 2021-08-28 22:12:01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "字典查询参数") +public class DictParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @ApiModelProperty(value = "字典标识") + private String dictCode; + + @ApiModelProperty(value = "字典名称") + private String dictName; + + @ApiModelProperty(value = "备注") + private String comments; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DictionaryDataParam.java b/src/main/java/com/gxwebsoft/common/system/param/DictionaryDataParam.java new file mode 100644 index 0000000..9ae7597 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DictionaryDataParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 字典数据查询参数 + * + * @author WebSoft + * @since 2021-08-28 22:12:02 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "字典数据查询参数") +public class DictionaryDataParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "字典数据id") + @QueryField(type = QueryType.EQ) + private Integer dictDataId; + + @ApiModelProperty(value = "字典id") + @QueryField(type = QueryType.EQ) + private Integer dictId; + + @ApiModelProperty(value = "字典数据标识") + private String dictDataCode; + + @ApiModelProperty(value = "字典数据名称") + private String dictDataName; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "字典代码") + @TableField(exist = false) + private String dictCode; + + @ApiModelProperty(value = "字典名称") + @TableField(exist = false) + private String dictName; + + @ApiModelProperty(value = "字典数据代码或字典数据名称") + @TableField(exist = false) + private String keywords; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/DictionaryParam.java b/src/main/java/com/gxwebsoft/common/system/param/DictionaryParam.java new file mode 100644 index 0000000..d3d5ef2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/DictionaryParam.java @@ -0,0 +1,38 @@ +package com.gxwebsoft.common.system.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; + +/** + * 字典查询参数 + * + * @author WebSoft + * @since 2021-08-28 22:12:01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "字典查询参数") +public class DictionaryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty(value = "字典id") + private Integer dictId; + + @ApiModelProperty(value = "字典标识") + private String dictCode; + + @ApiModelProperty(value = "字典名称") + private String dictName; + + @ApiModelProperty(value = "备注") + private String comments; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/FileRecordParam.java b/src/main/java/com/gxwebsoft/common/system/param/FileRecordParam.java new file mode 100644 index 0000000..97dc845 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/FileRecordParam.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +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; + +/** + * 文件上传记录查询参数 + * + * @author WebSoft + * @since 2021-08-30 11:29:31 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "文件上传记录查询参数") +public class FileRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("主键id") + private Integer id; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("分组ID") + private Integer groupId; + + @ApiModelProperty("文件名称") + private String name; + + @ApiModelProperty("文件存储路径") + private String path; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("创建人") + private Integer createUserId; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("文件类型") + private String contentType; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("创建人账号") + @TableField(exist = false) + private String createUsername; + + @ApiModelProperty("创建人名称") + @TableField(exist = false) + private String createNickname; + + @ApiModelProperty("用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty("商户编号") + private String merchantCode; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/LoginParam.java b/src/main/java/com/gxwebsoft/common/system/param/LoginParam.java new file mode 100644 index 0000000..2ba1dac --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/LoginParam.java @@ -0,0 +1,34 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 登录参数 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "登录参数") +public class LoginParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("账号") + private String username; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("密码") + private String password; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/LoginRecordParam.java b/src/main/java/com/gxwebsoft/common/system/param/LoginRecordParam.java new file mode 100644 index 0000000..9ceb8d6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/LoginRecordParam.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 登录日志查询参数 + * + * @author WebSoft + * @since 2021-08-29 19:09:23 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "登录日志查询参数") +public class LoginRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("主键id") + private Integer id; + + @ApiModelProperty("用户账号") + private String username; + + @ApiModelProperty("操作系统") + private String os; + + @ApiModelProperty("设备名") + private String device; + + @ApiModelProperty("浏览器类型") + private String browser; + + @ApiModelProperty("ip地址") + private String ip; + + @QueryField(type = QueryType.EQ) + @ApiModelProperty("操作类型, 0登录成功, 1登录失败, 2退出登录, 3续签token") + private Integer loginType; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("用户id") + @TableField(exist = false) + private Integer userId; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/MenuParam.java b/src/main/java/com/gxwebsoft/common/system/param/MenuParam.java new file mode 100644 index 0000000..6596d0a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/MenuParam.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableLogic; +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; + +/** + * 菜单查询参数 + * + * @author WebSoft + * @since 2021-08-29 19:36:10 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "菜单查询参数") +public class MenuParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("菜单id") + @QueryField(type = QueryType.EQ) + private Integer menuId; + + @ApiModelProperty("上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty("菜单名称") + private String title; + + @ApiModelProperty("菜单路由关键字") + private String path; + + @ApiModelProperty("菜单组件地址") + private String component; + + @ApiModelProperty("菜单类型, 0菜单, 1按钮") + @QueryField(type = QueryType.EQ) + private Integer menuType; + + @ApiModelProperty("权限标识") + private String authority; + + @ApiModelProperty("菜单图标") + private String icon; + + @ApiModelProperty("关联应用") + private Integer appId; + + @ApiModelProperty("是否隐藏, 0否, 1是(仅注册路由不显示左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("租户ID") + @QueryField(type = QueryType.EQ) + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/OperationRecordParam.java b/src/main/java/com/gxwebsoft/common/system/param/OperationRecordParam.java new file mode 100644 index 0000000..7c5e344 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/OperationRecordParam.java @@ -0,0 +1,67 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 操作日志参数 + * + * @author WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "操作日志参数") +public class OperationRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty("用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty("操作模块") + private String module; + + @ApiModelProperty("操作功能") + private String description; + + @ApiModelProperty("请求地址") + private String url; + + @ApiModelProperty("请求方式") + private String requestMethod; + + @ApiModelProperty("调用方法") + private String method; + + @ApiModelProperty("ip地址") + private String ip; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("状态, 0成功, 1异常") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty("用户账号") + @TableField(exist = false) + private String username; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/OrganizationParam.java b/src/main/java/com/gxwebsoft/common/system/param/OrganizationParam.java new file mode 100644 index 0000000..d0b9942 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/OrganizationParam.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 组织机构查询参数 + * + * @author WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "组织机构查询参数") +public class OrganizationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "机构名称") + private String organizationName; + + @ApiModelProperty(value = "机构全称") + private String organizationFullName; + + @ApiModelProperty(value = "机构代码") + private String organizationCode; + + @ApiModelProperty(value = "机构类型(字典代码)") + private String organizationType; + + @ApiModelProperty(value = "负责人id") + @QueryField(type = QueryType.EQ) + private Integer leaderId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "机构类型名称") + @TableField(exist = false) + private String organizationTypeName; + + @ApiModelProperty(value = "负责人姓名") + @TableField(exist = false) + private String leaderNickname; + + @ApiModelProperty(value = "负责人账号") + @TableField(exist = false) + private String leaderUsername; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/PlugParam.java b/src/main/java/com/gxwebsoft/common/system/param/PlugParam.java new file mode 100644 index 0000000..87e79af --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/PlugParam.java @@ -0,0 +1,95 @@ +package com.gxwebsoft.common.system.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 2023-05-18 11:57:37 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "PlugParam对象", description = "插件扩展查询参数") +public class PlugParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "插件id") + @QueryField(type = QueryType.EQ) + private Integer plugId; + + @ApiModelProperty(value = "菜单id") + @QueryField(type = QueryType.EQ) + private Integer menuId; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "菜单名称") + private String title; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + @QueryField(type = QueryType.EQ) + private Integer menuType; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "菜单图标") + private String icon; + + @ApiModelProperty(value = "图标颜色") + private String color; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "关联应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/RoleParam.java b/src/main/java/com/gxwebsoft/common/system/param/RoleParam.java new file mode 100644 index 0000000..1332d4e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/RoleParam.java @@ -0,0 +1,41 @@ +package com.gxwebsoft.common.system.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; + +/** + * 角色查询参数 + * + * @author WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "角色查询参数") +public class RoleParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("角色id") + @QueryField(type = QueryType.EQ) + private Integer roleId; + + @ApiModelProperty("角色标识") + private String roleCode; + + @ApiModelProperty("角色名称") + private String roleName; + + @ApiModelProperty("备注") + private String comments; + + @ApiModelProperty("租户ID") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/SettingParam.java b/src/main/java/com/gxwebsoft/common/system/param/SettingParam.java new file mode 100644 index 0000000..fe322d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/SettingParam.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.common.system.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 WebSoft + * @since 2022-11-19 13:54:27 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "SettingParam对象", description = "系统设置查询参数") +public class SettingParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @QueryField(type = QueryType.EQ) + private Integer settingId; + + @ApiModelProperty(value = "设置项标示") + @QueryField(type = QueryType.EQ) + private String settingKey; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "同步更新租户名称") + private String tenantName; + + @ApiModelProperty(value = "租户名称") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/SmsCaptchaParam.java b/src/main/java/com/gxwebsoft/common/system/param/SmsCaptchaParam.java new file mode 100644 index 0000000..765b9eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/SmsCaptchaParam.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 发送短信验证码参数 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "发送短信验证码参数") +public class SmsCaptchaParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("短信签名") + private String signName; + + @ApiModelProperty("手机号码") + private String phone; + + @ApiModelProperty("短信模板") + private String TemplateParam; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/TenantParam.java b/src/main/java/com/gxwebsoft/common/system/param/TenantParam.java new file mode 100644 index 0000000..5d70e82 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/TenantParam.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +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 2023-07-17 17:49:53 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TenantParam对象", description = "租户查询参数") +public class TenantParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "租户名称") + private String tenantName; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "logo") + private String logo; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "租户id") + @QueryField(type = QueryType.EQ) + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UpdatePasswordParam.java b/src/main/java/com/gxwebsoft/common/system/param/UpdatePasswordParam.java new file mode 100644 index 0000000..ca75819 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UpdatePasswordParam.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/** + * 修改密码参数 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "修改密码参数") +public class UpdatePasswordParam implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("原始密码") + private String oldPassword; + + @ApiModelProperty("新密码") + private String password; + + @ApiModelProperty("手机号码") + private String phone; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserFileParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserFileParam.java new file mode 100644 index 0000000..d8217af --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserFileParam.java @@ -0,0 +1,40 @@ +package com.gxwebsoft.common.system.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; + +/** + * 用户文件查询参数 + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserFileParam对象", description = "用户文件查询参数") +public class UserFileParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "文件名称") + private String name; + + @ApiModelProperty(value = "上级id") + @QueryField(type = QueryType.EQ) + private Integer parentId; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserImportParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserImportParam.java new file mode 100644 index 0000000..153a783 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserImportParam.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.param; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import lombok.Data; + +import java.io.Serializable; + +/** + * 用户导入参数 + * + * @author WebSoft + * @since 2011-10-15 17:33:34 + */ +@Data +public class UserImportParam implements Serializable { + private static final long serialVersionUID = 1L; + + @Excel(name = "账号") + private String username; + + @Excel(name = "密码") + private String password; + + @Excel(name = "昵称") + private String nickname; + + @Excel(name = "手机号") + private String phone; + + @Excel(name = "邮箱") + private String email; + + @Excel(name = "组织机构") + private String organizationName; + + @Excel(name = "性别") + private String sexName; + + @Excel(name = "角色") + private String roleName; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/param/UserParam.java b/src/main/java/com/gxwebsoft/common/system/param/UserParam.java new file mode 100644 index 0000000..67817cd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/UserParam.java @@ -0,0 +1,218 @@ +package com.gxwebsoft.common.system.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; +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 com.gxwebsoft.love.entity.UserProfile; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.Set; + +/** + * 用户查询参数 + * + * @author WebSoft + * @since 2021-08-29 20:35:09 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(description = "用户查询参数") +public class UserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("用户id") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty("用户类型, 0普通用户 10企业用户") + private Integer type; + + @ApiModelProperty("账号") + private String username; + + @ApiModelProperty("昵称") + private String nickname; + + @ApiModelProperty("用户编码") + private String userCode; + + @ApiModelProperty("性别(字典)") + @QueryField(type = QueryType.EQ) + private String sex; + + @ApiModelProperty("手机号") + private String phone; + + @ApiModelProperty("邮箱") + private String email; + + @ApiModelProperty("邮箱是否验证, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer emailVerified; + + @ApiModelProperty("别名") + private String alias; + + @ApiModelProperty("真实姓名") + private String realName; + + @ApiModelProperty("身份证号") + private String idCard; + + @ApiModelProperty("出生日期") + private String birthday; + + @ApiModelProperty(value = "年龄") + private Integer age; + + @ApiModelProperty("可用余额") + private BigDecimal balance; + + @ApiModelProperty("机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty("注册来源客户端") + @QueryField(type = QueryType.EQ) + private String platform; + + @ApiModelProperty("是否下线会员") + private Integer offline; + + @ApiModelProperty("上级机构ID") + @QueryField(type = QueryType.IN) + private Integer parentId; + + @ApiModelProperty("状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty("是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty("角色id") + @TableField(exist = false) + private Integer roleId; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "择偶区域") + @TableField(exist = false) + private String cityMate; + + @ApiModelProperty("机构名称") + @TableField(exist = false) + private String organizationName; + + @ApiModelProperty("公司名称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty("公司名称") + private String customerName; + + @ApiModelProperty("性别名称") + @TableField(exist = false) + private String sexName; + + @ApiModelProperty("推荐状态") + @TableField(exist = false) + private Integer recommend; + + @ApiModelProperty("搜索关键字") + @TableField(exist = false) + private String keywords; + + @ApiModelProperty(value = "会员等级") + @TableField(exist = false) + private Integer gradeId; + + @ApiModelProperty("按角色搜索") + @TableField(exist = false) + private String roleIds; + + @ApiModelProperty("用户类型 sys系统用户 org机构职员 member商城会员 ") + @TableField(exist = false) + private String userType; + + @ApiModelProperty("支付宝授权码") + @TableField(exist = false) + private String authCode; + + @ApiModelProperty("微信凭证code") + @TableField(exist = false) + private String code; + + @ApiModelProperty("推荐人ID") + @QueryField(type = QueryType.IN) + private Integer refereeId; + + @ApiModelProperty("租户ID") + private Integer tenantId; + + @ApiModelProperty("二维码类型") + @TableField(exist = false) + private String codeType; + + @ApiModelProperty("二维码内容 填网址扫码后可跳转") + @TableField(exist = false) + private String codeContent; + + @ApiModelProperty("是否内部职员") + @TableField(exist = false) + private Boolean isStaff; + + @ApiModelProperty("最后结算时间") + @TableField(exist = false) + private Date settlementTime; + + @ApiModelProperty("报餐时间") + @TableField(exist = false) + private String deliveryTime; + + @ApiModelProperty("用户ID集合") + @TableField(exist = false) + private Set userIds; + + @ApiModelProperty("详细资料") + @TableField(exist = false) + private UserProfile userProfile; + + @ApiModelProperty("是否查询用户详细资料表") + @TableField(exist = false) + private Boolean showProfile; + + @ApiModelProperty("关注数") + private Integer followers; + + @ApiModelProperty("粉丝数") + private Integer fans; + + @ApiModelProperty("获赞数") + private Integer likes; + + @ApiModelProperty("评论数") + private Integer commentNumbers; + + + @ApiModelProperty("1气氛组 2真实用户") + private Integer fake; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/result/CaptchaResult.java b/src/main/java/com/gxwebsoft/common/system/result/CaptchaResult.java new file mode 100644 index 0000000..5a2d441 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/result/CaptchaResult.java @@ -0,0 +1,30 @@ +package com.gxwebsoft.common.system.result; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 验证码返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "验证码返回结果") +public class CaptchaResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("图形验证码base64数据") + private String base64; + + @ApiModelProperty("验证码文本") + private String text; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/result/LoginResult.java b/src/main/java/com/gxwebsoft/common/system/result/LoginResult.java new file mode 100644 index 0000000..4089728 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/result/LoginResult.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.result; + +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 登录返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "登录返回结果") +public class LoginResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("access_token") + private String access_token; + + @ApiModelProperty("用户信息") + private User user; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/result/RedisResult.java b/src/main/java/com/gxwebsoft/common/system/result/RedisResult.java new file mode 100644 index 0000000..b2bc90c --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/result/RedisResult.java @@ -0,0 +1,35 @@ +package com.gxwebsoft.common.system.result; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.apache.poi.ss.formula.functions.T; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * Redis缓存数据 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "缓存数据返回") +public class RedisResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("key") + private String key; + + @ApiModelProperty("数据") + private T data; + + @ApiModelProperty("过期时间") + private LocalDateTime expireTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/result/SmsCaptchaResult.java b/src/main/java/com/gxwebsoft/common/system/result/SmsCaptchaResult.java new file mode 100644 index 0000000..0db38d2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/result/SmsCaptchaResult.java @@ -0,0 +1,26 @@ +package com.gxwebsoft.common.system.result; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 短信验证码返回结果 + * + * @author WebSoft + * @since 2021-08-30 17:35:16 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel(description = "短信验证码返回结果") +public class SmsCaptchaResult implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("短信验证码") + private String text; +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/AccessKeyService.java b/src/main/java/com/gxwebsoft/common/system/service/AccessKeyService.java new file mode 100644 index 0000000..19946bc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/AccessKeyService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.AccessKey; +import com.gxwebsoft.common.system.param.AccessKeyParam; + +import java.util.List; + +/** + * 访问凭证管理Service + * + * @author 科技小王子 + * @since 2023-05-16 19:19:55 + */ +public interface AccessKeyService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(AccessKeyParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(AccessKeyParam param); + + /** + * 根据id查询 + * + * @param id 字典项id + * @return AccessKey + */ + AccessKey getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/AlipayService.java b/src/main/java/com/gxwebsoft/common/system/service/AlipayService.java new file mode 100644 index 0000000..c29884d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/AlipayService.java @@ -0,0 +1,21 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.param.LoginRecordParam; +import com.gxwebsoft.shop.entity.Payment; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 支付宝服务层 + * + * @author WebSoft + * @since 2018-12-24 16:10:41 + */ +public interface AlipayService extends IService { + + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/CompanyService.java b/src/main/java/com/gxwebsoft/common/system/service/CompanyService.java new file mode 100644 index 0000000..023e8af --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/CompanyService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Company; +import com.gxwebsoft.common.system.param.CompanyParam; + +import java.util.List; + +/** + * 企业信息Service + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +public interface CompanyService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CompanyParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CompanyParam param); + + /** + * 根据id查询 + * + * @param companyId 企业id + * @return Company + */ + Company getByIdRel(Integer companyId); + + Company getByTenantIdRel(Integer tenantId); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DictDataService.java b/src/main/java/com/gxwebsoft/common/system/service/DictDataService.java new file mode 100644 index 0000000..86b94bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DictDataService.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; + +import java.util.List; + +/** + * 字典数据Service + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface DictDataService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DictDataParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DictDataParam param); + + /** + * 根据id查询 + * + * @param dictDataId 字典数据id + * @return DictData + */ + DictData getByIdRel(Integer dictDataId); + + /** + * 根据dictCode和dictDataName查询 + * + * @param dictCode 字典标识 + * @param dictDataName 字典项名称 + * @return DictData + */ + DictData getByDictCodeAndName(String dictCode, String dictDataName); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DictService.java b/src/main/java/com/gxwebsoft/common/system/service/DictService.java new file mode 100644 index 0000000..8aef5ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DictService.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Dict; + +/** + * 字典Service + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +public interface DictService extends IService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DictionaryDataService.java b/src/main/java/com/gxwebsoft/common/system/service/DictionaryDataService.java new file mode 100644 index 0000000..881fd5a --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DictionaryDataService.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.param.DictionaryDataParam; + +import java.util.List; + +/** + * 字典数据Service + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface DictionaryDataService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(DictionaryDataParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(DictionaryDataParam param); + + /** + * 根据id查询 + * + * @param dictDataId 字典数据id + * @return DictionaryData + */ + DictionaryData getByIdRel(Integer dictDataId); + + /** + * 根据dictCode和dictDataName查询 + * + * @param dictCode 字典标识 + * @param dictDataName 字典项名称 + * @return DictionaryData + */ + DictionaryData getByDictCodeAndName(String dictCode, String dictDataName); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/DictionaryService.java b/src/main/java/com/gxwebsoft/common/system/service/DictionaryService.java new file mode 100644 index 0000000..4705494 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/DictionaryService.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Dictionary; + +/** + * 字典Service + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +public interface DictionaryService extends IService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/EmailRecordService.java b/src/main/java/com/gxwebsoft/common/system/service/EmailRecordService.java new file mode 100644 index 0000000..6b100c7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/EmailRecordService.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.EmailRecord; + +import javax.mail.MessagingException; +import java.io.IOException; +import java.util.Map; + +/** + * 邮件发送记录Service + * + * @author WebSoft + * @since 2019-06-19 04:07:02 + */ +public interface EmailRecordService extends IService { + + /** + * 发送普通邮件 + * + * @param title 标题 + * @param content 内容 + * @param toEmails 收件人 + */ + void sendTextEmail(String title, String content, String[] toEmails); + + /** + * 发送富文本邮件 + * + * @param title 标题 + * @param html 富文本 + * @param toEmails 收件人 + * @throws MessagingException MessagingException + */ + void sendFullTextEmail(String title, String html, String[] toEmails) throws MessagingException; + + /** + * 发送模板邮件 + * + * @param title 标题 + * @param path 模板路径 + * @param map 填充数据 + * @param toEmails 收件人 + * @throws MessagingException MessagingException + * @throws IOException IOException + */ + void sendHtmlEmail(String title, String path, Map map, String[] toEmails) + throws MessagingException, IOException; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/FileRecordService.java b/src/main/java/com/gxwebsoft/common/system/service/FileRecordService.java new file mode 100644 index 0000000..3dd09ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/FileRecordService.java @@ -0,0 +1,58 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.param.FileRecordParam; + +import java.io.File; +import java.util.List; + +/** + * 文件上传记录Service + * + * @author WebSoft + * @since 2021-08-30 11:20:15 + */ +public interface FileRecordService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(FileRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(FileRecordParam param); + + /** + * 根据id查询 + * + * @param id id + * @return FileRecord + */ + FileRecord getByIdRel(Integer id); + + /** + * 根据path查询 + * + * @param path 文件路径 + * @return FileRecord + */ + FileRecord getByIdPath(String path); + + /** + * 异步删除文件 + * + * @param files 文件数组 + */ + void deleteFileAsync(List files); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/LoginRecordService.java b/src/main/java/com/gxwebsoft/common/system/service/LoginRecordService.java new file mode 100644 index 0000000..0c4adbf --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/LoginRecordService.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.param.LoginRecordParam; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 登录日志Service + * + * @author WebSoft + * @since 2018-12-24 16:10:41 + */ +public interface LoginRecordService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(LoginRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(LoginRecordParam param); + + /** + * 根据id查询 + * + * @param id id + * @return LoginRecord + */ + LoginRecord getByIdRel(Integer id); + + /** + * 异步添加 + * + * @param username 用户账号 + * @param type 操作类型 + * @param comments 备注 + * @param tenantId 租户id + * @param request HttpServletRequest + */ + void saveAsync(String username, Integer type, String comments, Integer tenantId, HttpServletRequest request); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/MenuService.java b/src/main/java/com/gxwebsoft/common/system/service/MenuService.java new file mode 100644 index 0000000..db8e967 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/MenuService.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.param.MenuParam; + +/** + * 菜单Service + * + * @author WebSoft + * @since 2018-12-24 16:10:31 + */ +public interface MenuService extends IService { + + Boolean cloneMenu(MenuParam param); + + Boolean install(Integer id); +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/OperationRecordService.java b/src/main/java/com/gxwebsoft/common/system/service/OperationRecordService.java new file mode 100644 index 0000000..227c4e6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/OperationRecordService.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.OperationRecord; +import com.gxwebsoft.common.system.param.OperationRecordParam; + +import java.util.List; + +/** + * 操作日志Service + * + * @author WebSoft + * @since 2018-12-24 16:10:01 + */ +public interface OperationRecordService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OperationRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OperationRecordParam param); + + /** + * 根据id查询 + * + * @param id id + * @return OperationRecord + */ + OperationRecord getByIdRel(Integer id); + + /** + * 异步添加 + * + * @param operationRecord OperationRecord + */ + void saveAsync(OperationRecord operationRecord); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/OrganizationService.java b/src/main/java/com/gxwebsoft/common/system/service/OrganizationService.java new file mode 100644 index 0000000..94d3407 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/OrganizationService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Organization; +import com.gxwebsoft.common.system.param.OrganizationParam; + +import java.util.List; + +/** + * 组织机构Service + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +public interface OrganizationService extends IService { + + /** + * 关联分页查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OrganizationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OrganizationParam param); + + /** + * 根据id查询 + * + * @param organizationId 机构id + * @return Organization + */ + Organization getByIdRel(Integer organizationId); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/PlugService.java b/src/main/java/com/gxwebsoft/common/system/service/PlugService.java new file mode 100644 index 0000000..18d1194 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/PlugService.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Plug; +import com.gxwebsoft.common.system.param.PlugParam; + +import java.util.List; + +/** + * 插件扩展Service + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +public interface PlugService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(PlugParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(PlugParam param); + + /** + * 根据id查询 + * + * @param menuId 菜单id + * @return Plug + */ + Plug getByIdRel(Integer menuId); + + Boolean cloneMenu(PlugParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/RoleMenuService.java b/src/main/java/com/gxwebsoft/common/system/service/RoleMenuService.java new file mode 100644 index 0000000..05a3d4f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/RoleMenuService.java @@ -0,0 +1,35 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; + +import java.util.List; + +/** + * 角色菜单Service + * + * @author WebSoft + * @since 2018-12-24 16:10:44 + */ +public interface RoleMenuService extends IService { + + /** + * 查询用户对应的菜单 + * + * @param userId 用户id + * @param menuType 菜单类型 + * @return List + */ + List listMenuByUserId(Integer userId, Integer menuType); + + /** + * 查询用户对应的菜单 + * + * @param roleIds 角色id + * @param menuType 菜单类型 + * @return List + */ + List listMenuByRoleIds(List roleIds, Integer menuType); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/RoleService.java b/src/main/java/com/gxwebsoft/common/system/service/RoleService.java new file mode 100644 index 0000000..3e76263 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/RoleService.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Role; + +/** + * 角色Service + * + * @author WebSoft + * @since 2018-12-24 16:10:32 + */ +public interface RoleService extends IService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/SettingService.java b/src/main/java/com/gxwebsoft/common/system/service/SettingService.java new file mode 100644 index 0000000..9432620 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/SettingService.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.common.system.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.param.SettingParam; +import com.wechat.pay.java.core.Config; + +import java.util.List; + +/** + * 系统设置Service + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +public interface SettingService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(SettingParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(SettingParam param); + + /** + * 根据id查询 + * + * @param settingId id + * @return Setting + */ + Setting getByIdRel(Integer settingId); + + /** + * 通过key获取设置内容 + * @param key key + * @return Setting + */ + JSONObject getBySettingKey(String key); + + Setting getData(String settingKey); + + JSONObject getCache(String key); + + void initConfig(Setting setting); + + Config getConfig(Integer tenantId); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/TenantService.java b/src/main/java/com/gxwebsoft/common/system/service/TenantService.java new file mode 100644 index 0000000..42614a4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/TenantService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; + +import java.util.List; + +/** + * 租户Service + * + * @author 科技小王子 + * @since 2023-07-17 17:49:53 + */ +public interface TenantService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TenantParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TenantParam param); + + /** + * 根据id查询 + * + * @param tenantId 租户id + * @return Tenant + */ + Tenant getByIdRel(Integer tenantId); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserFileService.java b/src/main/java/com/gxwebsoft/common/system/service/UserFileService.java new file mode 100644 index 0000000..2c8abe6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserFileService.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.UserFile; + +/** + * 用户文件Service + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +public interface UserFileService extends IService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java b/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java new file mode 100644 index 0000000..c87365b --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserRoleService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.UserRole; + +import java.util.List; + +/** + * 用户角色Service + * + * @author WebSoft + * @since 2018-12-24 16:10:35 + */ +public interface UserRoleService extends IService { + + /** + * 批量添加用户角色 + * + * @param userId 用户id + * @param roleIds 角色id集合 + * @return int + */ + int saveBatch(Integer userId, List roleIds); + + /** + * 根据用户id查询角色 + * + * @param userId 用户id + * @return List + */ + List listByUserId(Integer userId); + + /** + * 批量根据用户id查询角色 + * + * @param userIds 用户id集合 + * @return List + */ + List listByUserIds(List userIds); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/UserService.java b/src/main/java/com/gxwebsoft/common/system/service/UserService.java new file mode 100644 index 0000000..2a4f377 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/UserService.java @@ -0,0 +1,112 @@ +package com.gxwebsoft.common.system.service; + +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 org.springframework.security.core.userdetails.UserDetailsService; + +import java.util.List; + +/** + * 用户Service + * + * @author WebSoft + * @since 2018-12-24 16:10:52 + */ +public interface UserService extends IService, UserDetailsService { + + /** + * 关联分页查询用户 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserParam param); + + /** + * 关联查询全部用户 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserParam param); + void listRanking(UserParam param); + + /** + * 根据id查询用户 + * + * @param userId 用户id + * @return User + */ + User getByIdRel(Integer userId); + + /** + * 根据账号查询用户 + * + * @param username 账号 + * @return User + */ + User getByUsername(String username); + + /** + * 根据账号查询用户 + * + * @param username 账号 + * @param tenantId 租户id + * @return User + */ + User getByUsername(String username, Integer tenantId); + + /** + * 添加用户 + * + * @param user 用户信息 + * @return boolean + */ + boolean saveUser(User user); + + /** + * 修改用户 + * + * @param user 用户信息 + * @return boolean + */ + boolean updateUser(User user); + + /** + * 比较用户密码 + * + * @param dbPassword 数据库存储的密码 + * @param inputPassword 用户输入的密码 + * @return boolean + */ + boolean comparePassword(String dbPassword, String inputPassword); + + /** + * md5加密用户密码 + * + * @param password 密码明文 + * @return 密文 + */ + String encodePassword(String password); + + /** + * 跟进手机号码查询用户 + * @param phone 手机号码 + * @return 用户信息 + */ + User getByPhone(String phone); + + User getByUnionId(UserParam userParam); + + User getByOauthId(UserParam userParam); + + List listStatisticsRel(UserParam param); + + /** + * 更新会员不限租户 + * @param user 用户信息 + */ + void updateByUserId(User user); +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/AccessKeyServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/AccessKeyServiceImpl.java new file mode 100644 index 0000000..2f02e25 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/AccessKeyServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.mapper.AccessKeyMapper; +import com.gxwebsoft.common.system.service.AccessKeyService; +import com.gxwebsoft.common.system.entity.AccessKey; +import com.gxwebsoft.common.system.param.AccessKeyParam; +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-05-16 19:19:55 + */ +@Service +public class AccessKeyServiceImpl extends ServiceImpl implements AccessKeyService { + + @Override + public PageResult pageRel(AccessKeyParam 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(AccessKeyParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public AccessKey getByIdRel(Integer id) { + AccessKeyParam param = new AccessKeyParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyServiceImpl.java new file mode 100644 index 0000000..4ed419d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/CompanyServiceImpl.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.common.system.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.entity.Company; +import com.gxwebsoft.common.system.mapper.CompanyMapper; +import com.gxwebsoft.common.system.param.CompanyParam; +import com.gxwebsoft.common.system.service.CompanyService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 企业信息Service实现 + * + * @author 科技小王子 + * @since 2023-05-27 14:57:34 + */ +@Service +public class CompanyServiceImpl extends ServiceImpl implements CompanyService { + + @Override + public PageResult pageRel(CompanyParam 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(CompanyParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Company getByIdRel(Integer companyId) { + CompanyParam param = new CompanyParam(); + param.setCompanyId(companyId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public Company getByTenantIdRel(Integer tenantId) { + CompanyParam param = new CompanyParam(); +// final Company one = param.getOne(baseMapper.selectListRel(param)); + param.setAuthoritative(true); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/DictDataServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/DictDataServiceImpl.java new file mode 100644 index 0000000..e30a0fe --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/DictDataServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.mapper.DictDataMapper; +import com.gxwebsoft.common.system.param.DictDataParam; +import com.gxwebsoft.common.system.service.DictDataService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 字典数据Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Service +public class DictDataServiceImpl extends ServiceImpl + implements DictDataService { + + @Override + public PageResult pageRel(DictDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(DictDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public DictData getByIdRel(Integer dictDataId) { + DictDataParam param = new DictDataParam(); + param.setDictDataId(dictDataId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public DictData getByDictCodeAndName(String dictCode, String dictDataName) { + List list = baseMapper.getByDictCodeAndName(dictCode, dictDataName); + return CommonUtil.listGetOne(list); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/DictServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/DictServiceImpl.java new file mode 100644 index 0000000..6b09f90 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/DictServiceImpl.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Dict; +import com.gxwebsoft.common.system.mapper.DictMapper; +import com.gxwebsoft.common.system.service.DictService; +import org.springframework.stereotype.Service; + +/** + * 字典Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Service +public class DictServiceImpl extends ServiceImpl implements DictService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryDataServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryDataServiceImpl.java new file mode 100644 index 0000000..0f26dd2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryDataServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.mapper.DictionaryDataMapper; +import com.gxwebsoft.common.system.param.DictionaryDataParam; +import com.gxwebsoft.common.system.service.DictionaryDataService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 字典数据Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Service +public class DictionaryDataServiceImpl extends ServiceImpl + implements DictionaryDataService { + + @Override + public PageResult pageRel(DictionaryDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(DictionaryDataParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public DictionaryData getByIdRel(Integer dictDataId) { + DictionaryDataParam param = new DictionaryDataParam(); + param.setDictDataId(dictDataId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public DictionaryData getByDictCodeAndName(String dictCode, String dictDataName) { + List list = baseMapper.getByDictCodeAndName(dictCode, dictDataName); + return CommonUtil.listGetOne(list); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryServiceImpl.java new file mode 100644 index 0000000..74d6fe1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/DictionaryServiceImpl.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Dictionary; +import com.gxwebsoft.common.system.mapper.DictionaryMapper; +import com.gxwebsoft.common.system.service.DictionaryService; +import org.springframework.stereotype.Service; + +/** + * 字典Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Service +public class DictionaryServiceImpl extends ServiceImpl implements DictionaryService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/EmailRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/EmailRecordServiceImpl.java new file mode 100644 index 0000000..a939a3d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/EmailRecordServiceImpl.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.EmailRecord; +import com.gxwebsoft.common.system.mapper.EmailRecordMapper; +import com.gxwebsoft.common.system.service.EmailRecordService; +import org.beetl.core.Configuration; +import org.beetl.core.GroupTemplate; +import org.beetl.core.Template; +import org.beetl.core.resource.ClasspathResourceLoader; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import java.io.IOException; +import java.util.Map; + +/** + * 邮件发送记录Service实现 + * + * @author WebSoft + * @since 2019-06-19 04:07:54 + */ +@Service +public class EmailRecordServiceImpl extends ServiceImpl + implements EmailRecordService { + // 发件邮箱 + @Value("${spring.mail.username}") + private String formEmail; + @Resource + private JavaMailSender mailSender; + + @Override + public void sendTextEmail(String title, String content, String[] toEmails) { + SimpleMailMessage message = new SimpleMailMessage(); + message.setFrom(formEmail); + message.setTo(toEmails); + message.setSubject(title); + message.setText(content); + mailSender.send(message); + } + + @Override + public void sendFullTextEmail(String title, String html, String[] toEmails) throws MessagingException { + MimeMessage mimeMessage = mailSender.createMimeMessage(); + MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true); + helper.setFrom(formEmail); + helper.setTo(toEmails); + helper.setSubject(title); + // 发送邮件 + helper.setText(html, true); + mailSender.send(mimeMessage); + } + + @Override + public void sendHtmlEmail(String title, String path, Map map, String[] toEmails) + throws MessagingException, IOException { + ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader("templates/"); + Configuration cfg = Configuration.defaultConfiguration(); + GroupTemplate gt = new GroupTemplate(resourceLoader, cfg); + Template t = gt.getTemplate(path); // 加载html模板 + t.binding(map); // 填充数据 + String html = t.render(); // 获得渲染后的html + sendFullTextEmail(title, html, toEmails); // 发送邮件 + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java new file mode 100644 index 0000000..72c9c27 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/FileRecordServiceImpl.java @@ -0,0 +1,63 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.mapper.FileRecordMapper; +import com.gxwebsoft.common.system.param.FileRecordParam; +import com.gxwebsoft.common.system.service.FileRecordService; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.util.List; + +/** + * 文件上传记录Service实现 + * + * @author WebSoft + * @since 2021-08-30 11:21:01 + */ +@Service +public class FileRecordServiceImpl extends ServiceImpl implements FileRecordService { + + @Override + public PageResult pageRel(FileRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(FileRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public FileRecord getByIdRel(Integer id) { + FileRecordParam param = new FileRecordParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public FileRecord getByIdPath(String path) { + return CommonUtil.listGetOne(baseMapper.getByIdPath(path)); + } + + @Async + @Override + public void deleteFileAsync(List files) { + for (File file : files) { + try { + file.delete(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/LoginRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/LoginRecordServiceImpl.java new file mode 100644 index 0000000..28497e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/LoginRecordServiceImpl.java @@ -0,0 +1,78 @@ +package com.gxwebsoft.common.system.service.impl; + +import cn.hutool.extra.servlet.ServletUtil; +import cn.hutool.http.useragent.UserAgent; +import cn.hutool.http.useragent.UserAgentUtil; +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.entity.LoginRecord; +import com.gxwebsoft.common.system.mapper.LoginRecordMapper; +import com.gxwebsoft.common.system.param.LoginRecordParam; +import com.gxwebsoft.common.system.service.LoginRecordService; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 登录日志Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:14 + */ +@Service +public class LoginRecordServiceImpl extends ServiceImpl + implements LoginRecordService { + + @Override + public PageResult pageRel(LoginRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(LoginRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public LoginRecord getByIdRel(Integer id) { + LoginRecordParam param = new LoginRecordParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Async + @Override + public void saveAsync(String username, Integer type, String comments, Integer tenantId, + HttpServletRequest request) { + if (username == null) { + return; + } + LoginRecord loginRecord = new LoginRecord(); + loginRecord.setUsername(username); + loginRecord.setLoginType(type); + loginRecord.setComments(comments); + loginRecord.setTenantId(tenantId); + UserAgent ua = UserAgentUtil.parse(ServletUtil.getHeaderIgnoreCase(request, "User-Agent")); + if (ua != null) { + if (ua.getPlatform() != null) { + loginRecord.setOs(ua.getPlatform().toString()); + } + if (ua.getOs() != null) { + loginRecord.setDevice(ua.getOs().toString()); + } + if (ua.getBrowser() != null) { + loginRecord.setBrowser(ua.getBrowser().toString()); + } + } + loginRecord.setIp(ServletUtil.getClientIP(request)); + baseMapper.insert(loginRecord); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/MenuServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..7fda6bc --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/MenuServiceImpl.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.mapper.MenuMapper; +import com.gxwebsoft.common.system.param.MenuParam; +import com.gxwebsoft.common.system.service.MenuService; +import com.gxwebsoft.common.system.service.RoleMenuService; +import com.gxwebsoft.common.system.service.RoleService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 菜单Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:10 + */ +@Service +public class MenuServiceImpl extends ServiceImpl implements MenuService { + private Integer plugMenuId; + @Resource + private RoleService roleService; + @Resource + private RoleMenuService roleMenuService; + + @Override + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + public Boolean cloneMenu(MenuParam param) { + System.out.println("准备待克隆的菜单数据 = " + param); + // 删除本项目菜单 + baseMapper.delete(new LambdaQueryWrapper().eq(Menu::getDeleted,0)); + // 顶级栏目 + param.setParentId(0); +// final List list = baseMapper.getMenuByClone(param); +//// final List menuIds = list.stream().map(Menu::getMenuId).collect(Collectors.toList()); + doCloneMenu(baseMapper.getMenuByClone(param)); + return true; + } + + @Override + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + public Boolean install(Integer id) { + // 1.插件绑定的菜单ID + final MenuParam param = new MenuParam(); + param.setMenuId(id); + final List list = baseMapper.getMenuByClone(param); + // TODO 克隆当前插件到顶级菜单 + doCloneMenu(list); + + // 2.查找当前租户的超管权限的roleId + final Role superAdmin = roleService.getOne(new LambdaQueryWrapper().eq(Role::getRoleCode, "superAdmin")); + final Integer roleId = superAdmin.getRoleId(); + final Integer tenantId = superAdmin.getTenantId(); + // 3.勾选菜单根权限 + final RoleMenu roleMenu0 = new RoleMenu(); + roleMenu0.setRoleId(roleId); + roleMenu0.setMenuId(this.plugMenuId); + roleMenuService.save(roleMenu0); + + // 4.勾选根节点下的子菜单权限 + final MenuParam menuParam = new MenuParam(); + menuParam.setParentId(this.plugMenuId); + menuParam.setTenantId(tenantId); + final List menuList = baseMapper.getMenuByClone(menuParam); + menuList.forEach(d->{ + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(d.getMenuId()); + roleMenuService.save(roleMenu); + }); + // 5.调整新插件的排序 + final Menu menu = baseMapper.selectById(this.plugMenuId); + menu.setSortNumber(100); + baseMapper.updateById(menu); + return true; + } + + // 克隆菜单 + private void doCloneMenu(List list) { + final MenuParam param = new MenuParam(); + list.forEach(d -> { + Menu menu = new Menu(); + menu.setParentId(0); + menu.setTitle(d.getTitle()); + menu.setPath(d.getPath()); + menu.setComponent(d.getComponent()); + menu.setMenuType(d.getMenuType()); + menu.setSortNumber(d.getSortNumber()); + menu.setAuthority(d.getAuthority()); + menu.setIcon(d.getIcon()); + menu.setHide(d.getHide()); + menu.setMeta(d.getMeta()); + save(menu); + this.plugMenuId = menu.getMenuId(); + // 二级菜单 + param.setParentId(d.getMenuId()); + final List list1 = baseMapper.getMenuByClone(param); + list1.forEach(d1 -> { + final Menu menu1 = new Menu(); + menu1.setParentId(menu.getMenuId()); + menu1.setTitle(d1.getTitle()); + menu1.setPath(d1.getPath()); + menu1.setComponent(d1.getComponent()); + menu1.setMenuType(d1.getMenuType()); + menu1.setSortNumber(d1.getSortNumber()); + menu1.setAuthority(d1.getAuthority()); + menu1.setIcon(d1.getIcon()); + menu1.setHide(d1.getHide()); + menu1.setMeta(d1.getMeta()); + save(menu1); + // 三级菜单 + param.setParentId(d1.getMenuId()); + final List list2 = baseMapper.getMenuByClone(param); + list2.forEach(d2 -> { + final Menu menu2 = new Menu(); + menu2.setParentId(menu1.getMenuId()); + menu2.setTitle(d2.getTitle()); + menu2.setPath(d2.getPath()); + menu2.setComponent(d2.getComponent()); + menu2.setMenuType(d2.getMenuType()); + menu2.setSortNumber(d2.getSortNumber()); + menu2.setAuthority(d2.getAuthority()); + menu2.setIcon(d2.getIcon()); + menu2.setHide(d2.getHide()); + menu2.setMeta(d2.getMeta()); + save(menu2); + }); + }); + }); + } +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/OperationRecordServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/OperationRecordServiceImpl.java new file mode 100644 index 0000000..8095bf4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/OperationRecordServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.common.system.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.entity.OperationRecord; +import com.gxwebsoft.common.system.mapper.OperationRecordMapper; +import com.gxwebsoft.common.system.param.OperationRecordParam; +import com.gxwebsoft.common.system.service.OperationRecordService; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 操作日志Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:02 + */ +@Service +public class OperationRecordServiceImpl extends ServiceImpl + implements OperationRecordService { + + @Override + public PageResult pageRel(OperationRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(OperationRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public OperationRecord getByIdRel(Integer id) { + OperationRecordParam param = new OperationRecordParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Async + @Override + public void saveAsync(OperationRecord operationRecord) { + baseMapper.insert(operationRecord); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/OrganizationServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/OrganizationServiceImpl.java new file mode 100644 index 0000000..b2bb53f --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/OrganizationServiceImpl.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.common.system.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.entity.Organization; +import com.gxwebsoft.common.system.mapper.OrganizationMapper; +import com.gxwebsoft.common.system.param.OrganizationParam; +import com.gxwebsoft.common.system.service.OrganizationService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 组织机构Service实现 + * + * @author WebSoft + * @since 2020-03-14 11:29:04 + */ +@Service +public class OrganizationServiceImpl extends ServiceImpl + implements OrganizationService { + + @Override + public PageResult pageRel(OrganizationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return new PageResult<>(baseMapper.selectPageRel(page, param), page.getTotal()); + } + + @Override + public List listRel(OrganizationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return page.sortRecords(baseMapper.selectListRel(param)); + } + + @Override + public Organization getByIdRel(Integer organizationId) { + OrganizationParam param = new OrganizationParam(); + param.setOrganizationId(organizationId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/PlugServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/PlugServiceImpl.java new file mode 100644 index 0000000..c328274 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/PlugServiceImpl.java @@ -0,0 +1,112 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.entity.Plug; +import com.gxwebsoft.common.system.mapper.PlugMapper; +import com.gxwebsoft.common.system.param.PlugParam; +import com.gxwebsoft.common.system.service.PlugService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * 插件扩展Service实现 + * + * @author 科技小王子 + * @since 2023-05-18 11:57:37 + */ +@Service +public class PlugServiceImpl extends ServiceImpl implements PlugService { + + @Override + public PageResult pageRel(PlugParam 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(PlugParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Plug getByIdRel(Integer menuId) { + PlugParam param = new PlugParam(); + param.setMenuId(menuId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + public Boolean cloneMenu(PlugParam param) { + System.out.println("准备待克隆的菜单数据 = " + param); + // 删除本项目菜单 + baseMapper.delete(new LambdaQueryWrapper().eq(Plug::getDeleted,0)); + // 顶级栏目 + param.setParentId(0); + final List list = baseMapper.getMenuByClone(param); +// final List menuIds = list.stream().map(Menu::getMenuId).collect(Collectors.toList()); + + list.forEach(d -> { + Plug plug = new Plug(); + plug.setParentId(0); + plug.setTitle(d.getTitle()); + plug.setPath(d.getPath()); + plug.setComponent(d.getComponent()); + plug.setMenuType(d.getMenuType()); + plug.setSortNumber(d.getSortNumber()); + plug.setAuthority(d.getAuthority()); + plug.setIcon(d.getIcon()); + plug.setHide(d.getHide()); + plug.setMeta(d.getMeta()); + save(plug); + // 二级菜单 + param.setParentId(d.getMenuId()); + final List list1 = baseMapper.getMenuByClone(param); + list1.forEach(d1 -> { + final Plug menu1 = new Plug(); + menu1.setParentId(plug.getMenuId()); + menu1.setTitle(d1.getTitle()); + menu1.setPath(d1.getPath()); + menu1.setComponent(d1.getComponent()); + menu1.setMenuType(d1.getMenuType()); + menu1.setSortNumber(d1.getSortNumber()); + menu1.setAuthority(d1.getAuthority()); + menu1.setIcon(d1.getIcon()); + menu1.setHide(d1.getHide()); + menu1.setMeta(d1.getMeta()); + save(menu1); + // 三级菜单 + param.setParentId(d1.getMenuId()); + final List list2 = baseMapper.getMenuByClone(param); + list2.forEach(d2 -> { + final Plug menu2 = new Plug(); + menu2.setParentId(menu1.getMenuId()); + menu2.setTitle(d2.getTitle()); + menu2.setPath(d2.getPath()); + menu2.setComponent(d2.getComponent()); + menu2.setMenuType(d2.getMenuType()); + menu2.setSortNumber(d2.getSortNumber()); + menu2.setAuthority(d2.getAuthority()); + menu2.setIcon(d2.getIcon()); + menu2.setHide(d2.getHide()); + menu2.setMeta(d2.getMeta()); + save(menu2); + }); + }); + }); + return true; + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/RoleMenuServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/RoleMenuServiceImpl.java new file mode 100644 index 0000000..737c5e3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/RoleMenuServiceImpl.java @@ -0,0 +1,31 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.mapper.RoleMenuMapper; +import com.gxwebsoft.common.system.service.RoleMenuService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 角色菜单Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:12 + */ +@Service +public class RoleMenuServiceImpl extends ServiceImpl implements RoleMenuService { + + @Override + public List listMenuByUserId(Integer userId, Integer menuType) { + return baseMapper.listMenuByUserId(userId, menuType); + } + + @Override + public List listMenuByRoleIds(List roleIds, Integer menuType) { + return baseMapper.listMenuByRoleIds(roleIds, menuType); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/RoleServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..f543abd --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/RoleServiceImpl.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.mapper.RoleMapper; +import com.gxwebsoft.common.system.service.RoleService; +import org.springframework.stereotype.Service; + +/** + * 角色服务实现类 + * + * @author WebSoft + * @since 2018-12-24 16:10:11 + */ +@Service +public class RoleServiceImpl extends ServiceImpl implements RoleService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/SettingServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/SettingServiceImpl.java new file mode 100644 index 0000000..702c265 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/SettingServiceImpl.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.mapper.SettingMapper; +import com.gxwebsoft.common.system.param.SettingParam; +import com.gxwebsoft.common.system.service.SettingService; +import com.wechat.pay.java.core.Config; +import com.wechat.pay.java.core.RSAConfig; +import com.wechat.pay.java.service.payments.jsapi.JsapiService; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 系统设置Service实现 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Service +public class SettingServiceImpl extends ServiceImpl implements SettingService { + // 本地缓存 + public static Map configMap = new HashMap<>(); + public static JsapiService service = null; + public static Config config = null; + @Resource + private ConfigProperties pathConfig; + @Resource + private StringRedisTemplate stringRedisTemplate; + + @Override + public PageResult pageRel(SettingParam 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(SettingParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Setting getByIdRel(Integer settingId) { + SettingParam param = new SettingParam(); + param.setSettingId(settingId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public JSONObject getBySettingKey(String key) { + Setting setting = this.getOne(new QueryWrapper().eq("setting_key", key), false); + if(setting == null){ + if ("mp-weixin".equals(key)) { + throw new BusinessException("小程序未配置"); + } + if ("payment".equals(key)) { + throw new BusinessException("支付未配置"); + } + if ("sms".equals(key)) { + throw new BusinessException("短信未配置"); + } + if ("wx-work".equals(key)){ + throw new BusinessException("企业微信未配置"); + } + if ("setting".equals(key)) { + throw new BusinessException("基本信息未配置"); + } + if ("wx-official".equals(key)) { + throw new BusinessException("微信公众号未配置"); + } + if ("printer".equals(key)) { + throw new BusinessException("打印机未配置"); + } + } + return JSON.parseObject(setting.getContent()); + } + + @Override + public Setting getData(String settingKey) { + return query().eq("setting_key", settingKey).one(); + } + + @Override + public JSONObject getCache(String key) { + final String cache = stringRedisTemplate.opsForValue().get(key); + final JSONObject jsonObject = JSONObject.parseObject(cache); + if(jsonObject == null){ + throw new BusinessException("域名未配置"); + } + return jsonObject; + } + + @Override + public void initConfig(Setting data) { + if (data.getSettingKey().equals("payment")) { + final JSONObject jsonObject = JSONObject.parseObject(data.getContent()); + final String mchId = jsonObject.getString("mchId"); + final String apiclientKey = jsonObject.getString("apiclientKey"); + final String privateKey = pathConfig.getUploadPath().concat("file").concat(apiclientKey); + final String apiclientCert = pathConfig.getUploadPath().concat("file").concat(jsonObject.getString("apiclientCert")); + final String merchantSerialNumber = jsonObject.getString("merchantSerialNumber"); + final String apiV3key = jsonObject.getString("wechatApiKey"); + if(config == null){ +// config = new RSAAutoCertificateConfig.Builder() +// .merchantId(mchId) +// .privateKeyFromPath("/Users/gxwebsoft/Documents/uploads/file/20230622/fb193d3bfff0467b83dc498435a4f433.pem") +// .merchantSerialNumber(merchantSerialNumber) +// .apiV3Key(apiV3key) +// .build(); + config = + new RSAConfig.Builder() + .merchantId("1246610101") + .privateKeyFromPath("/Users/gxwebsoft/Documents/uploads/file/20230622/fb193d3bfff0467b83dc498435a4f433.pem") + .merchantSerialNumber("2903B872D5CA36E525FAEC37AEDB22E54ECDE7B7") + .wechatPayCertificatesFromPath("/Users/gxwebsoft/Documents/uploads/file/20230622/23329e924dae41af9b716825626dd44b.pem") + .build(); + configMap.put(data.getTenantId().toString(),config); + System.out.println("config = " + config); + } + if (service == null) { + service = new JsapiService.Builder().config(config).build(); + } + } + } + + @Override + public Config getConfig(Integer tenantId) { + if(configMap.get(tenantId.toString()) == null){ + final Setting payment = getOne(new LambdaQueryWrapper().eq(Setting::getSettingKey, "payment")); + this.initConfig(payment); + return configMap.get(tenantId.toString()); + } + return configMap.get(tenantId.toString()); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java new file mode 100644 index 0000000..99c423e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/TenantServiceImpl.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.mapper.TenantMapper; +import com.gxwebsoft.common.system.service.TenantService; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; +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-07-17 17:49:53 + */ +@Service +public class TenantServiceImpl extends ServiceImpl implements TenantService { + + @Override + public PageResult pageRel(TenantParam 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(TenantParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Tenant getByIdRel(Integer tenantId) { + TenantParam param = new TenantParam(); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserFileServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserFileServiceImpl.java new file mode 100644 index 0000000..b5712c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserFileServiceImpl.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.mapper.UserFileMapper; +import com.gxwebsoft.common.system.service.UserFileService; +import com.gxwebsoft.common.system.entity.UserFile; +import org.springframework.stereotype.Service; + +/** + * 用户文件Service实现 + * + * @author WebSoft + * @since 2022-07-21 14:34:40 + */ +@Service +public class UserFileServiceImpl extends ServiceImpl implements UserFileService { + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java new file mode 100644 index 0000000..a2a3d11 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserRoleServiceImpl.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.mapper.UserRoleMapper; +import com.gxwebsoft.common.system.service.UserRoleService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 用户角色Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:36 + */ +@Service +public class UserRoleServiceImpl extends ServiceImpl implements UserRoleService { + + + @Override + public int saveBatch(Integer userId, List roleIds) { + return baseMapper.insertBatch(userId, roleIds); + } + + @Override + public List listByUserId(Integer userId) { + return baseMapper.selectByUserId(userId); + } + + @Override + public List listByUserIds(List userIds) { + return baseMapper.selectByUserIds(userIds); + } + +} 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 new file mode 100644 index 0000000..c3bc1ad --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/UserServiceImpl.java @@ -0,0 +1,344 @@ +package com.gxwebsoft.common.system.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.RedisUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.mapper.UserMapper; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.service.*; +import com.gxwebsoft.love.entity.UserPlanEquity; +import com.gxwebsoft.love.entity.UserProfile; +import com.gxwebsoft.love.param.UserProfileParam; +import com.gxwebsoft.love.service.UserPlanEquityService; +import com.gxwebsoft.love.service.UserProfileService; +import com.gxwebsoft.oa.entity.App; +import com.gxwebsoft.oa.service.AppService; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.entity.MerchantClerk; +import com.gxwebsoft.shop.service.MerchantClerkService; +import com.gxwebsoft.shop.service.MerchantService; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.RedisConstants.TEN_ANT_SETTING_KEY; +import static com.gxwebsoft.common.core.constants.RedisConstants.USER_RANKING_BY_APPS; + +/** + * 用户Service实现 + * + * @author WebSoft + * @since 2018-12-24 16:10:14 + */ +@Service +public class UserServiceImpl extends ServiceImpl implements UserService { + @Resource + private UserRoleService userRoleService; + @Resource + private RoleMenuService roleMenuService; + @Resource + private BCryptPasswordEncoder bCryptPasswordEncoder; + @Resource + private MerchantService merchantService; + @Resource + private MerchantClerkService merchantClerkService; + @Resource + private CacheClient cacheClient; + @Resource + private AppService appService; + @Resource + private TenantService tenantService; + @Resource + private CompanyService companyService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private RedisUtil redisUtil; + @Resource + private UserProfileService userProfileService; + + @Resource + private UserPlanEquityService userPlanEquityService; + + @Override + public PageResult pageRel(UserParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + // 查询用户的角色 + selectUserRoles(list); + // 查询用户详细资料 + if (param.getShowProfile() != null) { + selectUserProfile(list); + } + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(UserParam param) { + List list = baseMapper.selectListRel(param); + // 查询用户的角色 + selectUserRoles(list); + // 排序 + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public void listRanking(UserParam param) { + List list = baseMapper.selectListRel(param); + Map map = new HashMap<>(); + list.forEach(d -> { + int count = appService.count(new LambdaQueryWrapper() + .eq(App::getUserId, d.getUserId())); + // 更新全部用户的插件数量 + cacheClient.zAdd(USER_RANKING_BY_APPS, d.getUserId(), (double) count); + }); + } + + @Override + public User getByIdRel(Integer userId) { + UserParam param = new UserParam(); + param.setUserId(userId); + User user = param.getOne(baseMapper.selectListRel(param)); + if (user != null) { + user.setRoles(userRoleService.listByUserId(user.getUserId())); + user.setAuthorities(roleMenuService.listMenuByUserId(user.getUserId(), null)); + // 系统配置信息 + Map map = new HashMap<>(); + // 1)基本信息 + final String setting = redisUtil.get("setting:setting:" + user.getTenantId()); + if(setting != null){ + final JSONObject site = JSONObject.parseObject(setting); + map.put("siteName",site.getString("siteName")); + map.put("remarks",site.getString("remarks")); + map.put("keyword",site.getString("keyword")); + map.put("icp",site.getString("icp")); + map.put("copyright",site.getString("copyright")); + map.put("company",site.getString("company")); + map.put("address",site.getString("address")); + map.put("phone",site.getString("phone")); + map.put("email",site.getString("email")); + map.put("domain",site.getString("domain")); + map.put("support",site.getString("support")); + map.put("logo",site.getString("logo")); + } + // 2)云存储 + String key = "setting:upload:" + user.getTenantId(); + final String upload = redisUtil.get(key); + if(upload != null){ + final JSONObject object = JSONObject.parseObject(upload); + map.put("uploadMethod",object.getString("uploadMethod")); + map.put("bucketDomain",object.getString("bucketDomain")); + map.put("fileUrl",object.getString("fileUrl") + "/"); + user.setSystem(map); + } + // 企业信息 + String key2 = "company:authoritative:" + user.getTenantId(); + final Company company = redisUtil.get(key2, Company.class); + user.setCompanyInfo(company); + user.setSystem(map); + // 商户编号 + Merchant merchant = merchantService.getOne(new QueryWrapper() + .eq("merchant_owner", user.getUserId()), false); + if (merchant != null) { + user.setMerchantCode(merchant.getMerchantCode()); + user.setMerchantName(merchant.getMerchantName()); + } else { + MerchantClerk clerk = merchantClerkService.getOne(new QueryWrapper().eq("user_id", user.getUserId()), false); + if (clerk != null) { + user.setMerchantCode(clerk.getMerchantCode()); + } + } + + // 我的权益 + List userPlanEquityList = userPlanEquityService.list(new LambdaQueryWrapper() + .eq(UserPlanEquity::getUserId, userId) + .gt(UserPlanEquity::getExpirationTime, LocalDateTime.now())); + user.setUserPlanEquityList(userPlanEquityList); + + } + return user; + } + + @Override + public User getByUsername(String username) { + return getByUsername(username, null); + } + + @Override + public User getByUsername(String username, Integer tenantId) { + if (StrUtil.isBlank(username)) { + return null; + } + User user = baseMapper.selectByUsername(username, tenantId); + if (user != null) { + user.setRoles(userRoleService.listByUserId(user.getUserId())); + user.setAuthorities(roleMenuService.listMenuByUserId(user.getUserId(), null)); + } + return user; + } + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + return getByUsername(username); + } + + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + @Override + public boolean saveUser(User user) { + if (StrUtil.isNotEmpty(user.getUsername()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getUsername, user.getUsername())) > 0) { + throw new BusinessException("账号已存在"); + } + if (StrUtil.isNotEmpty(user.getPhone()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getPhone, user.getPhone())) > 0) { + throw new BusinessException("手机号已存在"); + } + if (StrUtil.isNotEmpty(user.getEmail()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getEmail, user.getEmail())) > 0) { + throw new BusinessException("邮箱已存在"); + } + boolean result = baseMapper.insert(user) > 0; + if (result && user.getRoles() != null && user.getRoles().size() > 0) { + List roleIds = user.getRoles().stream().map(Role::getRoleId).collect(Collectors.toList()); + if (userRoleService.saveBatch(user.getUserId(), roleIds) < roleIds.size()) { + throw new BusinessException("用户角色添加失败"); + } + } + return result; + } + + @Transactional(rollbackFor = {Exception.class}) + @Override + public boolean updateUser(User user) { + if (StrUtil.isNotEmpty(user.getUsername()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getUsername, user.getUsername()) + .ne(User::getUserId, user.getUserId())) > 0) { + throw new BusinessException("账号已存在"); + } + if (StrUtil.isNotEmpty(user.getPhone()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getPhone, user.getPhone()) + .ne(User::getUserId, user.getUserId())) > 0) { + throw new BusinessException("手机号已存在"); + } + if (StrUtil.isNotEmpty(user.getEmail()) && baseMapper.selectCount(new LambdaQueryWrapper() + .eq(User::getEmail, user.getEmail()) + .ne(User::getUserId, user.getUserId())) > 0) { + throw new BusinessException("邮箱已存在"); + } + boolean result = baseMapper.updateById(user) > 0; + if (result && user.getRoles() != null && user.getRoles().size() > 0) { + userRoleService.remove(new LambdaUpdateWrapper().eq(UserRole::getUserId, user.getUserId())); + List roleIds = user.getRoles().stream().map(Role::getRoleId).collect(Collectors.toList()); + if (userRoleService.saveBatch(user.getUserId(), roleIds) < roleIds.size()) { + throw new BusinessException("用户角色添加失败"); + } + } + return result; + } + + @Override + public boolean comparePassword(String dbPassword, String inputPassword) { + return bCryptPasswordEncoder.matches(inputPassword, dbPassword); + } + + @Override + public String encodePassword(String password) { + return password == null ? null : bCryptPasswordEncoder.encode(password); + } + + @Override + public User getByPhone(String phone) { + return query().eq("phone", phone).one(); + } + + @Override + public User getByUnionId(UserParam param) { + return param.getOne(baseMapper.getOne(param)); + } + + @Override + public User getByOauthId(UserParam userParam) { + return userParam.getOne(baseMapper.getOne(userParam)); + } + + @Override + public List listStatisticsRel(UserParam param) { + List list = baseMapper.selectListStatisticsRel(param); + return list; + } + + /** + * 更新用户信息(跨租户) + * + * @param user 用户信息 + */ + @Override + public void updateByUserId(User user) { + baseMapper.updateByUserId(user); + } + + /** + * 批量查询用户的角色 + * + * @param users 用户集合 + */ + private void selectUserRoles(List users) { + if (users != null && users.size() > 0) { + List userIds = users.stream().map(User::getUserId).collect(Collectors.toList()); + List userRoles = userRoleService.listByUserIds(userIds); + for (User user : users) { + List roles = userRoles.stream().filter(d -> user.getUserId().equals(d.getUserId())) + .collect(Collectors.toList()); + user.setRoles(roles); + } + } + } + + /** + * 批量查询用户的详细资料 + * + * @param users 用户集合 + */ + private void selectUserProfile(List users) { + if (users != null && users.size() > 0) { + Set userIds = users.stream().map(User::getUserId).collect(Collectors.toSet()); + final UserProfileParam userProfileParam = new UserProfileParam(); + userProfileParam.setUserIds(userIds); + final List userProfiles = userProfileService.listRel(userProfileParam); + final Map> collect = userProfiles.stream().collect(Collectors.groupingBy(UserProfile::getUserId)); + for (User user: users){ + final List list = collect.get(user.getUserId()); + if (!CollectionUtils.isEmpty(list)) { + final UserProfile profile = collect.get(user.getUserId()).get(0); + user.setUserProfile(profile); + } + } + } + } + +} diff --git a/src/main/java/com/gxwebsoft/house/controller/InfoController.java b/src/main/java/com/gxwebsoft/house/controller/InfoController.java new file mode 100644 index 0000000..f5eb202 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/controller/InfoController.java @@ -0,0 +1,132 @@ +package com.gxwebsoft.house.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.house.service.InfoService; +import com.gxwebsoft.house.entity.Info; +import com.gxwebsoft.house.param.InfoParam; +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-03 18:23:43 + */ +@Api(tags = "房源信息表管理") +@RestController +@RequestMapping("/api/house/info") +public class InfoController extends BaseController { + @Resource + private InfoService infoService; + + @PreAuthorize("hasAuthority('house:info:list')") + @OperationLog + @ApiOperation("分页查询房源信息表") + @GetMapping("/page") + public ApiResult> page(InfoParam param) { + // 使用关联查询 + return success(infoService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('house:info:list')") + @OperationLog + @ApiOperation("查询全部房源信息表") + @GetMapping() + public ApiResult> list(InfoParam param) { + // 使用关联查询 + return success(infoService.listRel(param)); + } + + @PreAuthorize("hasAuthority('house:info:list')") + @OperationLog + @ApiOperation("根据id查询房源信息表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(infoService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('house:info:save')") + @OperationLog + @ApiOperation("添加房源信息表") + @PostMapping() + public ApiResult save(@RequestBody Info info) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + info.setUserId(loginUser.getUserId()); + } + if (infoService.save(info)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:info:update')") + @OperationLog + @ApiOperation("修改房源信息表") + @PutMapping() + public ApiResult update(@RequestBody Info info) { + if (infoService.updateById(info)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:info:remove')") + @OperationLog + @ApiOperation("删除房源信息表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (infoService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('house:info:save')") + @OperationLog + @ApiOperation("批量添加房源信息表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (infoService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:info:update')") + @OperationLog + @ApiOperation("批量修改房源信息表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(infoService, "house_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:info:remove')") + @OperationLog + @ApiOperation("批量删除房源信息表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (infoService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/controller/ReservationController.java b/src/main/java/com/gxwebsoft/house/controller/ReservationController.java new file mode 100644 index 0000000..d0baf07 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/controller/ReservationController.java @@ -0,0 +1,132 @@ +package com.gxwebsoft.house.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.house.service.ReservationService; +import com.gxwebsoft.house.entity.Reservation; +import com.gxwebsoft.house.param.ReservationParam; +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-03 18:23:43 + */ +@Api(tags = "预约记录表管理") +@RestController +@RequestMapping("/api/house/reservation") +public class ReservationController extends BaseController { + @Resource + private ReservationService reservationService; + + @PreAuthorize("hasAuthority('house:reservation:list')") + @OperationLog + @ApiOperation("分页查询预约记录表") + @GetMapping("/page") + public ApiResult> page(ReservationParam param) { + // 使用关联查询 + return success(reservationService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('house:reservation:list')") + @OperationLog + @ApiOperation("查询全部预约记录表") + @GetMapping() + public ApiResult> list(ReservationParam param) { + // 使用关联查询 + return success(reservationService.listRel(param)); + } + + @PreAuthorize("hasAuthority('house:reservation:list')") + @OperationLog + @ApiOperation("根据id查询预约记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(reservationService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('house:reservation:save')") + @OperationLog + @ApiOperation("添加预约记录表") + @PostMapping() + public ApiResult save(@RequestBody Reservation reservation) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + reservation.setUserId(loginUser.getUserId()); + } + if (reservationService.save(reservation)) { + return success("提交成功"); + } + return fail("提交失败"); + } + + @PreAuthorize("hasAuthority('house:reservation:update')") + @OperationLog + @ApiOperation("修改预约记录表") + @PutMapping() + public ApiResult update(@RequestBody Reservation reservation) { + if (reservationService.updateById(reservation)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:reservation:remove')") + @OperationLog + @ApiOperation("删除预约记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (reservationService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('house:reservation:save')") + @OperationLog + @ApiOperation("批量添加预约记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (reservationService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('house:reservation:update')") + @OperationLog + @ApiOperation("批量修改预约记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(reservationService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('house:reservation:remove')") + @OperationLog + @ApiOperation("批量删除预约记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (reservationService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/entity/Info.java b/src/main/java/com/gxwebsoft/house/entity/Info.java new file mode 100644 index 0000000..93d937b --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/Info.java @@ -0,0 +1,145 @@ +package com.gxwebsoft.house.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 房源信息表 + * + * @author 科技小王子 + * @since 2023-08-03 18:23:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Info对象", description = "房源信息表") +@TableName("house_info") +public class Info implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "house_id", type = IdType.AUTO) + private Integer houseId; + + @ApiModelProperty(value = "房源标题") + private String houseTitle; + + @ApiModelProperty(value = "房产所在的城市") + private String cityByHouse; + + @ApiModelProperty(value = "户型") + private String houseType; + + @ApiModelProperty(value = "租赁方式") + private String leaseMethod; + + @ApiModelProperty(value = "租金") + private BigDecimal rent; + + @ApiModelProperty(value = "月租金") + private BigDecimal monthlyRent; + + @ApiModelProperty(value = "面积") + private String extent; + + @ApiModelProperty(value = "楼层") + private String floor; + + @ApiModelProperty(value = "房号") + private String roomNumber; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "进入房屋的密码") + private String password; + + @ApiModelProperty(value = "房屋朝向") + private String toward; + + @ApiModelProperty(value = "房屋标签") + private String houseLabel; + + @ApiModelProperty(value = "办公室配套") + private String supporting; + + @ApiModelProperty(value = "图片附件") + private String files; + + @ApiModelProperty(value = "房源介绍") + private String content; + + @ApiModelProperty(value = "到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + private Integer authentication; + + @ApiModelProperty(value = "状态 10待审核 20驳回 30通过") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "用户等级") + @TableField(exist = false) + private String gradeName; + +} diff --git a/src/main/java/com/gxwebsoft/house/entity/Reservation.java b/src/main/java/com/gxwebsoft/house/entity/Reservation.java new file mode 100644 index 0000000..4f61669 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/entity/Reservation.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.house.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 预约记录表 + * + * @author 科技小王子 + * @since 2023-08-03 18:23:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Reservation对象", description = "预约记录表") +@TableName("house_reservation") +public class Reservation implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "订单号") + private String logNo; + + @ApiModelProperty(value = "类型") + private Integer type; + + @ApiModelProperty(value = "付款金额") + private BigDecimal money; + + @ApiModelProperty(value = "实际付款金额(包含运费)") + private BigDecimal payPrice; + + @ApiModelProperty(value = "房源ID") + private Integer houseId; + + @ApiModelProperty(value = "卡ID") + private Integer priceId; + + @ApiModelProperty(value = "获得的会员等级") + private Integer gradeId; + + @ApiModelProperty(value = "卡名称") + private String priceName; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "付款时间") + private Date payTime; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + private Integer payStatus; + + @ApiModelProperty(value = "到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "门店ID") + private Integer merchantId; + + @ApiModelProperty(value = "所属门店") + private String merchantName; + + @ApiModelProperty(value = "门店编号") + private String merchantCode; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + private Integer isSettled; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/InfoMapper.java b/src/main/java/com/gxwebsoft/house/mapper/InfoMapper.java new file mode 100644 index 0000000..71f0f8f --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/InfoMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.house.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.house.entity.Info; +import com.gxwebsoft.house.param.InfoParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 房源信息表Mapper + * + * @author 科技小王子 + * @since 2023-08-03 18:23:43 + */ +public interface InfoMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") InfoParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") InfoParam param); + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/ReservationMapper.java b/src/main/java/com/gxwebsoft/house/mapper/ReservationMapper.java new file mode 100644 index 0000000..16cbdb4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/ReservationMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.house.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.house.entity.Reservation; +import com.gxwebsoft.house.param.ReservationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 预约记录表Mapper + * + * @author 科技小王子 + * @since 2023-08-03 18:23:43 + */ +public interface ReservationMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ReservationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ReservationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/house/mapper/xml/InfoMapper.xml b/src/main/java/com/gxwebsoft/house/mapper/xml/InfoMapper.xml new file mode 100644 index 0000000..fbeeda7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/xml/InfoMapper.xml @@ -0,0 +1,129 @@ + + + + + + + SELECT a.*, + b.nickname,b.avatar,b.grade_id, + c.name as gradeName + FROM house_info a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN shop_user_grade c ON b.grade_id = c.grade_id + + + AND a.house_id = #{param.houseId} + + + AND a.house_title LIKE CONCAT('%', #{param.houseTitle}, '%') + + + AND a.city_by_house LIKE CONCAT('%', #{param.cityByHouse}, '%') + + + AND a.house_type LIKE CONCAT('%', #{param.houseType}, '%') + + + AND a.lease_method LIKE CONCAT('%', #{param.leaseMethod}, '%') + + + AND a.rent = #{param.rent} + + + AND a.monthly_rent = #{param.monthlyRent} + + + AND a.extent LIKE CONCAT('%', #{param.extent}, '%') + + + AND a.floor LIKE CONCAT('%', #{param.floor}, '%') + + + AND a.room_number LIKE CONCAT('%', #{param.roomNumber}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.toward LIKE CONCAT('%', #{param.toward}, '%') + + + AND a.house_label LIKE CONCAT('%', #{param.houseLabel}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.area LIKE CONCAT('%', #{param.area}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.authentication = #{param.authentication} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + a.house_title LIKE CONCAT('%', #{param.keywords}, '%') + OR b.nickname = #{param.keywords} + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/house/mapper/xml/ReservationMapper.xml b/src/main/java/com/gxwebsoft/house/mapper/xml/ReservationMapper.xml new file mode 100644 index 0000000..b62e5a2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/mapper/xml/ReservationMapper.xml @@ -0,0 +1,116 @@ + + + + + + + SELECT a.* + FROM house_reservation a + + + AND a.log_id = #{param.logId} + + + AND a.log_no LIKE CONCAT('%', #{param.logNo}, '%') + + + AND a.type = #{param.type} + + + AND a.money = #{param.money} + + + AND a.pay_price = #{param.payPrice} + + + AND a.house_id = #{param.houseId} + + + AND a.price_id = #{param.priceId} + + + AND a.grade_id = #{param.gradeId} + + + AND a.price_name LIKE CONCAT('%', #{param.priceName}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.pay_time LIKE CONCAT('%', #{param.payTime}, '%') + + + AND a.pay_status = #{param.payStatus} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.area LIKE CONCAT('%', #{param.area}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.merchant_id = #{param.merchantId} + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.is_settled = #{param.isSettled} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/house/param/InfoParam.java b/src/main/java/com/gxwebsoft/house/param/InfoParam.java new file mode 100644 index 0000000..9fe7902 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/param/InfoParam.java @@ -0,0 +1,137 @@ +package com.gxwebsoft.house.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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-03 18:23:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "InfoParam对象", description = "房源信息表查询参数") +public class InfoParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer houseId; + + @ApiModelProperty(value = "房源标题") + private String houseTitle; + + @ApiModelProperty(value = "房产所在的城市") + private String cityByHouse; + + @ApiModelProperty(value = "户型") + private String houseType; + + @ApiModelProperty(value = "租赁方式") + private String leaseMethod; + + @ApiModelProperty(value = "租金") + @QueryField(type = QueryType.EQ) + private BigDecimal rent; + + @ApiModelProperty(value = "月租金") + @QueryField(type = QueryType.EQ) + private BigDecimal monthlyRent; + + @ApiModelProperty(value = "面积") + private String extent; + + @ApiModelProperty(value = "楼层") + private String floor; + + @ApiModelProperty(value = "房号") + private String roomNumber; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "进入房屋的密码") + private String password; + + @ApiModelProperty(value = "房屋朝向") + private String toward; + + @ApiModelProperty(value = "房屋标签") + private String houseLabel; + + @ApiModelProperty(value = "图片附件") + private String files; + + @ApiModelProperty(value = "房源介绍") + private String content; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + @QueryField(type = QueryType.EQ) + private Integer authentication; + + @ApiModelProperty(value = "状态 10待审核 20驳回 30通过") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/house/param/ReservationParam.java b/src/main/java/com/gxwebsoft/house/param/ReservationParam.java new file mode 100644 index 0000000..e289ae1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/param/ReservationParam.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.house.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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-03 18:23:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ReservationParam对象", description = "预约记录表查询参数") +public class ReservationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "订单号") + private String logNo; + + @ApiModelProperty(value = "类型") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "付款金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "实际付款金额(包含运费)") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "房源ID") + @QueryField(type = QueryType.EQ) + private Integer houseId; + + @ApiModelProperty(value = "卡ID") + @QueryField(type = QueryType.EQ) + private Integer priceId; + + @ApiModelProperty(value = "获得的会员等级") + @QueryField(type = QueryType.EQ) + private Integer gradeId; + + @ApiModelProperty(value = "卡名称") + private String priceName; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "付款时间") + private String payTime; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "门店ID") + @QueryField(type = QueryType.EQ) + private Integer merchantId; + + @ApiModelProperty(value = "所属门店") + private String merchantName; + + @ApiModelProperty(value = "门店编号") + private String merchantCode; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Integer isSettled; + + @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 = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/house/service/InfoService.java b/src/main/java/com/gxwebsoft/house/service/InfoService.java new file mode 100644 index 0000000..fc9e44c --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/InfoService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.house.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.house.entity.Info; +import com.gxwebsoft.house.param.InfoParam; + +import java.util.List; + +/** + * 房源信息表Service + * + * @author 科技小王子 + * @since 2023-08-03 18:23:43 + */ +public interface InfoService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(InfoParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(InfoParam param); + + /** + * 根据id查询 + * + * @param houseId 自增ID + * @return Info + */ + Info getByIdRel(Integer houseId); + +} diff --git a/src/main/java/com/gxwebsoft/house/service/ReservationService.java b/src/main/java/com/gxwebsoft/house/service/ReservationService.java new file mode 100644 index 0000000..ff0ea66 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/ReservationService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.house.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.house.entity.Reservation; +import com.gxwebsoft.house.param.ReservationParam; + +import java.util.List; + +/** + * 预约记录表Service + * + * @author 科技小王子 + * @since 2023-08-03 18:23:43 + */ +public interface ReservationService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ReservationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ReservationParam param); + + /** + * 根据id查询 + * + * @param logId ID + * @return Reservation + */ + Reservation getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/house/service/impl/InfoServiceImpl.java b/src/main/java/com/gxwebsoft/house/service/impl/InfoServiceImpl.java new file mode 100644 index 0000000..5434bc7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/impl/InfoServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.house.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.house.mapper.InfoMapper; +import com.gxwebsoft.house.service.InfoService; +import com.gxwebsoft.house.entity.Info; +import com.gxwebsoft.house.param.InfoParam; +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-03 18:23:43 + */ +@Service +public class InfoServiceImpl extends ServiceImpl implements InfoService { + + @Override + public PageResult pageRel(InfoParam 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(InfoParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Info getByIdRel(Integer houseId) { + InfoParam param = new InfoParam(); + param.setHouseId(houseId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/house/service/impl/ReservationServiceImpl.java b/src/main/java/com/gxwebsoft/house/service/impl/ReservationServiceImpl.java new file mode 100644 index 0000000..a18e2a0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/house/service/impl/ReservationServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.house.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.house.mapper.ReservationMapper; +import com.gxwebsoft.house.service.ReservationService; +import com.gxwebsoft.house.entity.Reservation; +import com.gxwebsoft.house.param.ReservationParam; +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-03 18:23:43 + */ +@Service +public class ReservationServiceImpl extends ServiceImpl implements ReservationService { + + @Override + public PageResult pageRel(ReservationParam 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(ReservationParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Reservation getByIdRel(Integer logId) { + ReservationParam param = new ReservationParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/CertificateController.java b/src/main/java/com/gxwebsoft/love/controller/CertificateController.java new file mode 100644 index 0000000..4d8cb1d --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/CertificateController.java @@ -0,0 +1,237 @@ +package com.gxwebsoft.love.controller; + +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.Certificate; +import com.gxwebsoft.love.param.CertificateParam; +import com.gxwebsoft.love.service.CertificateService; +import com.gxwebsoft.love.vo.idcheck.BackRecognitionResult; +import com.gxwebsoft.love.vo.idcheck.FrontRecognitionResult; +import com.gxwebsoft.love.vo.idcheck.Response; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 证件管理记录表控制器 + * + * @author 科技小王子 + * @since 2023-06-24 11:18:52 + */ +@Api(tags = "证件管理记录表管理") +@RestController +@RequestMapping("/api/love/certificate") +public class CertificateController extends BaseController { + @Resource + private CertificateService certificateService; + + + @Resource + private UserService userService; + + @PreAuthorize("hasAuthority('love:certificate:list')") + @OperationLog + @ApiOperation("分页查询证件管理记录表") + @GetMapping("/page") + public ApiResult> page(CertificateParam param) { + // 使用关联查询 + return success(certificateService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('love:certificate:list')") + @OperationLog + @ApiOperation("查询全部证件管理记录表") + @GetMapping() + public ApiResult> list(CertificateParam param) { + // 使用关联查询 + return success(certificateService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:certificate:list')") + @OperationLog + @ApiOperation("根据id查询证件管理记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(certificateService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('love:certificate:save')") + @OperationLog + @ApiOperation("添加证件管理记录表") + @PostMapping() + public ApiResult save(@RequestBody Certificate certificate) { + + // 记录当前登录用户id + User loginUser = getLoginUser(); + + certificate.setUserId(loginUser.getUserId()); + certificate.setStatus(10); + // 身份证认证 + if("idCard".equals(certificate.getCertificateType())){ + // 验证表单 + if (!StringUtils.hasText(certificate.getRealName())) { + return fail("请填写真实姓名", certificate); + } + if (!StringUtils.hasText(certificate.getCertificateCode())) { + return fail("请填写身份证号码", certificate); + } + + List files = JSON.parseArray(certificate.getFiles(), FileRecord.class); + List collect = files.stream().map(FileRecord::getUrl).collect(Collectors.toList()); + if (files == null || files.size() < 2) { + return fail("请上传身份证照片", certificate); + } + + // 验证正面 + Response front = certificateService.idcardfrontrecongnition(collect.get(0)); + if (front.getError_code() != 0) { + return fail(front.getReason()); + } + + + // 验证反面 + Response back = certificateService.idcardbackrecongnition(collect.get(1)); + if (back.getError_code() != 0) { + return fail(back.getReason()); + } + + certificate.setStatus(30); + + // 信息是否一致 + if (!certificate.getCertificateCode().equals(front.getResult().getIdcardno())) { + return fail("认证失败", certificate); + } + if (!certificate.getRealName().equals(front.getResult().getName())) { + return fail("认证失败", certificate); + } + User user = new User(); + user.setUserId(loginUser.getUserId()); + user.setCertification(1); + userService.updateById(user); + + } + // 房屋认证 + if ("house".equals(certificate.getCertificateType())) { + if (!StringUtils.hasText(certificate.getCityByHouse())) { + return fail("请填写房子所在城市", certificate); + } + List files = JSON.parseArray(certificate.getFiles(), FileRecord.class); + if (files == null || files.size() < 1) { + return fail("请上传证件照片", certificate); + } + } + + // 学历认证 + if ("education".equals(certificate.getCertificateType())) { + if (!StringUtils.hasText(certificate.getEducation())) { + return fail("请选择学历", certificate); + } + if (!StringUtils.hasText(certificate.getAuthType())) { + return fail("请选择认证方式", certificate); + } + if (!StringUtils.hasText(certificate.getCollege())) { + return fail("请填写毕业院校", certificate); + } + + List files = JSON.parseArray(certificate.getFiles(), FileRecord.class); + if (files == null || files.size() < 1) { + return fail("请上传证件照片", certificate); + } + } + + // 车辆认证 + if ("car".equals(certificate.getCertificateType())) { + if (!StringUtils.hasText(certificate.getCarBrand())) { + return fail("请填写车辆品牌", certificate); + } + + List files = JSON.parseArray(certificate.getFiles(), FileRecord.class); + if (files == null || files.size() < 1) { + return fail("请上传证件照片", certificate); + } + } + + // 其他身份人工审核 + final Certificate one = certificateService.getOne(new LambdaQueryWrapper().eq(Certificate::getUserId, loginUser.getUserId()).eq(Certificate::getCertificateType, certificate.getCertificateType())); + if (one != null) { + certificate.setCertificateId(one.getCertificateId()); + certificateService.updateById(certificate); + }else { + certificateService.save(certificate); + } + + return success("提交成功", certificate); + + } + + @PreAuthorize("hasAuthority('love:certificate:update')") + @OperationLog + @ApiOperation("修改证件管理记录表") + @PutMapping() + public ApiResult update(@RequestBody Certificate certificate) { + if (certificateService.updateById(certificate)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:certificate:remove')") + @OperationLog + @ApiOperation("删除证件管理记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (certificateService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:certificate:save')") + @OperationLog + @ApiOperation("批量添加证件管理记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (certificateService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:certificate:update')") + @OperationLog + @ApiOperation("批量修改证件管理记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(certificateService, "certificate_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:certificate:remove')") + @OperationLog + @ApiOperation("批量删除证件管理记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (certificateService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/ChatConversationController.java b/src/main/java/com/gxwebsoft/love/controller/ChatConversationController.java new file mode 100644 index 0000000..6a116f9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/ChatConversationController.java @@ -0,0 +1,160 @@ +package com.gxwebsoft.love.controller; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.love.entity.ChatConversation; +import com.gxwebsoft.love.param.ChatConversationParam; +import com.gxwebsoft.love.service.ChatConversationService; +import com.gxwebsoft.love.vo.ChatConversationVO; +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-06-15 21:26:48 + */ +@Api(tags = "聊天消息表管理") +@RestController +@RequestMapping("/api/love/chat-conversation") +public class ChatConversationController extends BaseController { + @Resource + private ChatConversationService chatConversationService; + + // @PreAuthorize("hasAuthority('love:chatConversation:list')") + @OperationLog + @ApiOperation("查询全部聊天消息表") + @GetMapping("/app") + public ApiResult> appList() { + + ChatConversationParam param = new ChatConversationParam(); + param.setUserId(getLoginUserId()); + return success(chatConversationService.getFriendList(param)); + } + + + @OperationLog + @ApiOperation("标记已读") + @PostMapping("/app/read") + public ApiResult read(@RequestBody ChatConversationParam param) { + return success(chatConversationService.update( + new LambdaUpdateWrapper().eq(ChatConversation::getId, param.getId()).set(ChatConversation::getUnRead, 0) + )); + // 使用关联查询 + //return success(chatConversationService.pageRel(param)); + } + + + @PreAuthorize("hasAuthority('love:chatConversation:list')") + @OperationLog + @ApiOperation("分页查询聊天消息表") + @GetMapping("/page") + public ApiResult> page(ChatConversationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(chatConversationService.page(page, page.getWrapper())); + // 使用关联查询 + return success(chatConversationService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('love:chatConversation:list')") + @OperationLog + @ApiOperation("查询全部聊天消息表") + @GetMapping() + public ApiResult> list(ChatConversationParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(chatConversationService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(chatConversationService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:chatConversation:list')") + @OperationLog + @ApiOperation("根据id查询聊天消息表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(chatConversationService.getById(id)); + // 使用关联查询 + //return success(chatConversationService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('love:chatConversation:save')") + @OperationLog + @ApiOperation("添加聊天消息表") + @PostMapping() + public ApiResult save(@RequestBody ChatConversation chatConversation) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + chatConversation.setUserId(loginUser.getUserId()); + } + if (chatConversationService.save(chatConversation)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:chatConversation:update')") + @OperationLog + @ApiOperation("修改聊天消息表") + @PutMapping() + public ApiResult update(@RequestBody ChatConversation chatConversation) { + if (chatConversationService.updateById(chatConversation)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @OperationLog + @ApiOperation("删除聊天消息表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (chatConversationService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:chatConversation:save')") + @OperationLog + @ApiOperation("批量添加聊天消息表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (chatConversationService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:chatConversation:update')") + @OperationLog + @ApiOperation("批量修改聊天消息表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(chatConversationService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:chatConversation:remove')") + @OperationLog + @ApiOperation("批量删除聊天消息表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (chatConversationService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/ChatMessageController.java b/src/main/java/com/gxwebsoft/love/controller/ChatMessageController.java new file mode 100644 index 0000000..38ae1e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/ChatMessageController.java @@ -0,0 +1,162 @@ +package com.gxwebsoft.love.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.ChatMessage; +import com.gxwebsoft.love.param.ChatMessageParam; +import com.gxwebsoft.love.service.ChatMessageService; +import com.gxwebsoft.love.socketio.cache.ClientCache; +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-06-10 18:27:25 + */ +@Api(tags = "聊天消息表管理") +@RestController +@RequestMapping("/api/love/chat-message") +public class ChatMessageController extends BaseController { + @Resource + private ChatMessageService chatMessageService; + + @Resource + private UserService userService; + + + @Resource + private ClientCache clientCache; + @OperationLog + @ApiOperation("发送消息:app端使用") + @PostMapping("/app/send") + public ApiResult sendMessage(@RequestBody ChatMessage message) { + User loginUser = getLoginUser(); + message.setFormUserId(getLoginUserId()); + message.setFormUserInfo(loginUser); + return success(chatMessageService.sendMessage(message)); + } + + @OperationLog + @ApiOperation("发送消息") + @GetMapping("/app/list/{friendId}") + public ApiResult> listApp(@PathVariable Integer friendId) { + + return success(chatMessageService.getFriendMessage(getLoginUserId(), friendId)); + } + + @PreAuthorize("hasAuthority('love:chatMessage:list')") + @OperationLog + @ApiOperation("分页查询聊天消息表") + @GetMapping("/page") + public ApiResult> page(ChatMessageParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(chatMessageService.page(page, page.getWrapper())); + // 使用关联查询 + return success(chatMessageService.pageRel(param)); + } + + + + @PreAuthorize("hasAuthority('love:chatMessage:list')") + @OperationLog + @ApiOperation("查询全部聊天消息表") + @GetMapping() + public ApiResult> list(ChatMessageParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(chatMessageService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(chatMessageService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:chatMessage:list')") + @OperationLog + @ApiOperation("根据id查询聊天消息表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(chatMessageService.getById(id)); + // 使用关联查询 + //return success(chatMessageService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('love:chatMessage:save')") + @OperationLog + @ApiOperation("添加聊天消息表 管理员使用") + @PostMapping() + public ApiResult save(@RequestBody ChatMessage message) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + User fromUser = userService.getById(message.getFormUserId()); + message.setFormUserInfo(fromUser); + if (chatMessageService.sendMessage(message)) { + return success("发送成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:chatMessage:update')") + @OperationLog + @ApiOperation("修改聊天消息表") + @PutMapping() + public ApiResult update(@RequestBody ChatMessage chatMessage) { + if (chatMessageService.updateById(chatMessage)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:chatMessage:remove')") + @OperationLog + @ApiOperation("删除聊天消息表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (chatMessageService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:chatMessage:save')") + @OperationLog + @ApiOperation("批量添加聊天消息表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (chatMessageService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:chatMessage:update')") + @OperationLog + @ApiOperation("批量修改聊天消息表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(chatMessageService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:chatMessage:remove')") + @OperationLog + @ApiOperation("批量删除聊天消息表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (chatMessageService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/ProfitController.java b/src/main/java/com/gxwebsoft/love/controller/ProfitController.java new file mode 100644 index 0000000..89b7e06 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/ProfitController.java @@ -0,0 +1,128 @@ +package com.gxwebsoft.love.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.love.entity.Profit; +import com.gxwebsoft.love.param.ProfitParam; +import com.gxwebsoft.love.service.ProfitService; +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-06-28 20:49:17 + */ +@Api(tags = "门店收益明细表管理") +@RestController +@RequestMapping("/api/love/profit") +public class ProfitController extends BaseController { + @Resource + private ProfitService profitService; + + @PreAuthorize("hasAuthority('love:profit:list')") + @OperationLog + @ApiOperation("分页查询门店收益明细表") + @GetMapping("/page") + public ApiResult> page(ProfitParam param) { + // 使用关联查询 + return success(profitService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('love:profit:list')") + @OperationLog + @ApiOperation("查询全部门店收益明细表") + @GetMapping() + public ApiResult> list(ProfitParam param) { + // 使用关联查询 + return success(profitService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:profit:list')") + @OperationLog + @ApiOperation("根据id查询门店收益明细表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(profitService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('love:profit:save')") + @OperationLog + @ApiOperation("添加门店收益明细表") + @PostMapping() + public ApiResult save(@RequestBody Profit profit) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + profit.setUserId(loginUser.getUserId()); + } + if (profitService.save(profit)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:profit:update')") + @OperationLog + @ApiOperation("修改门店收益明细表") + @PutMapping() + public ApiResult update(@RequestBody Profit profit) { + if (profitService.updateById(profit)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:profit:remove')") + @OperationLog + @ApiOperation("删除门店收益明细表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (profitService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:profit:save')") + @OperationLog + @ApiOperation("批量添加门店收益明细表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (profitService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:profit:update')") + @OperationLog + @ApiOperation("批量修改门店收益明细表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(profitService, "profit_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:profit:remove')") + @OperationLog + @ApiOperation("批量删除门店收益明细表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (profitService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/UserPlanController.java b/src/main/java/com/gxwebsoft/love/controller/UserPlanController.java new file mode 100644 index 0000000..94d8aea --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/UserPlanController.java @@ -0,0 +1,167 @@ +package com.gxwebsoft.love.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.UserPlan; +import com.gxwebsoft.love.entity.UserPlanIcon; +import com.gxwebsoft.love.entity.UserPlanPrice; +import com.gxwebsoft.love.param.UserPlanParam; +import com.gxwebsoft.love.service.UserPlanIconService; +import com.gxwebsoft.love.service.UserPlanPriceService; +import com.gxwebsoft.love.service.UserPlanService; +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-06-21 11:21:01 + */ +@Api(tags = "会员套餐管理表管理") +@RestController +@RequestMapping("/api/love/user-plan") +public class UserPlanController extends BaseController { + @Resource + private UserPlanService userPlanService; + @Resource + private UserPlanPriceService userPlanPriceService; + @Resource + private UserPlanIconService userPlanIconService; + + @PreAuthorize("hasAuthority('love:userPlan:list')") + @OperationLog + @ApiOperation("分页查询会员套餐管理表") + @GetMapping("/page") + public ApiResult> page(UserPlanParam param) { + // 使用关联查询 + return success(userPlanService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlan:list')") + @OperationLog + @ApiOperation("查询全部会员套餐管理表") + @GetMapping() + public ApiResult> list(UserPlanParam param) { + // 使用关联查询 + param.setLoginUserId(getLoginUserId()); + return success(userPlanService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlan:list')") + @OperationLog + @ApiOperation("根据id查询会员套餐管理表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userPlanService.getByIdRel(id,getLoginUserId())); + } + + @PreAuthorize("hasAuthority('love:userPlan:save')") + @OperationLog + @ApiOperation("添加会员套餐管理表") + @PostMapping() + public ApiResult save(@RequestBody UserPlan userPlan) { + if (userPlanService.save(userPlan)) { + if (!userPlan.getPrice().isEmpty()) { + final List price = userPlan.getPrice(); + price.forEach(d -> { + d.setPlanId(userPlan.getPlanId()); + }); + userPlanPriceService.saveBatch(price); + } + if (!userPlan.getIcons().isEmpty()) { + final List icons = userPlan.getIcons(); + icons.forEach(d -> { + d.setPlanId(userPlan.getPlanId()); + }); + userPlanIconService.saveBatch(icons); + } + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlan:update')") + @OperationLog + @ApiOperation("修改会员套餐管理表") + @PutMapping() + public ApiResult update(@RequestBody UserPlan userPlan) { + if (userPlanService.updateById(userPlan)) { + // 先删除 + userPlanPriceService.remove(new LambdaQueryWrapper().eq(UserPlanPrice::getPlanId, userPlan.getPlanId())); + userPlanIconService.remove(new LambdaQueryWrapper().eq(UserPlanIcon::getPlanId, userPlan.getPlanId())); + // 再添加 + if (!userPlan.getPrice().isEmpty()) { + final List price = userPlan.getPrice(); + price.forEach(d -> { + d.setPlanId(userPlan.getPlanId()); + }); + userPlanPriceService.saveBatch(price); + } + if (!userPlan.getIcons().isEmpty()) { + final List icons = userPlan.getIcons(); + icons.forEach(d -> { + d.setPlanId(userPlan.getPlanId()); + }); + userPlanIconService.saveBatch(icons); + } + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlan:remove')") + @OperationLog + @ApiOperation("删除会员套餐管理表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userPlanService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:userPlan:save')") + @OperationLog + @ApiOperation("批量添加会员套餐管理表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userPlanService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlan:update')") + @OperationLog + @ApiOperation("批量修改会员套餐管理表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userPlanService, "plan_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlan:remove')") + @OperationLog + @ApiOperation("批量删除会员套餐管理表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userPlanService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/UserPlanEquityController.java b/src/main/java/com/gxwebsoft/love/controller/UserPlanEquityController.java new file mode 100644 index 0000000..90bf821 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/UserPlanEquityController.java @@ -0,0 +1,148 @@ +package com.gxwebsoft.love.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.love.entity.UserPlanEquity; +import com.gxwebsoft.love.param.UserPlanEquityParam; +import com.gxwebsoft.love.service.UserPlanEquityService; +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.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 会员套餐管理表控制器 + * + * @author 科技小王子 + * @since 2023-06-23 11:34:03 + */ +@Api(tags = "会员套餐管理表管理") +@RestController +@RequestMapping("/api/love/user-plan-equity") +public class UserPlanEquityController extends BaseController { + @Resource + private UserPlanEquityService userPlanEquityService; + + @PreAuthorize("hasAuthority('love:userPlanEquity:list')") + @OperationLog + @ApiOperation("分页查询会员套餐管理表") + @GetMapping("/page") + public ApiResult> page(UserPlanEquityParam param) { + final PageResult result = userPlanEquityService.pageRel(param); + // 门店身份权益 + if (param.getType().equals(1)) { + final Map> collect = result.getList().stream().collect(Collectors.groupingBy(UserPlanEquity::getUserId)); + result.setList(null); + final ArrayList list = new ArrayList<>(); + for(Integer userId : collect.keySet()){ + UserPlanEquity equity = new UserPlanEquity(); + final List userPlanEquities = collect.get(userId); + list.add(userPlanEquities.get(0)); + } + result.setList(list); + return success(result); + } + // 使用关联查询 + return success(result); + } + + @PreAuthorize("hasAuthority('love:userPlanEquity:list')") + @OperationLog + @ApiOperation("查询全部会员套餐管理表") + @GetMapping() + public ApiResult> list(UserPlanEquityParam param) { + // 使用关联查询 + return success(userPlanEquityService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlanEquity:list')") + @OperationLog + @ApiOperation("根据id查询会员套餐管理表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userPlanEquityService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('love:userPlanEquity:save')") + @OperationLog + @ApiOperation("添加会员套餐管理表") + @PostMapping() + public ApiResult save(@RequestBody UserPlanEquity userPlanEquity) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userPlanEquity.setUserId(loginUser.getUserId()); + } + if (userPlanEquityService.save(userPlanEquity)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanEquity:update')") + @OperationLog + @ApiOperation("修改会员套餐管理表") + @PutMapping() + public ApiResult update(@RequestBody UserPlanEquity userPlanEquity) { + if (userPlanEquityService.updateById(userPlanEquity)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanEquity:remove')") + @OperationLog + @ApiOperation("删除会员套餐管理表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userPlanEquityService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanEquity:save')") + @OperationLog + @ApiOperation("批量添加会员套餐管理表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userPlanEquityService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanEquity:update')") + @OperationLog + @ApiOperation("批量修改会员套餐管理表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userPlanEquityService, "plan_equity_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanEquity:remove')") + @OperationLog + @ApiOperation("批量删除会员套餐管理表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userPlanEquityService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/UserPlanIconController.java b/src/main/java/com/gxwebsoft/love/controller/UserPlanIconController.java new file mode 100644 index 0000000..3eceed0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/UserPlanIconController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.love.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.love.entity.UserPlanIcon; +import com.gxwebsoft.love.param.UserPlanIconParam; +import com.gxwebsoft.love.service.UserPlanIconService; +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-06-25 18:09:34 + */ +@Api(tags = "会员套餐权益表管理") +@RestController +@RequestMapping("/api/love/user-plan-icon") +public class UserPlanIconController extends BaseController { + @Resource + private UserPlanIconService userPlanIconService; + + @PreAuthorize("hasAuthority('love:userPlanIcon:list')") + @OperationLog + @ApiOperation("分页查询会员套餐权益表") + @GetMapping("/page") + public ApiResult> page(UserPlanIconParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userPlanIconService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(userPlanIconService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlanIcon:list')") + @OperationLog + @ApiOperation("查询全部会员套餐权益表") + @GetMapping() + public ApiResult> list(UserPlanIconParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userPlanIconService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(userPlanIconService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlanIcon:list')") + @OperationLog + @ApiOperation("根据id查询会员套餐权益表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userPlanIconService.getById(id)); + // 使用关联查询 + //return success(userPlanIconService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('love:userPlanIcon:save')") + @OperationLog + @ApiOperation("添加会员套餐权益表") + @PostMapping() + public ApiResult save(@RequestBody UserPlanIcon userPlanIcon) { + if (userPlanIconService.save(userPlanIcon)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanIcon:update')") + @OperationLog + @ApiOperation("修改会员套餐权益表") + @PutMapping() + public ApiResult update(@RequestBody UserPlanIcon userPlanIcon) { + if (userPlanIconService.updateById(userPlanIcon)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanIcon:remove')") + @OperationLog + @ApiOperation("删除会员套餐权益表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userPlanIconService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanIcon:save')") + @OperationLog + @ApiOperation("批量添加会员套餐权益表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userPlanIconService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanIcon:update')") + @OperationLog + @ApiOperation("批量修改会员套餐权益表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userPlanIconService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanIcon:remove')") + @OperationLog + @ApiOperation("批量删除会员套餐权益表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userPlanIconService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/UserPlanLogController.java b/src/main/java/com/gxwebsoft/love/controller/UserPlanLogController.java new file mode 100644 index 0000000..ed0b738 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/UserPlanLogController.java @@ -0,0 +1,410 @@ +package com.gxwebsoft.love.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.mapper.SettingMapper; +import com.gxwebsoft.common.system.param.SettingParam; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.common.system.service.UserRoleService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.UserPlanLog; +import com.gxwebsoft.love.entity.UserPlanPrice; +import com.gxwebsoft.love.param.UserPlanLogParam; +import com.gxwebsoft.love.service.UserPlanLogService; +import com.gxwebsoft.love.service.UserPlanPriceService; +import com.gxwebsoft.shop.entity.UserReferee; +import com.gxwebsoft.shop.service.UserGradeService; +import com.gxwebsoft.shop.service.UserRefereeService; +import com.wechat.pay.java.core.Config; +import com.wechat.pay.java.core.RSAConfig; +import com.wechat.pay.java.core.notification.NotificationConfig; +import com.wechat.pay.java.core.notification.NotificationParser; +import com.wechat.pay.java.core.notification.RSANotificationConfig; +import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction; +import com.wechat.pay.java.service.payments.jsapi.JsapiServiceExtension; +import com.wechat.pay.java.service.payments.jsapi.model.Amount; +import com.wechat.pay.java.service.payments.jsapi.model.Payer; +import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest; +import com.wechat.pay.java.service.payments.jsapi.model.PrepayWithRequestPaymentResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.DecimalFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_NO_PAY; +import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_SUCCESS; + +/** + * 会员特权购买记录表控制器 + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +@Api(tags = "会员特权购买记录表管理") +@RestController +@RequestMapping("/api/love/user-plan-log") +public class UserPlanLogController extends BaseController { + @Resource + private UserPlanLogService userPlanLogService; + @Resource + private UserPlanPriceService userPlanPriceService; + @Resource + private SettingService settingService; + @Resource + private ConfigProperties config; + @Resource + private SettingMapper settingMapper; + @Resource + private UserRefereeService userRefereeService; + @Resource + private UserService userService; + + @PreAuthorize("hasAuthority('love:userPlanLog:list')") + @OperationLog + @ApiOperation("分页查询会员特权购买记录表") + @GetMapping("/page") + public ApiResult> page(UserPlanLogParam param) { + // 使用关联查询 + return success(userPlanLogService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlanLog:list')") + @OperationLog + @ApiOperation("查询全部会员特权购买记录表") + @GetMapping() + public ApiResult> list(UserPlanLogParam param) { + // 使用关联查询 + return success(userPlanLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlanLog:list')") + @OperationLog + @ApiOperation("根据id查询会员特权购买记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userPlanLogService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('love:userPlanLog:save')") + @OperationLog + @ApiOperation("添加会员特权购买记录表") + @PostMapping() + public ApiResult save(@RequestBody UserPlanLog userPlanLog) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userPlanLog.setUserId(loginUser.getUserId()); + userPlanLog.setOpenid(loginUser.getOpenid()); + // 更新绑定关系 + if (userPlanLog.getDealerId() != null && userPlanLog.getDealerId() > 0) { + userRefereeService.remove(new LambdaQueryWrapper().eq(UserReferee::getUserId, loginUser.getUserId())); + final UserReferee userReferee = new UserReferee(); + userReferee.setUserId(userPlanLog.getUserId()); + userReferee.setDealerId(userPlanLog.getDealerId()); + if (userService.getById(userPlanLog.getDealerId()) == null) { + return fail("邀请人ID不存在"); + } + userRefereeService.save(userReferee); + } + } + final UserPlanPrice price = userPlanPriceService.getByIdRel(userPlanLog.getPriceId()); + userPlanLog.setLogNo(CommonUtil.createOrderNo()); + userPlanLog.setMoney(price.getPrice()); + userPlanLog.setPriceName(price.getName()); + userPlanLog.setPlanId(price.getPlanId()); + userPlanLog.setComments(price.getPlanName()); + userPlanLog.setType(price.getType()); + userPlanLog.setGradeId(price.getGradeId()); + userPlanLog.setAddress(userPlanLog.getAddress()); + + if (userPlanLog.getTotalPrice() != null) { + // 订单金额为0 + if (userPlanLog.getTotalPrice().equals(new BigDecimal("0.00"))) { + userPlanLog.setMoney(userPlanLog.getTotalPrice()); + userPlanLog.setPayStatus(PAY_STATUS_SUCCESS); + userPlanLog.setStatus(1); + userPlanLog.setIsSettled(0); + userPlanLogService.save(userPlanLog); + return success("支付成功", null); + } + // 自定义金额 + userPlanLog.setMoney(userPlanLog.getTotalPrice()); + } + + + // 保存购买记录 + if (userPlanLogService.save(userPlanLog)) { + return success("订单创建成功", this.createOrder(userPlanLog)); + } + return fail("订单创建失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanLog:list')") + @ApiOperation("待支付订单支付") + @GetMapping("/onPay/{id}") + public ApiResult onPay(@PathVariable("id") Integer id) { + final UserPlanLog userPlanLog = userPlanLogService.getByIdRel(id); + User loginUser = getLoginUser(); + if (loginUser != null) { + userPlanLog.setUserId(loginUser.getUserId()); + userPlanLog.setOpenid(loginUser.getOpenid()); + userPlanLog.setLogNo(CommonUtil.createOrderNo()); + } + System.out.println("userPlanLog = " + userPlanLog); + return success("订单创建成功", this.createOrder(userPlanLog)); + } + + /** + * 创建订单 + */ + private HashMap createOrder(UserPlanLog userPlanLog) { + + final String uploadPath = config.getUploadPath(); // 服务器本地路径 + final JSONObject mpWx = settingService.getBySettingKey("mp-weixin"); + final JSONObject payment = settingService.getBySettingKey("payment"); + + // 计算金额 + BigDecimal decimal = userPlanLog.getMoney(); + final BigDecimal multiply = decimal.multiply(new BigDecimal(100)); + // 将 BigDecimal 转换为 Integer + Integer money = multiply.intValue(); + + final String appId = mpWx.getString("appId"); + final String mchId = payment.getString("mchId"); + final String openid = userPlanLog.getOpenid(); // openid + final String notifyUrl = config.getServerUrl() + "/love/user-plan-log/wx-pay/notify/" + userPlanLog.getTenantId(); // 异步通知地址 + final String privateKey = uploadPath.concat("file").concat(payment.getString("apiclientKey")); // 秘钥证书 + final String apiclientCert = uploadPath.concat("file").concat(payment.getString("apiclientCert")); + final String merchantSerialNumber = payment.getString("merchantSerialNumber"); // 证书序列号 + final String apiV3key = payment.getString("wechatApiKey"); + +// System.out.println("privateKey = " + privateKey); +// System.out.println("apiclientCert = " + apiclientCert); +// System.out.println("merchantSerialNumber = " + merchantSerialNumber); +// System.out.println("apiV3key = " + apiV3key); +// System.out.println("mchId = " + mchId); +// System.out.println("appId = " + appId); + + Config config = + new RSAConfig.Builder() + .merchantId(mchId) + .privateKeyFromPath(privateKey) + .merchantSerialNumber(merchantSerialNumber) + .wechatPayCertificatesFromPath(apiclientCert) + .build(); + + // 构建service + JsapiServiceExtension service = new JsapiServiceExtension.Builder().config(config).build(); + // 跟之前下单示例一样,填充预下单参数 + PrepayRequest request = new PrepayRequest(); + Amount amount = new Amount(); + amount.setTotal(money); + amount.setCurrency("CNY"); + request.setAmount(amount); + request.setAppid(appId); + request.setMchid(mchId); + request.setDescription(userPlanLog.getComments()); + request.setNotifyUrl(notifyUrl); + request.setOutTradeNo(userPlanLog.getLogNo()); + request.setAttach(userPlanLog.getTenantId().toString()); + final Payer payer = new Payer(); + payer.setOpenid(openid); + request.setPayer(payer); + + PrepayWithRequestPaymentResponse response = service.prepayWithRequestPayment(request); +// System.out.println("response = " + response); + + final HashMap orderInfo = new HashMap<>(); + orderInfo.put("provider", "wxpay"); + orderInfo.put("timeStamp", response.getTimeStamp()); + orderInfo.put("nonceStr", response.getNonceStr()); + orderInfo.put("package", response.getPackageVal()); + orderInfo.put("signType", "RSA"); + orderInfo.put("paySign", response.getPaySign()); + return orderInfo; + } + + @ApiModelProperty("异步通知") + @OperationLog + @PostMapping("/wx-pay/notify/{tenantId}") + public String wxNotify(@RequestHeader Map header, @RequestBody String body, @PathVariable("tenantId") Integer tenantId) { + System.out.println("异步通知*************** = "); +// System.out.println("request header = " + header); +// System.out.println("request body = " + body); +// System.out.println("tenantId = " + tenantId); + + // 获取支付配置信息用于解密 + final SettingParam param = new SettingParam(); + param.setSettingKey("payment"); + param.setTenantId(tenantId); + final String uploadPath = config.getUploadPath(); // 服务器本地路径 + final Setting payment = settingMapper.getBySettingKeyIgnore(param); + final JSONObject jsonObject = JSONObject.parseObject(payment.getContent()); + final String apiV3key = jsonObject.getString("wechatApiKey"); + final String apiclientCert = uploadPath.concat("file").concat(jsonObject.getString("apiclientCert")); + +// System.out.println("apiV3key ====== " + apiV3key); +// System.out.println("payment ===== " + payment); + + com.wechat.pay.java.core.notification.RequestParam requestParam = new com.wechat.pay.java.core.notification.RequestParam.Builder() + .serialNumber(header.get("wechatpay-serial")) + .nonce(header.get("wechatpay-nonce")) + .signature(header.get("wechatpay-signature")) + .timestamp(header.get("wechatpay-timestamp")) + .body(body) + .build(); + + // 如果已经初始化了 RSAAutoCertificateConfig,可直接使用 + // 没有的话,则构造一个 + NotificationConfig config = new RSANotificationConfig.Builder() + .apiV3Key(apiV3key) + .certificatesFromPath(apiclientCert) + .build(); + + // 初始化 NotificationParser + NotificationParser parser = new NotificationParser(config); + + // 以支付通知回调为例,验签、解密并转换成 Transaction + try { + Transaction transaction = parser.parse(requestParam, Transaction.class); + final String outTradeNo = transaction.getOutTradeNo(); + final Integer total = transaction.getAmount().getTotal(); + final String tradeStateDesc = transaction.getTradeStateDesc(); +// final Transaction.TradeStateEnum tradeState = transaction.getTradeState(); +// final Transaction.TradeTypeEnum tradeType = transaction.getTradeType(); +// System.out.println("transaction = " + transaction); +// System.out.println("tradeStateDesc = " + tradeStateDesc); +// System.out.println("tradeType = " + tradeType); +// System.out.println("tradeState = " + tradeState); +// System.out.println("outTradeNo = " + outTradeNo); +// System.out.println("amount = " + total); + + if (StrUtil.equals("支付成功", tradeStateDesc)) { + // 1. 查询要处理的订单 + final UserPlanLog log = userPlanLogService.getByOutTradeNo(outTradeNo); + System.out.println("log = " + log); + // 2. 已支付则跳过 + if (log.getPayStatus().equals(PAY_STATUS_SUCCESS)) { + return "SUCCESS"; + } + // 2. 未支付则处理更新订单状态 + if (log.getPayStatus().equals(PAY_STATUS_NO_PAY)) { + // 3. TODO 处理会员等级 + + // 4. TODO 处理过期时间 + + log.setPayStatus(PAY_STATUS_SUCCESS); + log.setPayTime(DateUtil.date()); + // 实际付款金额:Integer除以100后转BigDecimal + DecimalFormat df = new DecimalFormat("0.00"); + final String format = df.format(total / 100); + log.setPayPrice(new BigDecimal(format)); + userPlanLogService.updateByOutTradeNo(log); + return "SUCCESS"; + } + } + } catch (Exception $e) { + System.out.println($e.getMessage()); + } + + return "fail"; + } + + @PreAuthorize("hasAuthority('love:userPlanLog:update')") + @OperationLog + @ApiOperation("修改会员特权购买记录表") + @PutMapping() + public ApiResult update(@RequestBody UserPlanLog userPlanLog) { + if (userPlanLogService.updateById(userPlanLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanLog:remove')") + @OperationLog + @ApiOperation("删除会员特权购买记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userPlanLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanLog:save')") + @OperationLog + @ApiOperation("批量添加会员特权购买记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userPlanLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanLog:update')") + @OperationLog + @ApiOperation("批量修改会员特权购买记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userPlanLogService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanLog:remove')") + @OperationLog + @ApiOperation("批量删除会员特权购买记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userPlanLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @OperationLog + @ApiOperation("创建会员订单") + @GetMapping("/getPlanByPriceId/{priceId}") + public ApiResult getPlanByPriceId(@PathVariable("priceId") Integer priceId) { + final UserPlanPrice price = userPlanPriceService.getByIdRel(priceId); + return success(price); + } + +// @ApiModelProperty("异步通知") +// @OperationLog +// @PostMapping("/wx-pay/test/{id}") +// public ApiResult test(@RequestHeader Map header, @PathVariable("id") Integer id) { +//// final UserPlanLog log = userPlanLogService.getByOutTradeNo("2023062223063683"); +//// System.out.println("byOutTradeNo = " + log); +//// final UserRole userRole = new UserRole(); +//// userRole.setUserId(log.getUserId()); +//// userRole.setRoleId(log.getRoleId()); +//// userRole.setTenantId(log.getTenantId()); +//// userRoleService.save(userRole); +//// return success(userRole); +// return success(""); +// } +} diff --git a/src/main/java/com/gxwebsoft/love/controller/UserPlanPriceController.java b/src/main/java/com/gxwebsoft/love/controller/UserPlanPriceController.java new file mode 100644 index 0000000..c737e4c --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/UserPlanPriceController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.love.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.UserPlanPrice; +import com.gxwebsoft.love.param.UserPlanPriceParam; +import com.gxwebsoft.love.service.UserPlanPriceService; +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-06-20 18:07:50 + */ +@Api(tags = "会员套餐定价表管理") +@RestController +@RequestMapping("/api/love/user-plan-price") +public class UserPlanPriceController extends BaseController { + @Resource + private UserPlanPriceService userPlanPriceService; + + @PreAuthorize("hasAuthority('love:userPlanPrice:list')") + @OperationLog + @ApiOperation("分页查询会员套餐定价表") + @GetMapping("/page") + public ApiResult> page(UserPlanPriceParam param) { + // 使用关联查询 + return success(userPlanPriceService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlanPrice:list')") + @OperationLog + @ApiOperation("查询全部会员套餐定价表") + @GetMapping() + public ApiResult> list(UserPlanPriceParam param) { + // 使用关联查询 + return success(userPlanPriceService.listRel(param)); + } + + @PreAuthorize("hasAuthority('love:userPlanPrice:list')") + @OperationLog + @ApiOperation("根据id查询会员套餐定价表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userPlanPriceService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('love:userPlanPrice:save')") + @OperationLog + @ApiOperation("添加会员套餐定价表") + @PostMapping() + public ApiResult save(@RequestBody UserPlanPrice userPlanPrice) { + if (userPlanPriceService.save(userPlanPrice)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanPrice:update')") + @OperationLog + @ApiOperation("修改会员套餐定价表") + @PutMapping() + public ApiResult update(@RequestBody UserPlanPrice userPlanPrice) { + if (userPlanPriceService.updateById(userPlanPrice)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanPrice:remove')") + @OperationLog + @ApiOperation("删除会员套餐定价表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userPlanPriceService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanPrice:save')") + @OperationLog + @ApiOperation("批量添加会员套餐定价表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userPlanPriceService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanPrice:update')") + @OperationLog + @ApiOperation("批量修改会员套餐定价表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userPlanPriceService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userPlanPrice:remove')") + @OperationLog + @ApiOperation("批量删除会员套餐定价表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userPlanPriceService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/controller/UserProfileController.java b/src/main/java/com/gxwebsoft/love/controller/UserProfileController.java new file mode 100644 index 0000000..e98b657 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/controller/UserProfileController.java @@ -0,0 +1,205 @@ +package com.gxwebsoft.love.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.UserProfile; +import com.gxwebsoft.love.param.UserProfileParam; +import com.gxwebsoft.love.service.UserProfileService; +import com.gxwebsoft.love.socketio.cache.ClientCache; +import com.gxwebsoft.shop.entity.UserLook; +import com.gxwebsoft.shop.service.UserLookService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.scheduling.annotation.Async; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 会员资料表控制器 + * + * @author 科技小王子 + * @since 2023-06-09 21:42:26 + */ +@Api(tags = "会员资料表管理") +@RestController +@RequestMapping("/api/love/user-profile") +public class UserProfileController extends BaseController { + @Resource + private UserProfileService userProfileService; + @Resource + private UserService userService; + @Resource + private UserLookService userLookService; + + @Resource + private ClientCache clientCache; + + @PreAuthorize("hasAuthority('love:userProfile:list')") + @ApiOperation("分页查询会员资料表") + @GetMapping("/page") + public ApiResult> page(UserProfileParam param) { + User loginUser = getLoginUser(); + if (loginUser != null) { + param.setLoginUserId(loginUser.getUserId()); + param.setCityMate(loginUser.getCity()); + // 推荐异性 + if (loginUser.getSex() != null && param.getScene() != null && (param.getScene().equals("recommend") || param.getScene().equals("intraCity"))) { + if (loginUser.getSex().equals("1")) { + param.setSex("2"); + }else { + param.setSex("1"); + } + } + } + final PageResult result = userProfileService.pageRel(param); + return success(result); + } + + @PreAuthorize("hasAuthority('love:userProfile:list')") + @ApiOperation("查询全部会员资料表") + @GetMapping() + public ApiResult> list(UserProfileParam param) { + // 使用关联查询 + return success(userProfileService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @OperationLog + @ApiOperation("根据会员id查询详细资料") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + final User loginUser = getLoginUser(); + final UserProfileParam userProfileParam = new UserProfileParam(); + userProfileParam.setUserId(loginUser.getUserId()); + userProfileParam.setShowFollow(true); + final PageResult result = userProfileService.pageRel(userProfileParam); + if (result.getList().isEmpty()) { + final UserProfile profile = new UserProfile(); + profile.setUserId(loginUser.getUserId()); + profile.setImages("[]"); + userProfileService.save(profile); + profile.setUserInfo(loginUser); + return fail("添加成功",profile); + } + final UserProfile userProfile = result.getList().get(0); + userProfile.setUserInfo(getLoginUser()); + return success(userProfile); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("添加会员资料表") + @PostMapping() + public ApiResult save(@RequestBody UserProfile userProfile) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userProfile.setUserId(loginUser.getUserId()); + } + if (userProfileService.save(userProfile)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:user:update')") + @OperationLog + @ApiOperation("修改会员资料表") + @PutMapping() + public ApiResult update(@RequestBody UserProfile userProfile) { + if (userProfileService.updateById(userProfile)) { + userService.updateById(userProfile.getUserInfo()); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userProfile:remove')") + @OperationLog + @ApiOperation("删除会员资料表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userProfileService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:userProfile:save')") + @OperationLog + @ApiOperation("批量添加会员资料表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userProfileService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('love:userProfile:update')") + @OperationLog + @ApiOperation("批量修改会员资料表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userProfileService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('love:userProfile:remove')") + @OperationLog + @ApiOperation("批量删除会员资料表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userProfileService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('love:userProfile:list')") + @OperationLog + @ApiOperation("根据会员id查询详细资料") + @GetMapping("/detail/{id}") + public ApiResult detail(@PathVariable("id") Integer id) { + final UserProfileParam param = new UserProfileParam(); + param.setShowFollow(true); + param.setLoginUserId(getLoginUserId()); + param.setUserId(id); + final PageResult result = userProfileService.pageRel(param); + if (result.getCount() > 0) { + final UserProfile profile = result.getList().get(0); + profile.setUserInfo(userService.getById(id)); + // 添加访客查看记录 + addUserLook(id); + return success(profile); + } + return fail("用户不存在",null); + } + + @Async + public void addUserLook(Integer toUserId) { + User loginUser = getLoginUser(); + if (loginUser != null && !loginUser.getUserId().equals(toUserId)) { + boolean noLog = userLookService.count(new LambdaQueryWrapper().eq(UserLook::getUserId, loginUser.getUserId()).eq(UserLook::getToUserId, toUserId)) == 0; + if (noLog) { + final UserLook userLook = new UserLook(); + userLook.setUserId(getLoginUserId()); + userLook.setToUserId(toUserId); + userLookService.save(userLook); + clientCache.sendUserEvent(userLook.getToUserId() + "","look", 1); + } + } + } + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/Certificate.java b/src/main/java/com/gxwebsoft/love/entity/Certificate.java new file mode 100644 index 0000000..f1bb26c --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/Certificate.java @@ -0,0 +1,107 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 证件管理记录表 + * + * @author 科技小王子 + * @since 2023-06-24 11:18:52 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Certificate对象", description = "证件管理记录表") +@TableName("love_certificate") +public class Certificate implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "证件id") + @TableId(value = "certificate_id", type = IdType.AUTO) + private Integer certificateId; + + @ApiModelProperty(value = "证件名称") + private String certificateName; + + @ApiModelProperty(value = "证件全称") + private String fullName; + + @ApiModelProperty(value = "证件标识") + private String certificateCode; + + @ApiModelProperty(value = "证件类型") + private String certificateType; + + @ApiModelProperty(value = "证件照片") + private String files; + + @ApiModelProperty(value = "房产所在的城市") + private String cityByHouse; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "证件到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "企业法人") + private String businessEntity; + + @ApiModelProperty(value = "毕业院校") + private String college; + + @ApiModelProperty(value = "学历") + private String education; + + @ApiModelProperty(value = "认证方式") + private String authType; + + @ApiModelProperty(value = "车辆品牌") + private String carBrand; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + private Integer authentication; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/ChatConversation.java b/src/main/java/com/gxwebsoft/love/entity/ChatConversation.java new file mode 100644 index 0000000..bba7f28 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/ChatConversation.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 聊天消息表 + * + * @author 科技小王子 + * @since 2023-06-15 21:26:48 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ChatConversation对象", description = "聊天消息表") +@TableName("love_chat_conversation") +public class ChatConversation implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "好友ID") + private Integer friendId; + + @TableField(exist = false) + @ApiModelProperty(value = "好友信息") + private User friendInfo; + + @ApiModelProperty(value = "消息类型") + private Integer type; + + @ApiModelProperty(value = "消息内容") + private String content; + + @ApiModelProperty(value = "未读消息") + private int unRead; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/ChatMessage.java b/src/main/java/com/gxwebsoft/love/entity/ChatMessage.java new file mode 100644 index 0000000..61717b8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/ChatMessage.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 聊天消息表 + * + * @author 科技小王子 + * @since 2023-06-10 18:27:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "ChatMessage对象", description = "聊天消息表") +@TableName("love_chat_message") +public class ChatMessage implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "发送用户ID") + private Integer formUserId; + + @ApiModelProperty(value = "接收人ID") + private Integer toUserId; + + @ApiModelProperty(value = "发送人") + @TableField(exist = false) + private User formUserInfo; + + @ApiModelProperty(value = "接收人") + @TableField(exist = false) + private User toUserInfo; + + @ApiModelProperty(value = "消息类型") + private String type; + + @ApiModelProperty(value = "消息内容") + private String content; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/Profit.java b/src/main/java/com/gxwebsoft/love/entity/Profit.java new file mode 100644 index 0000000..b588c83 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/Profit.java @@ -0,0 +1,109 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 门店收益明细表 + * + * @author 科技小王子 + * @since 2023-06-28 20:49:17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Profit对象", description = "门店收益明细表") +@TableName("love_profit") +public class Profit 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 userId; + + @ApiModelProperty(value = "购买记录ID") + private Integer logId; + + @ApiModelProperty(value = "余额变动场景(10推荐奖励 20解锁奖励 30团队收益 40区域分红)") + 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; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "我推荐的玩家") + @TableField(exist = false) + private Integer playerId; + + @ApiModelProperty(value = "玩家昵称") + @TableField(exist = false) + private String playerNickname; + + @ApiModelProperty(value = "我推荐的玩家") + @TableField(exist = false) + private String playerAvatar; + + @ApiModelProperty(value = "消费金额") + @TableField(exist = false) + private BigDecimal orderPrice; + + @ApiModelProperty(value = "结算状态") + @TableField(exist = false) + private Integer isSettled; + + @ApiModelProperty(value = "类型 0单身 1婚介") + @TableField(exist = false) + private Integer type; + + @ApiModelProperty(value = "会员等级") + @TableField(exist = false) + private String gradeName; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/UserPlan.java b/src/main/java/com/gxwebsoft/love/entity/UserPlan.java new file mode 100644 index 0000000..a3bd11b --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/UserPlan.java @@ -0,0 +1,98 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 会员套餐管理表 + * + * @author 科技小王子 + * @since 2023-06-21 11:21:01 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserPlan对象", description = "会员套餐管理表") +@TableName("love_user_plan") +public class UserPlan implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "套餐ID") + @TableId(value = "plan_id", type = IdType.AUTO) + private Integer planId; + + @ApiModelProperty(value = "套餐名称") + private String name; + + @ApiModelProperty(value = "类型 0单身 1婚介") + private Integer type; + + @ApiModelProperty(value = "副标题") + private String subName; + + @ApiModelProperty(value = "会员身份") + private Integer roleId; + + @ApiModelProperty(value = "会员等级") + private Integer gradeId; + + @ApiModelProperty(value = "图标") + private String icon; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "角色名称") + @TableField(exist = false) + private String roleName; + + @ApiModelProperty(value = "会员等级") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty(value = "套餐价格") + @TableField(exist = false) + private List price; + + @ApiModelProperty(value = "解锁的权益") + @TableField(exist = false) + private List equity; + + @ApiModelProperty(value = "购买记录") + @TableField(exist = false) + private List log; + + @ApiModelProperty(value = "权益图标") + @TableField(exist = false) + private List icons; + + @ApiModelProperty(value = "过期时间") + @TableField(exist = false) + private String expirationTime; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/UserPlanEquity.java b/src/main/java/com/gxwebsoft/love/entity/UserPlanEquity.java new file mode 100644 index 0000000..1a86244 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/UserPlanEquity.java @@ -0,0 +1,91 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 会员套餐管理表 + * + * @author 科技小王子 + * @since 2023-06-23 11:34:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserPlanEquity对象", description = "会员套餐管理表") +@TableName("love_user_plan_equity") +public class UserPlanEquity implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "权益ID") + @TableId(value = "plan_equity_id", type = IdType.AUTO) + private Integer planEquityId; + + @ApiModelProperty(value = "套餐ID") + private Integer planId; + + @ApiModelProperty(value = "类型 0单身 1婚介") + private Integer type; + + @ApiModelProperty(value = "套餐名称") + private String planName; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在区县") + private String region; + + @ApiModelProperty(value = "完整地区") + private String area; + + @ApiModelProperty(value = "门店地址") + private String address; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "到期时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date expirationTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "会员昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String userAvatar; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/UserPlanIcon.java b/src/main/java/com/gxwebsoft/love/entity/UserPlanIcon.java new file mode 100644 index 0000000..f603ff8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/UserPlanIcon.java @@ -0,0 +1,55 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 会员套餐权益表 + * + * @author 科技小王子 + * @since 2023-06-25 18:09:34 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserPlanIcon对象", description = "会员套餐权益表") +@TableName("love_user_plan_icon") +public class UserPlanIcon implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "套餐ID") + private Integer planId; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "权益") + private String name; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/UserPlanLog.java b/src/main/java/com/gxwebsoft/love/entity/UserPlanLog.java new file mode 100644 index 0000000..76e1210 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/UserPlanLog.java @@ -0,0 +1,165 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 会员特权购买记录表 + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserPlanLog对象", description = "会员特权购买记录表") +@TableName("love_user_plan_log") +public class UserPlanLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "订单号") + private String logNo; + + @ApiModelProperty(value = "类型 0单身 1婚介 2线下") + private Integer type; + + @ApiModelProperty(value = "付款金额") + private BigDecimal money; + + @ApiModelProperty(value = "套餐ID") + private Integer planId; + + @ApiModelProperty(value = "支付状态") + private Integer payStatus; + + @ApiModelProperty(value = "支付时间") + private Date payTime; + + @ApiModelProperty(value = "过期时间") + private Date expirationTime; + + @ApiModelProperty(value = "实际付款金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "价格ID") + private Integer priceId; + + @ApiModelProperty(value = "会员等级ID") + private Integer gradeId; + + @ApiModelProperty(value = "名称") + private String priceName; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在区县") + private String region; + + @ApiModelProperty(value = "完整地区") + private String area; + + @ApiModelProperty(value = "门店地址") + private String address; + + @ApiModelProperty(value = "门店ID") + private Integer merchantId; + + @ApiModelProperty(value = "所属门店") + private String merchantName; + + @ApiModelProperty(value = "所属门店") + private String merchantCode; + + @ApiModelProperty(value = "结算状态") + private Integer isSettled; + + @ApiModelProperty(value = "套餐名称") + @TableField(exist = false) + private String planName; + + @ApiModelProperty(value = "套餐图标") + @TableField(exist = false) + private String planIcon; + + @ApiModelProperty(value = "会员昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String userAvatar; + + @ApiModelProperty(value = "openid") + @TableField(exist = false) + private String openid; + + @ApiModelProperty(value = "会员身份") + @TableField(exist = false) + private Integer roleId; + + @ApiModelProperty(value = "推荐人ID") + @TableField(exist = false) + private Integer dealerId; + + @ApiModelProperty(value = "间接推荐人") + @TableField(exist = false) + private Integer dealerId2; + + @ApiModelProperty(value = "付款金额") + @TableField(exist = false) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "认证的姓名") + @TableField(exist = false) + private String realName2; + + @ApiModelProperty(value = "认证的身份证号") + @TableField(exist = false) + private String idCard; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/UserPlanPrice.java b/src/main/java/com/gxwebsoft/love/entity/UserPlanPrice.java new file mode 100644 index 0000000..ee311e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/UserPlanPrice.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 会员套餐定价表 + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserPlanPrice对象", description = "会员套餐定价表") +@TableName("love_user_plan_price") +public class UserPlanPrice implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "套餐ID") + private Integer planId; + + @ApiModelProperty(value = "项目名称") + private String name; + + @ApiModelProperty(value = "价格") + private BigDecimal price; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "套餐名称") + @TableField(exist = false) + private String planName; + + @ApiModelProperty(value = "类型 0单身 1婚介 2线下") + @TableField(exist = false) + private Integer type; + + @ApiModelProperty(value = "会员等级") + @TableField(exist = false) + private Integer gradeId; + +} diff --git a/src/main/java/com/gxwebsoft/love/entity/UserProfile.java b/src/main/java/com/gxwebsoft/love/entity/UserProfile.java new file mode 100644 index 0000000..c7baa95 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/entity/UserProfile.java @@ -0,0 +1,193 @@ +package com.gxwebsoft.love.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 会员资料表 + * + * @author 科技小王子 + * @since 2023-06-09 21:42:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserProfile对象", description = "会员资料表") +@TableName("love_user_profile") +public class UserProfile implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "兴趣爱好") + private String interest; + + @ApiModelProperty(value = "年龄") + @TableField(exist = false) + private Integer age; + + @ApiModelProperty(value = "身高") + private String height; + + @ApiModelProperty(value = "月收入") + private String monthlyPay; + + @ApiModelProperty(value = "年收入") + private String yearlyPay; + + @ApiModelProperty(value = "学历") + private String education; + + @ApiModelProperty(value = "职业") + private String vocation; + + @ApiModelProperty(value = "婚姻状况") + private String maritalStatus; + + @ApiModelProperty(value = "有无小孩") + private String hasChildren; + + @ApiModelProperty(value = "是否要小孩") + private String haveChild; + + @ApiModelProperty(value = "职业") + private String position; + + @ApiModelProperty(value = "体重") + private String weight; + + @ApiModelProperty(value = "体型") + private String shape; + + @ApiModelProperty(value = "是否有车") + private String hasCar; + + @ApiModelProperty(value = "是否有房") + private String hasHouse; + + @ApiModelProperty(value = "何时想结婚") + private String whenMarried; + + @ApiModelProperty(value = "择偶条件-年龄") + private String ageMate; + + @ApiModelProperty(value = "择偶条件-身高") + private String heightMate; + + @ApiModelProperty(value = "择偶条件-月收入") + private String monthlyPayMate; + + @ApiModelProperty(value = "择偶条件-年收入") + private String yearlyPayMate; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "择偶条件-所在省份") + private String provinceMate; + + @ApiModelProperty(value = "择偶条件-所在城市") + private String cityMate; + + @ApiModelProperty(value = "择偶条件-所在辖区") + private String regionMate; + + @ApiModelProperty(value = "择偶条件-地区") + private String areaMate; + + @ApiModelProperty(value = "择偶条件-学历") + private String educationMate; + + @ApiModelProperty(value = "择偶条件-婚姻状况") + private String maritalStatusMate; + + @ApiModelProperty(value = "择偶条件-有无小孩") + private String hasChildrenMate; + + @ApiModelProperty(value = "择偶条件-是否要小孩") + private String haveChildMate; + + @ApiModelProperty(value = "择偶条件-职业") + private String vocationMate; + + @ApiModelProperty(value = "择偶条件-体重") + private String weightMate; + + @ApiModelProperty(value = "择偶条件-体型") + private String shapeMate; + + @ApiModelProperty(value = "择偶条件-是否吸烟") + private String isSmokingMate; + + @ApiModelProperty(value = "择偶条件-是否喝酒") + private String isDrinkMate; + + @ApiModelProperty(value = "择偶条件-是否有车") + private String hasCarMate; + + @ApiModelProperty(value = "择偶条件-是否有房") + private String hasHouseMate; + + @ApiModelProperty(value = "择偶条件-何时想结婚") + private String whenMarriedMate; + + @ApiModelProperty(value = "是否推荐") + private Integer recommend; + + @ApiModelProperty(value = "图片附件") + private String images; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "用户信息") + @TableField(exist = false) + private User userInfo; + + @ApiModelProperty(value = "是否关注") + @TableField(exist = false) + private Boolean follow; + + @ApiModelProperty(value = "是否点赞") + @TableField(exist = false) + private Boolean liked; + + @ApiModelProperty(value = "用户所在城市") + @TableField(exist = false) + private String userCity; +} diff --git a/src/main/java/com/gxwebsoft/love/enums/ChatMessageType.java b/src/main/java/com/gxwebsoft/love/enums/ChatMessageType.java new file mode 100644 index 0000000..22aa282 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/enums/ChatMessageType.java @@ -0,0 +1,25 @@ +package com.gxwebsoft.love.enums; + +public enum ChatMessageType { + TEXT( 1, "text"), + IMAGE(2, "image"), + VOICE(3, "voice"), + CARD(4, "card"), + ; + + private int index; + + private String name; + ChatMessageType(int i, String text) { + this.name = text; + this.index = i; + } + + public String getName() { + return name; + } + + public int getIndex() { + return index; + } +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/CertificateMapper.java b/src/main/java/com/gxwebsoft/love/mapper/CertificateMapper.java new file mode 100644 index 0000000..f1258e6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/CertificateMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.Certificate; +import com.gxwebsoft.love.param.CertificateParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 证件管理记录表Mapper + * + * @author 科技小王子 + * @since 2023-06-24 11:18:52 + */ +public interface CertificateMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CertificateParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CertificateParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/ChatConversationMapper.java b/src/main/java/com/gxwebsoft/love/mapper/ChatConversationMapper.java new file mode 100644 index 0000000..85fbe29 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/ChatConversationMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.github.yulichang.base.MPJBaseMapper; +import com.gxwebsoft.love.entity.ChatConversation; +import com.gxwebsoft.love.param.ChatConversationParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 聊天消息表Mapper + * + * @author 科技小王子 + * @since 2023-06-15 21:26:48 + */ +public interface ChatConversationMapper extends MPJBaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ChatConversationParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ChatConversationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/ChatMessageMapper.java b/src/main/java/com/gxwebsoft/love/mapper/ChatMessageMapper.java new file mode 100644 index 0000000..755add5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/ChatMessageMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.ChatMessage; +import com.gxwebsoft.love.param.ChatMessageParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 聊天消息表Mapper + * + * @author 科技小王子 + * @since 2023-06-10 18:27:25 + */ +public interface ChatMessageMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ChatMessageParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ChatMessageParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/ProfitMapper.java b/src/main/java/com/gxwebsoft/love/mapper/ProfitMapper.java new file mode 100644 index 0000000..2007555 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/ProfitMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.Profit; +import com.gxwebsoft.love.param.ProfitParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 门店收益明细表Mapper + * + * @author 科技小王子 + * @since 2023-06-28 20:49:17 + */ +public interface ProfitMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProfitParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProfitParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/UserPlanEquityMapper.java b/src/main/java/com/gxwebsoft/love/mapper/UserPlanEquityMapper.java new file mode 100644 index 0000000..a5a16eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/UserPlanEquityMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.UserPlanEquity; +import com.gxwebsoft.love.param.UserPlanEquityParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员套餐管理表Mapper + * + * @author 科技小王子 + * @since 2023-06-23 11:34:03 + */ +public interface UserPlanEquityMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserPlanEquityParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserPlanEquityParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/UserPlanIconMapper.java b/src/main/java/com/gxwebsoft/love/mapper/UserPlanIconMapper.java new file mode 100644 index 0000000..9446d09 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/UserPlanIconMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.UserPlanIcon; +import com.gxwebsoft.love.param.UserPlanIconParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员套餐权益表Mapper + * + * @author 科技小王子 + * @since 2023-06-25 18:09:34 + */ +public interface UserPlanIconMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserPlanIconParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserPlanIconParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/UserPlanLogMapper.java b/src/main/java/com/gxwebsoft/love/mapper/UserPlanLogMapper.java new file mode 100644 index 0000000..54de524 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/UserPlanLogMapper.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.UserPlanLog; +import com.gxwebsoft.love.param.UserPlanLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员特权购买记录表Mapper + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +public interface UserPlanLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserPlanLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserPlanLogParam param); + + @InterceptorIgnore(tenantLine = "true") + List getByOutTradeNo(@Param("param") UserPlanLogParam param); + + @InterceptorIgnore(tenantLine = "true") + void updateByOutTradeNo(@Param("param") UserPlanLog outTradeNo); +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/UserPlanMapper.java b/src/main/java/com/gxwebsoft/love/mapper/UserPlanMapper.java new file mode 100644 index 0000000..d076ee4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/UserPlanMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.UserPlan; +import com.gxwebsoft.love.param.UserPlanParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员套餐管理表Mapper + * + * @author 科技小王子 + * @since 2023-06-21 11:21:01 + */ +public interface UserPlanMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserPlanParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserPlanParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/UserPlanPriceMapper.java b/src/main/java/com/gxwebsoft/love/mapper/UserPlanPriceMapper.java new file mode 100644 index 0000000..a40082c --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/UserPlanPriceMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.UserPlanPrice; +import com.gxwebsoft.love.param.UserPlanPriceParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员套餐定价表Mapper + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +public interface UserPlanPriceMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserPlanPriceParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserPlanPriceParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/UserProfileMapper.java b/src/main/java/com/gxwebsoft/love/mapper/UserProfileMapper.java new file mode 100644 index 0000000..cb94139 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/UserProfileMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.love.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.love.entity.UserProfile; +import com.gxwebsoft.love.param.UserProfileParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员资料表Mapper + * + * @author 科技小王子 + * @since 2023-06-09 21:42:26 + */ +public interface UserProfileMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserProfileParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserProfileParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/CertificateMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/CertificateMapper.xml new file mode 100644 index 0000000..5f86af5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/CertificateMapper.xml @@ -0,0 +1,84 @@ + + + + + + + SELECT a.*,b.nickname,b.avatar + FROM love_certificate a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.certificate_id = #{param.certificateId} + + + AND a.certificate_name LIKE CONCAT('%', #{param.certificateName}, '%') + + + AND a.full_name LIKE CONCAT('%', #{param.fullName}, '%') + + + AND a.certificate_code LIKE CONCAT('%', #{param.certificateCode}, '%') + + + AND a.certificate_type = #{param.certificateType} + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.real_name LIKE CONCAT('%', #{param.realName}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.business_entity LIKE CONCAT('%', #{param.businessEntity}, '%') + + + AND a.college LIKE CONCAT('%', #{param.college}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.authentication = #{param.authentication} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/ChatConversationMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/ChatConversationMapper.xml new file mode 100644 index 0000000..f688dbd --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/ChatConversationMapper.xml @@ -0,0 +1,53 @@ + + + + + + + SELECT a.* + FROM love_chat_conversation a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.friend_id = #{param.friendId} + + + AND a.type = #{param.type} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/ChatMessageMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/ChatMessageMapper.xml new file mode 100644 index 0000000..a0dcd20 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/ChatMessageMapper.xml @@ -0,0 +1,53 @@ + + + + + + + SELECT a.* + FROM love_chat_message a + + + AND a.id = #{param.id} + + + AND a.form_user_id = #{param.formUserId} + + + AND a.to_user_id = #{param.toUserId} + + + AND a.type = #{param.type} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/ProfitMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/ProfitMapper.xml new file mode 100644 index 0000000..131b972 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/ProfitMapper.xml @@ -0,0 +1,83 @@ + + + + + + + SELECT a.*, + b.type,b.money,b.user_id as playerId,b.comments,b.money as orderPrice,b.is_settled,b.type,b.grade_id, + c.nickname as playerNickname,c.avatar as playerAvatar, + d.name as gradeName + FROM love_profit a + LEFT JOIN love_user_plan_log b ON a.log_id = b.log_id AND b.pay_status = 20 + LEFT JOIN sys_user c ON b.user_id = c.user_id + LEFT JOIN shop_user_grade d ON b.grade_id = d.grade_id + + + AND a.profit_id = #{param.profitId} + + + AND a.user_id = #{param.userId} + + + AND a.scene = #{param.scene} + + + AND a.scene IN + + #{item} + + + + 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} + + + AND d.grade_id >= #{param.gradeStart} + + + AND d.grade_id <= #{param.gradeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanEquityMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanEquityMapper.xml new file mode 100644 index 0000000..193aa31 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanEquityMapper.xml @@ -0,0 +1,75 @@ + + + + + + + SELECT a.*,b.nickname,b.phone,b.avatar as userAvatar + FROM love_user_plan_equity a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.plan_equity_id = #{param.planEquityId} + + + AND a.type = #{param.type} + + + AND a.plan_id = #{param.planId} + + + AND a.plan_name LIKE CONCAT('%', #{param.planName}, '%') + + + AND a.real_name = #{param.realName} + + + AND a.province = #{param.province} + + + AND a.city = #{param.city} + + + AND a.region = #{param.region} + + + AND a.area = #{param.area} + + + AND a.user_id = #{param.userId} + + + AND a.expiration_time LIKE CONCAT('%', #{param.expirationTime}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanIconMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanIconMapper.xml new file mode 100644 index 0000000..3d2b6da --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanIconMapper.xml @@ -0,0 +1,50 @@ + + + + + + + SELECT a.* + FROM love_user_plan_icon a + + + AND a.id = #{param.id} + + + AND a.plan_id = #{param.planId} + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanLogMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanLogMapper.xml new file mode 100644 index 0000000..68f5648 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanLogMapper.xml @@ -0,0 +1,79 @@ + + + + + + + SELECT a.*,b.role_id, + b.name as planName,b.icon as planIcon, + c.nickname,c.avatar as userAvatar, + d.dealer_id as dealerId, + e.dealer_id as dealerId2, + f.real_name as realName2,f.certificate_code as idCard + FROM love_user_plan_log a + LEFT JOIN love_user_plan b ON a.plan_id = b.plan_id + LEFT JOIN sys_user c ON a.user_id = c.user_id + LEFT JOIN shop_user_referee d ON a.user_id = d.user_id and d.deleted = 0 + LEFT JOIN shop_user_referee e ON d.dealer_id = e.user_id and e.deleted = 0 + LEFT JOIN love_certificate f ON a.user_id = f.user_id and f.certificate_type = 'idCard' + + + AND a.log_id = #{param.logId} + + + AND a.log_no LIKE CONCAT('%', #{param.logNo}, '%') + + + AND a.money = #{param.money} + + + AND a.plan_id = #{param.planId} + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanMapper.xml new file mode 100644 index 0000000..11aeea9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanMapper.xml @@ -0,0 +1,67 @@ + + + + + + + SELECT a.*,b.role_name as roleName,c.name as gradeName + FROM love_user_plan a + LEFT JOIN sys_role b ON a.role_id = b.role_id + LEFT JOIN shop_user_grade c ON a.grade_id = c.grade_id + + + AND a.plan_id = #{param.planId} + + + AND a.type = #{param.type} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.sub_name LIKE CONCAT('%', #{param.subName}, '%') + + + AND a.role_id = #{param.roleId} + + + AND a.grade_id = #{param.gradeId} + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanPriceMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanPriceMapper.xml new file mode 100644 index 0000000..529379e --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/UserPlanPriceMapper.xml @@ -0,0 +1,51 @@ + + + + + + + SELECT a.*,b.name as planName,b.type,b.grade_id + FROM love_user_plan_price a + LEFT JOIN love_user_plan b ON a.plan_id = b.plan_id + + + AND a.id = #{param.id} + + + AND a.plan_id = #{param.planId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.price = #{param.price} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/mapper/xml/UserProfileMapper.xml b/src/main/java/com/gxwebsoft/love/mapper/xml/UserProfileMapper.xml new file mode 100644 index 0000000..870f564 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/mapper/xml/UserProfileMapper.xml @@ -0,0 +1,190 @@ + + + + + + + SELECT a.*,b.nickname,b.age,b.city as userCity + FROM love_user_profile a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + + AND a.id = #{param.id} + + + AND a.interest LIKE CONCAT('%', #{param.interest}, '%') + + + AND a.height LIKE CONCAT('%', #{param.height}, '%') + + + AND a.monthly_pay LIKE CONCAT('%', #{param.monthlyPay}, '%') + + + AND a.yearly_pay LIKE CONCAT('%', #{param.yearlyPay}, '%') + + + AND a.education LIKE CONCAT('%', #{param.education}, '%') + + + AND a.vocation LIKE CONCAT('%', #{param.vocation}, '%') + + + AND a.marital_status LIKE CONCAT('%', #{param.maritalStatus}, '%') + + + AND a.has_children LIKE CONCAT('%', #{param.hasChildren}, '%') + + + AND a.have_child LIKE CONCAT('%', #{param.haveChild}, '%') + + + AND a.position LIKE CONCAT('%', #{param.position}, '%') + + + AND a.weight LIKE CONCAT('%', #{param.weight}, '%') + + + AND a.has_car LIKE CONCAT('%', #{param.hasCar}, '%') + + + AND a.when_married LIKE CONCAT('%', #{param.whenMarried}, '%') + + + AND a.age_mate LIKE CONCAT('%', #{param.ageMate}, '%') + + + AND a.height_mate LIKE CONCAT('%', #{param.heightMate}, '%') + + + AND a.monthly_pay_mate LIKE CONCAT('%', #{param.monthlyPayMate}, '%') + + + AND a.yearly_pay_mate LIKE CONCAT('%', #{param.yearlyPayMate}, '%') + + + AND a.region_mate LIKE CONCAT('%', #{param.regionMate}, '%') + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND b.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.area LIKE CONCAT('%', #{param.area}, '%') + + + AND a.province_mate LIKE CONCAT('%', #{param.provinceMate}, '%') + + + AND b.city LIKE CONCAT('%', #{param.cityMate}, '%') + + + AND a.region_mate LIKE CONCAT('%', #{param.regionMate}, '%') + + + AND a.area_mate LIKE CONCAT('%', #{param.areaMate}, '%') + + + AND a.education_mate LIKE CONCAT('%', #{param.educationMate}, '%') + + + AND a.marital_status_mate LIKE CONCAT('%', #{param.maritalStatusMate}, '%') + + + AND a.has_children_mate LIKE CONCAT('%', #{param.hasChildrenMate}, '%') + + + AND a.have_child_mate LIKE CONCAT('%', #{param.haveChildMate}, '%') + + + AND a.vocation_mate LIKE CONCAT('%', #{param.vocationMate}, '%') + + + AND a.weight_mate LIKE CONCAT('%', #{param.weightMate}, '%') + + + AND a.shape_mate LIKE CONCAT('%', #{param.shapeMate}, '%') + + + AND a.is_smoking_mate LIKE CONCAT('%', #{param.isSmokingMate}, '%') + + + AND a.is_drink_mate LIKE CONCAT('%', #{param.isDrinkMate}, '%') + + + AND a.has_car_mate LIKE CONCAT('%', #{param.hasCarMate}, '%') + + + AND a.has_house_mate LIKE CONCAT('%', #{param.hasHouseMate}, '%') + + + AND a.when_married_mate LIKE CONCAT('%', #{param.whenMarriedMate}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.recommend = 1 + + + AND a.user_id IN + + #{item} + + + + AND a.user_id NOT IN + + #{item} + + + + AND b.sex = #{param.sex} + + + AND a.images != '[]' + + + AND ( + b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR a.age_mate = #{param.keywords} + OR a.user_id = #{param.keywords} + OR b.phone = #{param.keywords} + ) + + AND b.deleted = 0 + + + ORDER BY rand() + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/love/param/CertificateParam.java b/src/main/java/com/gxwebsoft/love/param/CertificateParam.java new file mode 100644 index 0000000..e969f54 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/CertificateParam.java @@ -0,0 +1,82 @@ +package com.gxwebsoft.love.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; + +/** + * 证件管理记录表查询参数 + * + * @author 科技小王子 + * @since 2023-06-24 11:18:52 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CertificateParam对象", description = "证件管理记录表查询参数") +public class CertificateParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "证件id") + @QueryField(type = QueryType.EQ) + private Integer certificateId; + + @ApiModelProperty(value = "证件名称") + private String certificateName; + + @ApiModelProperty(value = "证件全称") + private String fullName; + + @ApiModelProperty(value = "证件标识") + private String certificateCode; + + @ApiModelProperty(value = "证件类型") + private String certificateType; + + @ApiModelProperty(value = "证件照片") + private String files; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "证件到期时间") + private String expirationTime; + + @ApiModelProperty(value = "企业法人") + private String businessEntity; + + @ApiModelProperty(value = "毕业院校") + private String college; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否实名认证") + @QueryField(type = QueryType.EQ) + private Integer authentication; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/love/param/ChatConversationParam.java b/src/main/java/com/gxwebsoft/love/param/ChatConversationParam.java new file mode 100644 index 0000000..e2ebc98 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/ChatConversationParam.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.love.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 2023-06-15 21:26:48 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ChatConversationParam对象", description = "聊天消息表查询参数") +public class ChatConversationParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "好友ID") + @QueryField(type = QueryType.EQ) + private Integer friendId; + + @ApiModelProperty(value = "消息类型") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "消息内容") + private String content; + + @ApiModelProperty(value = "状态, 0未读, 1已读") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "是否只要僵尸, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Boolean onlyFake; + +} diff --git a/src/main/java/com/gxwebsoft/love/param/ChatMessageParam.java b/src/main/java/com/gxwebsoft/love/param/ChatMessageParam.java new file mode 100644 index 0000000..4802343 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/ChatMessageParam.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.love.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 2023-06-10 18:27:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ChatMessageParam对象", description = "聊天消息表查询参数") +public class ChatMessageParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "发送用户ID") + @QueryField(type = QueryType.EQ) + private Integer formUserId; + + @ApiModelProperty(value = "接受用户ID") + @QueryField(type = QueryType.EQ) + private Integer toUserId; + + @ApiModelProperty(value = "消息类型") + @QueryField(type = QueryType.EQ) + private String type; + + @ApiModelProperty(value = "消息内容") + private String content; + + @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/love/param/ProfitParam.java b/src/main/java/com/gxwebsoft/love/param/ProfitParam.java new file mode 100644 index 0000000..048138e --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/ProfitParam.java @@ -0,0 +1,82 @@ +package com.gxwebsoft.love.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.math.BigDecimal; + +/** + * 门店收益明细表查询参数 + * + * @author 科技小王子 + * @since 2023-06-28 20:49:17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProfitParam对象", description = "门店收益明细表查询参数") +public class ProfitParam 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 userId; + + @ApiModelProperty(value = "余额变动场景(10用户充值 20用户消费 30管理员操作 40订单退款)") + @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; + + @ApiModelProperty(value = "余额变动场景筛选") + private String sceneMultiple; + + @QueryField(value = "grade_id", type = QueryType.GE) + @TableField(exist = false) + @ApiModelProperty("会员等级起始值") + private String gradeStart; + + @QueryField(value = "grade_id", type = QueryType.LE) + @TableField(exist = false) + @ApiModelProperty("会员等级结束值") + private String gradeEnd; + +} diff --git a/src/main/java/com/gxwebsoft/love/param/UserPlanEquityParam.java b/src/main/java/com/gxwebsoft/love/param/UserPlanEquityParam.java new file mode 100644 index 0000000..5a82ffb --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/UserPlanEquityParam.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.love.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; + +/** + * 会员套餐管理表查询参数 + * + * @author 科技小王子 + * @since 2023-06-23 11:34:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserPlanEquityParam对象", description = "会员套餐管理表查询参数") +public class UserPlanEquityParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "权益ID") + @QueryField(type = QueryType.EQ) + private Integer planEquityId; + + @ApiModelProperty(value = "套餐ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "类型 0单身 1婚介") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "套餐名称") + private String planName; + + @ApiModelProperty(value = "真实姓名") + private String realName; + + @ApiModelProperty(value = "手机号码") + private String phone; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在区县") + private String region; + + @ApiModelProperty(value = "完整地区") + private String area; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "到期时间") + private String expirationTime; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + +} diff --git a/src/main/java/com/gxwebsoft/love/param/UserPlanIconParam.java b/src/main/java/com/gxwebsoft/love/param/UserPlanIconParam.java new file mode 100644 index 0000000..cd23a9f --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/UserPlanIconParam.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.love.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; + +/** + * 会员套餐权益表查询参数 + * + * @author 科技小王子 + * @since 2023-06-25 18:09:34 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserPlanIconParam对象", description = "会员套餐权益表查询参数") +public class UserPlanIconParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "套餐ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "权益") + private String name; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/love/param/UserPlanLogParam.java b/src/main/java/com/gxwebsoft/love/param/UserPlanLogParam.java new file mode 100644 index 0000000..21c02eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/UserPlanLogParam.java @@ -0,0 +1,68 @@ +package com.gxwebsoft.love.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; + +import java.math.BigDecimal; + +/** + * 会员特权购买记录表查询参数 + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserPlanLogParam对象", description = "会员特权购买记录表查询参数") +public class UserPlanLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "订单号") + private String logNo; + + @ApiModelProperty(value = "付款金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "套餐ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "会员等级ID") + @QueryField(type = QueryType.EQ) + private Integer gradeId; + + @ApiModelProperty(value = "门店ID") + private Integer merchantId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/love/param/UserPlanParam.java b/src/main/java/com/gxwebsoft/love/param/UserPlanParam.java new file mode 100644 index 0000000..df8da75 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/UserPlanParam.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.love.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 2023-06-21 11:21:01 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserPlanParam对象", description = "会员套餐管理表查询参数") +public class UserPlanParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "套餐ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "类型 0单身 1婚介") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "套餐名称") + private String name; + + @ApiModelProperty(value = "副标题") + private String subName; + + @ApiModelProperty(value = "会员身份ID") + @QueryField(type = QueryType.EQ) + private Integer roleId; + + @ApiModelProperty(value = "会员等级ID") + @QueryField(type = QueryType.EQ) + private String gradeId; + + @ApiModelProperty(value = "图标") + private String icon; + + @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 = "当前登录用户ID") + @QueryField(type = QueryType.EQ) + private Integer loginUserId; + +} diff --git a/src/main/java/com/gxwebsoft/love/param/UserPlanPriceParam.java b/src/main/java/com/gxwebsoft/love/param/UserPlanPriceParam.java new file mode 100644 index 0000000..3988505 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/UserPlanPriceParam.java @@ -0,0 +1,53 @@ +package com.gxwebsoft.love.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; + +import java.math.BigDecimal; + +/** + * 会员套餐定价表查询参数 + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserPlanPriceParam对象", description = "会员套餐定价表查询参数") +public class UserPlanPriceParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "套餐ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "项目名称") + private String name; + + @ApiModelProperty(value = "价格") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/love/param/UserProfileParam.java b/src/main/java/com/gxwebsoft/love/param/UserProfileParam.java new file mode 100644 index 0000000..ac3c868 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/param/UserProfileParam.java @@ -0,0 +1,193 @@ +package com.gxwebsoft.love.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.util.Collection; +import java.util.Set; + +/** + * 会员资料表查询参数 + * + * @author 科技小王子 + * @since 2023-06-09 21:42:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserProfileParam对象", description = "会员资料表查询参数") +public class UserProfileParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "兴趣爱好") + private String interest; + + @ApiModelProperty(value = "年龄") + @TableField(exist = false) + private String age; + + @ApiModelProperty(value = "身高") + private String height; + + @ApiModelProperty(value = "月收入") + private String monthlyPay; + + @ApiModelProperty(value = "年收入") + private String yearlyPay; + + @ApiModelProperty(value = "学历") + private String education; + + @ApiModelProperty(value = "职业") + private String vocation; + + @ApiModelProperty(value = "婚姻状况") + private String maritalStatus; + + @ApiModelProperty(value = "有无小孩") + private String hasChildren; + + @ApiModelProperty(value = "是否要小孩") + private String haveChild; + + @ApiModelProperty(value = "职业") + private String position; + + @ApiModelProperty(value = "体重") + private String weight; + + @ApiModelProperty(value = "是否有房有车") + private String hasCar; + + @ApiModelProperty(value = "何时想结婚") + private String whenMarried; + + @ApiModelProperty(value = "择偶条件-年龄") + private String ageMate; + + @ApiModelProperty(value = "择偶条件-身高") + private String heightMate; + + @ApiModelProperty(value = "择偶条件-月收入") + private String monthlyPayMate; + + @ApiModelProperty(value = "择偶条件-年收入") + private String yearlyPayMate; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "所在地区") + private String area; + + @ApiModelProperty(value = "择偶条件-所在省份") + private String provinceMate; + + @ApiModelProperty(value = "择偶条件-所在城市") + private String cityMate; + + @ApiModelProperty(value = "择偶条件-所在辖区") + private String regionMate; + + @ApiModelProperty(value = "择偶条件-地区") + private String areaMate; + + @ApiModelProperty(value = "择偶条件-学历") + private String educationMate; + + @ApiModelProperty(value = "择偶条件-婚姻状况") + private String maritalStatusMate; + + @ApiModelProperty(value = "择偶条件-有无小孩") + private String hasChildrenMate; + + @ApiModelProperty(value = "择偶条件-是否要小孩") + private String haveChildMate; + + @ApiModelProperty(value = "择偶条件-职业") + private String vocationMate; + + @ApiModelProperty(value = "择偶条件-体重") + private String weightMate; + + @ApiModelProperty(value = "择偶条件-体型") + private String shapeMate; + + @ApiModelProperty(value = "择偶条件-是否吸烟") + private String isSmokingMate; + + @ApiModelProperty(value = "择偶条件-是否喝酒") + private String isDrinkMate; + + @ApiModelProperty(value = "择偶条件-是否有车") + private String hasCarMate; + + @ApiModelProperty(value = "择偶条件-是否有房") + private String hasHouseMate; + + @ApiModelProperty(value = "择偶条件-何时想结婚") + private String whenMarriedMate; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Boolean recommend; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "场景") + @TableField(exist = false) + private String scene; + + @ApiModelProperty(value = "是否查询关注状态") + @TableField(exist = false) + private Boolean showFollow; + + @ApiModelProperty(value = "当前登录用户ID") + @TableField(exist = false) + private Integer loginUserId; + + @ApiModelProperty("性别, 字典标识") + private String sex; + + @ApiModelProperty(value = "用户id集合") + @TableField(exist = false) + private Collection userIds; + + @ApiModelProperty(value = "排除用户id集合") + @TableField(exist = false) + private Collection nUserIds; + + @ApiModelProperty(value = "随机读取") + @TableField(exist = false) + private boolean random; + + @ApiModelProperty(value = "读取相册") + @TableField(exist = false) + private boolean albums; + +} diff --git a/src/main/java/com/gxwebsoft/love/service/CertificateService.java b/src/main/java/com/gxwebsoft/love/service/CertificateService.java new file mode 100644 index 0000000..a1ef22e --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/CertificateService.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.Certificate; +import com.gxwebsoft.love.param.CertificateParam; +import com.gxwebsoft.love.vo.idcheck.BackRecognitionResult; +import com.gxwebsoft.love.vo.idcheck.FrontRecognitionResult; +import com.gxwebsoft.love.vo.idcheck.Response; + +import java.util.List; + +/** + * 证件管理记录表Service + * + * @author 科技小王子 + * @since 2023-06-24 11:18:52 + */ +public interface CertificateService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CertificateParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CertificateParam param); + + /** + * 根据id查询 + * + * @param certificateId 证件id + * @return Certificate + */ + Certificate getByIdRel(Integer certificateId); + + boolean verifyIdcard(Certificate param, List files); + + Response idcardfrontrecongnition(String imageUrl); + + Response idcardbackrecongnition(String imageUrl); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/ChatConversationService.java b/src/main/java/com/gxwebsoft/love/service/ChatConversationService.java new file mode 100644 index 0000000..c357400 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/ChatConversationService.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.ChatConversation; +import com.gxwebsoft.love.param.ChatConversationParam; +import com.gxwebsoft.love.vo.ChatConversationVO; + +import java.util.List; + +/** + * 聊天消息表Service + * + * @author 科技小王子 + * @since 2023-06-15 21:26:48 + */ +public interface ChatConversationService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ChatConversationParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ChatConversationParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ChatConversation + */ + ChatConversation getByIdRel(Integer id); + + ChatConversation getByBothId(Integer formUserId, Integer toUserId); + + List getFriendList(ChatConversationParam param); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/ChatMessageService.java b/src/main/java/com/gxwebsoft/love/service/ChatMessageService.java new file mode 100644 index 0000000..77cc0ca --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/ChatMessageService.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.ChatMessage; +import com.gxwebsoft.love.param.ChatMessageParam; + +import java.util.List; + +/** + * 聊天消息表Service + * + * @author 科技小王子 + * @since 2023-06-10 18:27:25 + */ +public interface ChatMessageService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ChatMessageParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ChatMessageParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return ChatMessage + */ + ChatMessage getByIdRel(Integer id); + + List getUnreadMessage(Integer fromUserId, Integer toUserId); + + boolean sendMessage(ChatMessage message); + + List getFriendMessage(Integer userId1, Integer userId2); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/ProfitService.java b/src/main/java/com/gxwebsoft/love/service/ProfitService.java new file mode 100644 index 0000000..bb071ce --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/ProfitService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.Profit; +import com.gxwebsoft.love.param.ProfitParam; + +import java.util.List; + +/** + * 门店收益明细表Service + * + * @author 科技小王子 + * @since 2023-06-28 20:49:17 + */ +public interface ProfitService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProfitParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProfitParam param); + + /** + * 根据id查询 + * + * @param profitId 主键ID + * @return Profit + */ + Profit getByIdRel(Integer profitId); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/UserPlanEquityService.java b/src/main/java/com/gxwebsoft/love/service/UserPlanEquityService.java new file mode 100644 index 0000000..5df3aa9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/UserPlanEquityService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.UserPlanEquity; +import com.gxwebsoft.love.param.UserPlanEquityParam; + +import java.util.List; + +/** + * 会员套餐管理表Service + * + * @author 科技小王子 + * @since 2023-06-23 11:34:03 + */ +public interface UserPlanEquityService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserPlanEquityParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserPlanEquityParam param); + + /** + * 根据id查询 + * + * @param planEquityId 权益ID + * @return UserPlanEquity + */ + UserPlanEquity getByIdRel(Integer planEquityId); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/UserPlanIconService.java b/src/main/java/com/gxwebsoft/love/service/UserPlanIconService.java new file mode 100644 index 0000000..14a5edb --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/UserPlanIconService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.UserPlanIcon; +import com.gxwebsoft.love.param.UserPlanIconParam; + +import java.util.List; + +/** + * 会员套餐权益表Service + * + * @author 科技小王子 + * @since 2023-06-25 18:09:34 + */ +public interface UserPlanIconService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserPlanIconParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserPlanIconParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return UserPlanIcon + */ + UserPlanIcon getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/UserPlanLogService.java b/src/main/java/com/gxwebsoft/love/service/UserPlanLogService.java new file mode 100644 index 0000000..7ff8bd6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/UserPlanLogService.java @@ -0,0 +1,46 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.UserPlanLog; +import com.gxwebsoft.love.param.UserPlanLogParam; + +import java.util.List; + +/** + * 会员特权购买记录表Service + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +public interface UserPlanLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserPlanLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserPlanLogParam param); + + /** + * 根据id查询 + * + * @param logId ID + * @return UserPlanLog + */ + UserPlanLog getByIdRel(Integer logId); + + UserPlanLog getByOutTradeNo(String OutTradeNo); + + void updateByOutTradeNo(UserPlanLog log); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/UserPlanPriceService.java b/src/main/java/com/gxwebsoft/love/service/UserPlanPriceService.java new file mode 100644 index 0000000..93577e8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/UserPlanPriceService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.UserPlanPrice; +import com.gxwebsoft.love.param.UserPlanPriceParam; + +import java.util.List; + +/** + * 会员套餐定价表Service + * + * @author 科技小王子 + * @since 2023-06-20 18:07:50 + */ +public interface UserPlanPriceService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserPlanPriceParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserPlanPriceParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return UserPlanPrice + */ + UserPlanPrice getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/UserPlanService.java b/src/main/java/com/gxwebsoft/love/service/UserPlanService.java new file mode 100644 index 0000000..5c28173 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/UserPlanService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.UserPlan; +import com.gxwebsoft.love.param.UserPlanParam; + +import java.util.List; + +/** + * 会员套餐管理表Service + * + * @author 科技小王子 + * @since 2023-06-21 11:21:01 + */ +public interface UserPlanService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserPlanParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserPlanParam param); + + /** + * 根据id查询 + * + * @param planId 套餐ID + * @return UserPlan + */ + UserPlan getByIdRel(Integer planId, Integer loginUserId); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/UserProfileService.java b/src/main/java/com/gxwebsoft/love/service/UserProfileService.java new file mode 100644 index 0000000..1554f72 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/UserProfileService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.love.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.UserProfile; +import com.gxwebsoft.love.param.UserProfileParam; + +import java.util.List; + +/** + * 会员资料表Service + * + * @author 科技小王子 + * @since 2023-06-09 21:42:26 + */ +public interface UserProfileService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserProfileParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserProfileParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return UserProfile + */ + UserProfile getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/CertificateServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/CertificateServiceImpl.java new file mode 100644 index 0000000..2f16e8e --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/CertificateServiceImpl.java @@ -0,0 +1,158 @@ +package com.gxwebsoft.love.service.impl; + +import cn.hutool.core.exceptions.ExceptionUtil; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.TypeReference; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.HttpUtils; +import com.gxwebsoft.common.core.utils.ImageUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.love.entity.Certificate; +import com.gxwebsoft.love.mapper.CertificateMapper; +import com.gxwebsoft.love.param.CertificateParam; +import com.gxwebsoft.love.service.CertificateService; +import com.gxwebsoft.love.vo.idcheck.BackRecognitionResult; +import com.gxwebsoft.love.vo.idcheck.FrontRecognitionResult; +import com.gxwebsoft.love.vo.idcheck.Response; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.util.EntityUtils; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 证件管理记录表Service实现 + * + * @author 科技小王子 + * @since 2023-06-24 11:18:52 + */ +@Service +public class CertificateServiceImpl extends ServiceImpl implements CertificateService { + + @Resource + private RestTemplate restTemplate; + + private String appcode = "566b5786c5874464909d8c0b7f64cdc7"; + + @Override + public PageResult pageRel(CertificateParam 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(CertificateParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Certificate getByIdRel(Integer certificateId) { + CertificateParam param = new CertificateParam(); + param.setCertificateId(certificateId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public boolean verifyIdcard(Certificate param, List files) { + // 验证正面 + Response front = idcardfrontrecongnition(files.get(0)); + if(front.getError_code() != 0){ + ExceptionUtil.wrapAndThrow(new Exception(front.getReason())); + return false; + } + + + // 验证反面 + Response back = idcardbackrecongnition(files.get(1)); + if(back.getError_code() != 0){ + ExceptionUtil.wrapAndThrow(new Exception(back.getReason())); + return false; + } + + // 信息是否一致 + if(!param.getCertificateCode().equals(front.getResult().getIdcardno())){ + return false; + } + if(!param.getRealName().equals(front.getResult().getName())){ + return false; + } + boolean b = LocalDateTime.parse(back.getResult().getEndDate()).compareTo(LocalDateTime.now()) > 0; + return b; + } + + @Override + public Response idcardfrontrecongnition(String imageUrl) { + + String host = "https://zidv2.market.alicloudapi.com"; + String path = "/thirdnode/ImageAI/idcardfrontrecongnition"; + String method = "POST"; + Map headers = new HashMap(); + //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105 + headers.put("Authorization", "APPCODE " + appcode); + //根据API的要求,定义相对应的Content-Type + headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + Map querys = new HashMap(); + Map bodys = new HashMap(); + bodys.put("base64Str", ImageUtil.ImageBase64(imageUrl)); + + + try { + HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys); + HttpEntity entity = response.getEntity(); + String string = EntityUtils.toString(entity); + Response o = JSONObject.parseObject(string, new TypeReference>() { + }); + + return o; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + + @Override + public Response idcardbackrecongnition(String imageUrl) { + + String host = "https://zidv2.market.alicloudapi.com"; + String path = "/thirdnode/ImageAI/idcardbackrecongnition"; + String method = "POST"; + Map headers = new HashMap(); + //最后在header中的格式(中间是英文空格)为Authorization:APPCODE 83359fd73fe94948385f570e3c139105 + headers.put("Authorization", "APPCODE " + appcode); + //根据API的要求,定义相对应的Content-Type + headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + Map querys = new HashMap(); + Map bodys = new HashMap(); + bodys.put("base64Str", ImageUtil.ImageBase64(imageUrl)); + + + try { + HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys); + HttpEntity entity = response.getEntity(); + String string = EntityUtils.toString(entity); + Response o = JSONObject.parseObject(string, new TypeReference>() { + }); + + return o; + } catch (Exception e) { + e.printStackTrace(); + } + + return null; + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/ChatConversationServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/ChatConversationServiceImpl.java new file mode 100644 index 0000000..610f592 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/ChatConversationServiceImpl.java @@ -0,0 +1,124 @@ +package com.gxwebsoft.love.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.toolkit.JoinWrappers; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.ChatConversation; +import com.gxwebsoft.love.entity.ChatMessage; +import com.gxwebsoft.love.mapper.ChatConversationMapper; +import com.gxwebsoft.love.param.ChatConversationParam; +import com.gxwebsoft.love.service.ChatConversationService; +import com.gxwebsoft.love.vo.ChatConversationVO; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 聊天消息表Service实现 + * + * @author 科技小王子 + * @since 2023-06-15 21:26:48 + */ +@Service +public class ChatConversationServiceImpl extends ServiceImpl implements ChatConversationService { + + @Resource + private UserService userService; + + + @Override + public PageResult pageRel(ChatConversationParam param) { + + MPJLambdaWrapper wrapper = JoinWrappers.lambda("t",ChatConversation.class) + .selectAll(ChatConversation.class) + // 查询用户 +// .eq(ObjectUtils.isNotEmpty(param.getUserId()), ChatConversation::getUserId, param.getUserId()) + .and(ObjectUtils.isNotEmpty(param.getUserId()), w2-> { + w2.eq(ChatConversation::getUserId, param.getUserId()).or(w3->{ + w3.eq(ChatConversation::getFriendId, param.getUserId()); + }); + } ) + // 查询未读 + .gt(param.getStatus()!= null &¶m.getStatus() == 1, ChatConversation::getUnRead, 0) + // + .selectAssociation("t1",User.class, ChatConversationVO::getFriendInfo) + .selectAssociation("t2",User.class, ChatConversationVO::getUserInfo) + .innerJoin(User.class,"t1", User::getUserId, ChatConversation::getFriendId) + .innerJoin(User.class, "t2", wrapper1 -> wrapper1.notLike(param.getOnlyFake(),User::getUsername, "wx_%").eq(User::getUserId, ChatConversation::getUserId)) + // 消息列表 影响分页 暂时无解User::getUserId, ChatConversation::getUserId, +// .selectCollection(ChatMessage.class, ChatConversationVO::getMessages) +// .leftJoin(ChatMessage.class, on -> +// on.and(w -> { +// w.eq(ChatMessage::getFormUserId, ChatConversation::getUserId).eq(ChatMessage::getToUserId, ChatConversation::getFriendId); +// }) +// .or(w -> { +// w.eq(ChatMessage::getFormUserId, ChatConversation::getFriendId).eq(ChatMessage::getToUserId, ChatConversation::getUserId); +// }) +// .orderByDesc(ChatMessage::getCreateTime) +// ) + + .orderByDesc(ChatConversation::getUpdateTime) + ; + + + Page chatConversationVOPage = baseMapper.selectJoinPage(new Page<>(param.getPage(), param.getLimit()), ChatConversationVO.class, wrapper); + + return new PageResult<>(chatConversationVOPage.getRecords(), chatConversationVOPage.getTotal()); + } + + @Override + public List listRel(ChatConversationParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + + return page.sortRecords(list); + } + + @Override + public ChatConversation getByIdRel(Integer id) { + ChatConversationParam param = new ChatConversationParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public ChatConversation getByBothId(Integer formUserId, Integer toUserId) { + ChatConversationParam param = new ChatConversationParam(); + param.setUserId(formUserId); + param.setFriendId(toUserId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public List getFriendList(ChatConversationParam param) { + MPJLambdaWrapper wrapper = JoinWrappers.lambda(ChatConversation.class) + .selectAll(ChatConversation.class) + .eq(ChatConversation::getUserId, param.getUserId()) + .selectAssociation(User.class, ChatConversationVO::getFriendInfo) + .leftJoin(User.class, User::getUserId, ChatConversation::getFriendId) + .selectCollection(ChatMessage.class, ChatConversationVO::getMessages) + .leftJoin(ChatMessage.class, on -> + on.and(w -> { + w.eq(ChatMessage::getFormUserId, param.getUserId()).eq(ChatMessage::getToUserId, ChatConversation::getFriendId); + }) + .or(w -> { + w.eq(ChatMessage::getFormUserId, ChatConversation::getFriendId).eq(ChatMessage::getToUserId, param.getUserId()); + }) + .orderByDesc(ChatMessage::getCreateTime) + ) + .orderByDesc(ChatConversation::getUpdateTime); + + + return baseMapper.selectJoinList(ChatConversationVO.class, wrapper); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/ChatMessageServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/ChatMessageServiceImpl.java new file mode 100644 index 0000000..598b468 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/ChatMessageServiceImpl.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.love.service.impl; + +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.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.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.ChatConversation; +import com.gxwebsoft.love.entity.ChatMessage; +import com.gxwebsoft.love.enums.ChatMessageType; +import com.gxwebsoft.love.mapper.ChatMessageMapper; +import com.gxwebsoft.love.param.ChatMessageParam; +import com.gxwebsoft.love.service.ChatConversationService; +import com.gxwebsoft.love.service.ChatMessageService; +import com.gxwebsoft.love.socketio.cache.ClientCache; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 聊天消息表Service实现 + * + * @author 科技小王子 + * @since 2023-06-10 18:27:25 + */ +@Service +public class ChatMessageServiceImpl extends ServiceImpl implements ChatMessageService { + + @Resource + private ChatConversationService conversationService; + + @Resource + private ClientCache clientCache; + + @Resource + private UserService userService; + + @Override + public PageResult pageRel(ChatMessageParam param) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.and(w->{ w.eq(ChatMessage::getFormUserId, param.getToUserId()).eq(ChatMessage::getToUserId,param.getFormUserId()); }) + .or(w->{ w.eq(ChatMessage::getFormUserId, param.getFormUserId()).eq(ChatMessage::getToUserId,param.getToUserId());}) + .orderByAsc(ChatMessage::getCreateTime); + + Page chatMessagePage = new Page<>(param.getPage(), param.getLimit()); + Page result = baseMapper.selectPage(chatMessagePage, wrapper); + List list = result.getRecords(); + Set userIds = new HashSet<>(); + if(param.getFormUserId() != null && param.getToUserId() != null){ + userIds.add(param.getToUserId()); + userIds.add(param.getFormUserId()); + }else { + list.stream().forEach(d->{ + userIds.add(d.getToUserId()); + userIds.add(d.getFormUserId()); + }); + } + List users = userService.list(Wrappers.lambdaQuery(User.class).in(User::getUserId, userIds)); + Map> collect = users.stream().collect(Collectors.groupingBy(User::getUserId)); + list.stream().forEach(d->{ + d.setFormUserInfo(collect.get(d.getFormUserId()).get(0)); + }); + return new PageResult<>(list, result.getTotal()); + } + + @Override + public List listRel(ChatMessageParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public ChatMessage getByIdRel(Integer id) { + ChatMessageParam param = new ChatMessageParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public List getUnreadMessage(Integer fromUserId, Integer toUserId) { + return null; + } + + @Override + @Transactional + public boolean sendMessage(ChatMessage message) { + Integer userId = message.getFormUserId(); + Integer toUserId = message.getToUserId(); + + User toUser = userService.getById(toUserId); + message.setToUserInfo(toUser); + // 判断双方是否是好友(有消息记录),没有就添加两条记录 后续可以做拉黑什么的处理 + ChatConversation conversation1 = conversationService.getByBothId(userId, toUserId); + ChatConversation conversation2 = conversationService.getByBothId(toUserId, userId); + if(conversation1 == null){ + conversation1 = new ChatConversation(); + conversation1.setUserId(Integer.valueOf(userId)); + conversation1.setFriendId(toUserId); + } + if(conversation2 == null){ + conversation2 = new ChatConversation(); + conversation2.setUserId(toUserId); + conversation2.setFriendId(Integer.valueOf(userId)); + } + String lastContent; + if(ChatMessageType.IMAGE.getName().equals(message.getType())){ + lastContent = "[图片]"; + } else if (ChatMessageType.VOICE.getName().equals(message.getType())) { + lastContent = "[语音]"; + }else if (ChatMessageType.CARD.getName().equals(message.getType())) { + lastContent = "[卡片]"; + }else { + lastContent = message.getContent(); + } + conversation1.setContent(lastContent); + //未读+1 + conversation2.setUnRead(conversation2.getUnRead() + 1); + conversation2.setContent(lastContent); + + // 发送到接收方 + clientCache.sendUserEvent(message.getToUserId() + "", "message", message); + // 发送到管理员 + if(!toUser.getUsername().startsWith("wx_")){ + clientCache.sendUserEvent("admin", "message", message); + } + + this.save(message); + conversationService.saveOrUpdate(conversation1); + conversationService.saveOrUpdate(conversation2); + return true; + } + + @Override + public List getFriendMessage(Integer userId1, Integer userId2) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.and(w->{ w.eq(ChatMessage::getFormUserId, userId1).eq(ChatMessage::getToUserId,userId2); }) + .or(w->{ w.eq(ChatMessage::getFormUserId, userId2).eq(ChatMessage::getToUserId,userId1);}) + .orderByAsc(ChatMessage::getCreateTime); + + return baseMapper.selectList(wrapper); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/ProfitServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/ProfitServiceImpl.java new file mode 100644 index 0000000..6c82733 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/ProfitServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.love.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.love.mapper.ProfitMapper; +import com.gxwebsoft.love.service.ProfitService; +import com.gxwebsoft.love.entity.Profit; +import com.gxwebsoft.love.param.ProfitParam; +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-06-28 20:49:17 + */ +@Service +public class ProfitServiceImpl extends ServiceImpl implements ProfitService { + + @Override + public PageResult pageRel(ProfitParam 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(ProfitParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Profit getByIdRel(Integer profitId) { + ProfitParam param = new ProfitParam(); + param.setProfitId(profitId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/UserPlanEquityServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanEquityServiceImpl.java new file mode 100644 index 0000000..776dc1e --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanEquityServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.love.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.love.entity.UserPlanEquity; +import com.gxwebsoft.love.mapper.UserPlanEquityMapper; +import com.gxwebsoft.love.param.UserPlanEquityParam; +import com.gxwebsoft.love.service.UserPlanEquityService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 会员套餐管理表Service实现 + * + * @author 科技小王子 + * @since 2023-06-23 11:34:03 + */ +@Service +public class UserPlanEquityServiceImpl extends ServiceImpl implements UserPlanEquityService { + + @Override + public PageResult pageRel(UserPlanEquityParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("plan_id desc,create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(UserPlanEquityParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("plan_id desc,create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserPlanEquity getByIdRel(Integer planEquityId) { + UserPlanEquityParam param = new UserPlanEquityParam(); + param.setPlanEquityId(planEquityId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/UserPlanIconServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanIconServiceImpl.java new file mode 100644 index 0000000..9d5db34 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanIconServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.love.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.love.mapper.UserPlanIconMapper; +import com.gxwebsoft.love.service.UserPlanIconService; +import com.gxwebsoft.love.entity.UserPlanIcon; +import com.gxwebsoft.love.param.UserPlanIconParam; +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-06-25 18:09:34 + */ +@Service +public class UserPlanIconServiceImpl extends ServiceImpl implements UserPlanIconService { + + @Override + public PageResult pageRel(UserPlanIconParam 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(UserPlanIconParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserPlanIcon getByIdRel(Integer id) { + UserPlanIconParam param = new UserPlanIconParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/UserPlanLogServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanLogServiceImpl.java new file mode 100644 index 0000000..7377d9a --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanLogServiceImpl.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.love.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.love.mapper.UserPlanLogMapper; +import com.gxwebsoft.love.service.UserPlanLogService; +import com.gxwebsoft.love.entity.UserPlanLog; +import com.gxwebsoft.love.param.UserPlanLogParam; +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-06-20 18:07:50 + */ +@Service +public class UserPlanLogServiceImpl extends ServiceImpl implements UserPlanLogService { + + @Override + public PageResult pageRel(UserPlanLogParam 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(UserPlanLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserPlanLog getByIdRel(Integer logId) { + UserPlanLogParam param = new UserPlanLogParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + + /** + * 按订充值单号查询 + */ + @Override + public UserPlanLog getByOutTradeNo(String OutTradeNo) { + UserPlanLogParam param = new UserPlanLogParam(); + param.setLogNo(OutTradeNo); + return param.getOne(baseMapper.getByOutTradeNo(param)); + } + + /** + * 支付成功 更新充值订单状态 + */ + @Override + public void updateByOutTradeNo(UserPlanLog OutTradeNo) { + baseMapper.updateByOutTradeNo(OutTradeNo); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/UserPlanPriceServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanPriceServiceImpl.java new file mode 100644 index 0000000..64f32f6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanPriceServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.love.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.love.mapper.UserPlanPriceMapper; +import com.gxwebsoft.love.service.UserPlanPriceService; +import com.gxwebsoft.love.entity.UserPlanPrice; +import com.gxwebsoft.love.param.UserPlanPriceParam; +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-06-20 18:07:50 + */ +@Service +public class UserPlanPriceServiceImpl extends ServiceImpl implements UserPlanPriceService { + + @Override + public PageResult pageRel(UserPlanPriceParam 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(UserPlanPriceParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserPlanPrice getByIdRel(Integer id) { + UserPlanPriceParam param = new UserPlanPriceParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/UserPlanServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanServiceImpl.java new file mode 100644 index 0000000..ad54c1c --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/UserPlanServiceImpl.java @@ -0,0 +1,102 @@ +package com.gxwebsoft.love.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.love.entity.UserPlan; +import com.gxwebsoft.love.entity.UserPlanEquity; +import com.gxwebsoft.love.entity.UserPlanIcon; +import com.gxwebsoft.love.entity.UserPlanPrice; +import com.gxwebsoft.love.mapper.UserPlanMapper; +import com.gxwebsoft.love.param.UserPlanEquityParam; +import com.gxwebsoft.love.param.UserPlanLogParam; +import com.gxwebsoft.love.param.UserPlanParam; +import com.gxwebsoft.love.service.*; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 会员套餐管理表Service实现 + * + * @author 科技小王子 + * @since 2023-06-21 11:21:01 + */ +@Service +public class UserPlanServiceImpl extends ServiceImpl implements UserPlanService { + @Resource + private UserPlanPriceService userPlanPriceService; + @Resource + private UserPlanLogService userPlanLogService; + @Resource + private UserPlanEquityService userPlanEquityService; + @Resource + private UserPlanIconService userPlanIconService; + + @Override + public PageResult pageRel(UserPlanParam param) { + PageParam page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + list.forEach(d -> { + d.setPrice(userPlanPriceService.list(new LambdaQueryWrapper().eq(UserPlanPrice::getPlanId, d.getPlanId()))); + final UserPlanLogParam logParam = new UserPlanLogParam(); + logParam.setPlanId(d.getPlanId()); + logParam.setUserId(param.getLoginUserId()); + d.setLog(userPlanLogService.listRel(logParam)); + d.setIcons(userPlanIconService.list(new LambdaQueryWrapper().eq(UserPlanIcon::getPlanId,d.getPlanId()))); + }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(UserPlanParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + list.forEach(d -> { + // 套餐价格列表 + d.setPrice(userPlanPriceService.list(new LambdaQueryWrapper().eq(UserPlanPrice::getPlanId, d.getPlanId()))); + // 购买记录 + final UserPlanLogParam logParam = new UserPlanLogParam(); + logParam.setPlanId(d.getPlanId()); + logParam.setUserId(param.getLoginUserId()); + d.setLog(userPlanLogService.pageRel(logParam).getList()); + d.setIcons(userPlanIconService.list(new LambdaQueryWrapper().eq(UserPlanIcon::getPlanId,d.getPlanId()))); + // 解锁的功能 + final UserPlanEquityParam userPlanEquityParam = new UserPlanEquityParam(); + userPlanEquityParam.setUserId(param.getLoginUserId()); + userPlanEquityParam.setPlanId(d.getPlanId()); + d.setEquity(userPlanEquityService.listRel(userPlanEquityParam)); + }); + return page.sortRecords(list); + } + + @Override + public UserPlan getByIdRel(Integer planId,Integer loginUserId) { + UserPlanParam param = new UserPlanParam(); + param.setPlanId(planId); + final List list = baseMapper.selectListRel(param); + list.forEach(d -> { + // 套餐价格列表 + d.setPrice(userPlanPriceService.list(new LambdaQueryWrapper().eq(UserPlanPrice::getPlanId, d.getPlanId()))); + // 购买记录 + final UserPlanLogParam logParam = new UserPlanLogParam(); + logParam.setPlanId(d.getPlanId()); + logParam.setUserId(loginUserId); + logParam.setLimit(1L); + d.setLog(userPlanLogService.pageRel(logParam).getList()); + d.setIcons(userPlanIconService.list(new LambdaQueryWrapper().eq(UserPlanIcon::getPlanId,d.getPlanId()))); + // 解锁的功能 + final UserPlanEquityParam userPlanEquityParam = new UserPlanEquityParam(); + userPlanEquityParam.setUserId(loginUserId); + userPlanEquityParam.setPlanId(d.getPlanId()); + d.setEquity(userPlanEquityService.listRel(userPlanEquityParam)); + }); + return param.getOne(list); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/service/impl/UserProfileServiceImpl.java b/src/main/java/com/gxwebsoft/love/service/impl/UserProfileServiceImpl.java new file mode 100644 index 0000000..3035205 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/service/impl/UserProfileServiceImpl.java @@ -0,0 +1,148 @@ +package com.gxwebsoft.love.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.UserProfile; +import com.gxwebsoft.love.mapper.UserProfileMapper; +import com.gxwebsoft.love.param.UserProfileParam; +import com.gxwebsoft.love.service.UserProfileService; +import com.gxwebsoft.shop.entity.UserFollow; +import com.gxwebsoft.shop.entity.UserLike; +import com.gxwebsoft.shop.service.UserFollowService; +import com.gxwebsoft.shop.service.UserLikeService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * 会员资料表Service实现 + * + * @author 科技小王子 + * @since 2023-06-09 21:42:26 + */ +@Service +public class UserProfileServiceImpl extends ServiceImpl implements UserProfileService { + @Resource + private UserService userService; + @Resource + private UserFollowService userFollowService; + @Resource + private UserLikeService userLikeService; + + private final Logger logger = LoggerFactory.getLogger(getClass()); + + + @Override + public PageResult pageRel(UserProfileParam param) { + PageParam page = new PageParam<>(param); + + + // 我关注的人 + final List myFollows = userFollowService.list(new LambdaQueryWrapper().eq(UserFollow::getUserId, param.getLoginUserId()).orderByDesc(UserFollow::getCreateTime)); + List followIds = myFollows.stream().map(UserFollow::getShopId).collect(Collectors.toList()); + // 我点赞的人 + final List myLikes = userLikeService.list(new LambdaQueryWrapper().eq(UserLike::getUserId, param.getLoginUserId())); + Set likeUserIds = myLikes.stream().map(UserLike::getToUserId).collect(Collectors.toSet()); + + // 搜素条件 + if (param.getScene() != null) { + // 推荐recommend + if (param.getScene().equals("recommend")) { + param.setRecommend(true); + param.setCityMate(null); + param.setNUserIds(likeUserIds); // 排除点赞的人 + page.setDefaultOrder("create_time desc"); + } + // 同城intraCity + if (param.getScene().equals("intraCity")) { + param.setRecommend(null); + param.setNUserIds(likeUserIds); // 排除点赞的人 + page.setDefaultOrder("create_time desc"); + } + // 关注focus + if (param.getLoginUserId() != null && param.getScene().equals("focus")) { + + if (!CollectionUtils.isEmpty(followIds)) { + // 分页处理 + param.setUserIds(followIds); + param.setRecommend(null); + param.setCityMate(null); + List list = baseMapper.selectPageRel(page, param); + final List userList = userService.listByIds(followIds); + final Map> collect = userList.stream().collect(Collectors.groupingBy(User::getUserId)); + // 重新排序 + List newList = new ArrayList<>(); + for (Integer id : followIds) { + Optional first = list.stream().filter(p -> p.getUserId().equals(id)).findFirst(); + if (first.isPresent()) { + UserProfile userProfile = first.get(); + userProfile.setUserInfo(collect.get(id).get(0)); + final boolean isLike = likeUserIds.stream().filter(f -> f.equals(id)).findFirst().isPresent(); + userProfile.setFollow(true); + userProfile.setLiked(isLike); + newList.add(userProfile); + }else { + logger.error("用户{}不存在", id); + } + + } + return new PageResult<>(newList, (long) myFollows.size()); + } else { + return new PageResult<>(new ArrayList<>(), (long) myFollows.size()); + } + } + // 相册是否为空 + param.setAlbums(true); + } else { + param.setCityMate(null); + } + List list = baseMapper.selectPageRel(page, param); + if (CollectionUtils.isEmpty(list)) { + return new PageResult<>(list, page.getTotal()); + } + + + final Set userIds = list.stream().map(UserProfile::getUserId).collect(Collectors.toSet()); + final List userList = userService.listByIds(userIds); + final Map> collect = userList.stream().collect(Collectors.groupingBy(User::getUserId)); + list.forEach(d -> { + // 附加用户基本信息 + d.setUserInfo(collect.get(d.getUserId()).get(0)); + // 是否关注 + final boolean isFollows = myFollows.stream().filter(f -> f.getShopId().equals(d.getUserId())).findFirst().isPresent(); + final boolean isLike = likeUserIds.stream().filter(f -> f.equals(d.getUserId())).findFirst().isPresent(); + d.setFollow(isFollows); + d.setLiked(isLike); + + }); + + return new PageResult<>(list, page.getTotal()); + } + + + @Override + public List listRel(UserProfileParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserProfile getByIdRel(Integer id) { + UserProfileParam param = new UserProfileParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/love/socketio/cache/ClientCache.java b/src/main/java/com/gxwebsoft/love/socketio/cache/ClientCache.java new file mode 100644 index 0000000..c4fb207 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/socketio/cache/ClientCache.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.love.socketio.cache; + +import com.corundumstudio.socketio.SocketIOClient; +import com.corundumstudio.socketio.SocketIOServer; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; + +/** + * @Author + * @Description 用户信息缓存 + * @Date 14:00 2022/1/21 + * @Param + * @return + **/ +@Component +public class ClientCache { + + private static Map> concurrentHashMap = new ConcurrentHashMap<>(); + + private static SocketIOServer socketIOServer; + + public static SocketIOServer getSocketIOServer() { + return socketIOServer; + } + + public static void setSocketIOServer(SocketIOServer instance) { + socketIOServer = instance; + } + public void saveClient(String userId,UUID sessionId,SocketIOClient socketIOClient){ + HashMap sessionIdClientCache = concurrentHashMap.get(userId); + if(sessionIdClientCache == null){ + sessionIdClientCache = new HashMap<>(); + } + sessionIdClientCache.put(sessionId,socketIOClient); + concurrentHashMap.put(userId,sessionIdClientCache); + } + + + public HashMap getUserClient(String userId){ + return concurrentHashMap.get(userId); + } + + public void deleteSessionClientByUserId(String userId,UUID sessionId){ + concurrentHashMap.get(userId).remove(sessionId); + } + + + public void deleteUserCacheByUserId(String userId){ + concurrentHashMap.remove(userId); + } + + public int getOnLineCount(){ + return concurrentHashMap.size(); + } + + public void sendUserEvent(String userId,String event, Object message) { + // 发送到接收方 + HashMap userClient = concurrentHashMap.get(userId); + + // 查看对方是否在线 + if(!CollectionUtils.isEmpty(userClient)){ + for (UUID uuid : userClient.keySet()) { + SocketIOClient ioClient = userClient.get(uuid); + ioClient.sendEvent(event, message); + + } + } + } + +} diff --git a/src/main/java/com/gxwebsoft/love/socketio/config/SocketIOConfig.java b/src/main/java/com/gxwebsoft/love/socketio/config/SocketIOConfig.java new file mode 100644 index 0000000..6de3096 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/socketio/config/SocketIOConfig.java @@ -0,0 +1,82 @@ +package com.gxwebsoft.love.socketio.config; + +import com.corundumstudio.socketio.SocketIOServer; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.socketio.cache.ClientCache; +import com.gxwebsoft.love.socketio.handler.SocketIOHandler; +import io.jsonwebtoken.Claims; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.StringUtils; + +import javax.annotation.Resource; +import java.io.InputStream; + +/** + * socket服务配置 + * @author machenike + */ +@Configuration +public class SocketIOConfig implements InitializingBean { + + private final static Logger logger = LoggerFactory.getLogger(SocketIOConfig.class); + @Value("${socketio.host}") + private String host; + + @Value("${socketio.port}") + private Integer port; + + @Resource + private SocketIOHandler socketIOHandler; + + @Resource + private UserService userService; + + @Resource + private ConfigProperties configProperties; + + @Override + public void afterPropertiesSet() throws Exception { + com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration(); + //设置host + config.setHostname(host); + //设置端口 + config.setPort(port); + config.setBossThreads(1); + config.setAuthorizationListener(handshakeData -> { + String userId =handshakeData.getSingleUrlParam("userId"); + String token = handshakeData.getSingleUrlParam("token"); + logger.info("身份验证 token:{}", token); + if(!StringUtils.hasText(token) || !StringUtils.hasText(userId)){ + return false; + } + // 身份验证 + Claims claims = JwtUtil.parseToken(token, configProperties.getTokenKey()); + JwtSubject jwtSubject = JwtUtil.getJwtSubject(claims); + User user = userService.getByUsername(jwtSubject.getUsername(), jwtSubject.getTenantId()); + + if (user == null || !user.getUserId().equals(Integer.valueOf(userId))) { + return false; + } + return true; + }); + + InputStream resourceAsStream = this.getClass().getResourceAsStream("/jks/love.jks"); // 读取证书文件流 + config.setKeyStore(resourceAsStream); // 设置证书文件 + config.setKeyStorePassword("123456"); // 设置证书密码 + +// SocketIOServer server = new SocketIOServer(config); +// //启动socket服务 +// server.addListeners(socketIOHandler); +// server.start(); +// ClientCache.setSocketIOServer(server); +// logger.debug("Netty SocketIO启动:{}:{}",host,port); + } +} diff --git a/src/main/java/com/gxwebsoft/love/socketio/handler/SocketIOHandler.java b/src/main/java/com/gxwebsoft/love/socketio/handler/SocketIOHandler.java new file mode 100644 index 0000000..d939f19 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/socketio/handler/SocketIOHandler.java @@ -0,0 +1,108 @@ +package com.gxwebsoft.love.socketio.handler; + +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.corundumstudio.socketio.AckRequest; +import com.corundumstudio.socketio.SocketIOClient; +import com.corundumstudio.socketio.annotation.OnConnect; +import com.corundumstudio.socketio.annotation.OnDisconnect; +import com.corundumstudio.socketio.annotation.OnEvent; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.entity.ChatMessage; +import com.gxwebsoft.love.service.ChatConversationService; +import com.gxwebsoft.love.service.ChatMessageService; +import com.gxwebsoft.love.socketio.cache.ClientCache; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; +import java.util.UUID; + + + +/** + * socket处理拦截器 + * @author machenike + */ + +@Component +public class SocketIOHandler { + + + @Resource + private ChatMessageService messageService; + + @Resource + private ChatConversationService conversationService; + + @Resource + private ClientCache clientCache; + + @Resource + private UserService userService; + + @Resource + private ConfigProperties configProperties; + /** + * 日志 + */ + private final static Logger logger = LoggerFactory.getLogger(SocketIOHandler.class); + + + + + /** + * 客户端连上socket服务器时执行此事件 + * @param client + */ + @OnConnect + public void onConnect(SocketIOClient client) { + String userId = client.getHandshakeData().getSingleUrlParam("userId"); + logger.debug("socket client auth success [userId="+userId+"]"); + UUID sessionId = client.getSessionId(); + + + // 管理员 + String isAdmin = client.getHandshakeData().getSingleUrlParam("isAdmin"); + if(StringUtils.isNotBlank(isAdmin)){ + // todo 权限验证 + clientCache.saveClient("admin",sessionId, client); + }else { + clientCache.saveClient(userId,sessionId, client); + } + + System.out.println("userId: "+userId+"连接建立成功 - "+sessionId); + logger.info("当前在线人数:{}",clientCache.getOnLineCount()); + + } + + + /** + * 客户端断开socket服务器时执行此事件 + * @param client + */ + @OnDisconnect + public void onDisconnect(SocketIOClient client) { + String userId = client.getHandshakeData().getSingleUrlParam("userId"); + UUID sessionId = client.getSessionId(); + clientCache.deleteSessionClientByUserId(userId,sessionId); + System.out.println("userId: "+userId+"连接关闭成功 - "+sessionId); + + } + + /** + * + * @param client + */ + @OnEvent( value = "message") + @Transactional + public void onMessage(SocketIOClient client, AckRequest request, ChatMessage message) { + + } + +} \ No newline at end of file diff --git a/src/main/java/com/gxwebsoft/love/vo/ChatConversationVO.java b/src/main/java/com/gxwebsoft/love/vo/ChatConversationVO.java new file mode 100644 index 0000000..b835d43 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/vo/ChatConversationVO.java @@ -0,0 +1,18 @@ +package com.gxwebsoft.love.vo; + +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.love.entity.ChatConversation; +import com.gxwebsoft.love.entity.ChatMessage; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class ChatConversationVO extends ChatConversation { + private User friendInfo; + private User userInfo; + private List messages = new ArrayList<>(); + private Integer messageCount; + +} diff --git a/src/main/java/com/gxwebsoft/love/vo/idcheck/BackRecognitionResult.java b/src/main/java/com/gxwebsoft/love/vo/idcheck/BackRecognitionResult.java new file mode 100644 index 0000000..8839a0a --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/vo/idcheck/BackRecognitionResult.java @@ -0,0 +1,11 @@ +package com.gxwebsoft.love.vo.idcheck; + +import lombok.Data; + +@Data +public class BackRecognitionResult { + + private String startDate; + private String endDate; + private String issue; +} diff --git a/src/main/java/com/gxwebsoft/love/vo/idcheck/FrontRecognitionResult.java b/src/main/java/com/gxwebsoft/love/vo/idcheck/FrontRecognitionResult.java new file mode 100644 index 0000000..5bf421d --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/vo/idcheck/FrontRecognitionResult.java @@ -0,0 +1,15 @@ +package com.gxwebsoft.love.vo.idcheck; + +import lombok.Data; + +@Data +public class FrontRecognitionResult { + private String idcardno; + private String name; + private String nationality; + private String sex; + private String birth; + private String address; + private String imageStats; + private String direction; +} diff --git a/src/main/java/com/gxwebsoft/love/vo/idcheck/IdCardInfor.java b/src/main/java/com/gxwebsoft/love/vo/idcheck/IdCardInfor.java new file mode 100644 index 0000000..64d8412 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/vo/idcheck/IdCardInfor.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.love.vo.idcheck; + +import lombok.Data; + +@Data +public class IdCardInfor { + private String province; + private String city; + private String district; + private String area; + private String sex; + private String birthday; +} + diff --git a/src/main/java/com/gxwebsoft/love/vo/idcheck/Response.java b/src/main/java/com/gxwebsoft/love/vo/idcheck/Response.java new file mode 100644 index 0000000..a44f347 --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/vo/idcheck/Response.java @@ -0,0 +1,10 @@ +package com.gxwebsoft.love.vo.idcheck; + +import lombok.Data; + +@Data +public class Response { + private Integer error_code; + private String reason; + private T result; +} diff --git a/src/main/java/com/gxwebsoft/love/vo/idcheck/VerifyResult.java b/src/main/java/com/gxwebsoft/love/vo/idcheck/VerifyResult.java new file mode 100644 index 0000000..9cde12e --- /dev/null +++ b/src/main/java/com/gxwebsoft/love/vo/idcheck/VerifyResult.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.love.vo.idcheck; + +import lombok.Data; + +@Data +public class VerifyResult { + private String realname; + private String idcard; + + private boolean isOk; + + private IdCardInfor idCardInfor; + +} diff --git a/src/main/java/com/gxwebsoft/oa/constants/NoticeConstants.java b/src/main/java/com/gxwebsoft/oa/constants/NoticeConstants.java new file mode 100644 index 0000000..adaa556 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/constants/NoticeConstants.java @@ -0,0 +1,10 @@ +package com.gxwebsoft.oa.constants; + +public class NoticeConstants { + // 通知类型 + public static final String NOTICE = "notice"; // 提醒 + public static final String LETTER = "letter"; // 私信 + public static final String TODO = "todo"; // 待办 + public static final String CHAT_GPT = "chatGPT"; // AI机器人 + +} diff --git a/src/main/java/com/gxwebsoft/oa/constants/TaskConstants.java b/src/main/java/com/gxwebsoft/oa/constants/TaskConstants.java new file mode 100644 index 0000000..2299d33 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/constants/TaskConstants.java @@ -0,0 +1,13 @@ +package com.gxwebsoft.oa.constants; + +public class TaskConstants { + // 进度管理 + public static final Integer PROGRESS0 = 0; // 待分派 + public static final Integer PROGRESS1 = 1; // 待处理 + public static final Integer PROGRESS2 = 2; // 处理中 + public static final Integer PROGRESS3 = 3; // 待确认 + public static final Integer PROGRESS4 = 4; // 待反馈 + public static final Integer PROGRESS5 = 5; // 已完结 + public static final Integer PROGRESS6 = 6; // 已关闭 + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/AppController.java b/src/main/java/com/gxwebsoft/oa/controller/AppController.java new file mode 100644 index 0000000..9eaa1a7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/AppController.java @@ -0,0 +1,186 @@ +package com.gxwebsoft.oa.controller; + +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.App; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.param.AppParam; +import com.gxwebsoft.oa.service.AppService; +import com.gxwebsoft.oa.service.AppUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 应用管理记录表控制器 + * + * @author 科技小王子 + * @since 2023-03-28 10:45:39 + */ +@Api(tags = "应用管理记录表管理") +@RestController +@RequestMapping("/api/oa/app") +public class AppController extends BaseController { + @Resource + private AppService appService; + @Resource + private CacheClient cacheClient; + @Resource + private AppUserService appUserService; + @Resource + private StringRedisTemplate stringRedisTemplate; + + @PreAuthorize("hasAuthority('oa:app:list')") + @OperationLog + @ApiOperation("分页查询应用管理记录表") + @GetMapping("/page") + public ApiResult> page(AppParam param) { + final User loginUser = getLoginUser(); + final Integer userId = loginUser.getUserId(); + loginUser.getRoles().forEach(d -> { + if(!StrUtil.equals(d.getRoleCode(),"superAdmin") && !StrUtil.equals(d.getRoleCode(),"admin")){ + // 非管理员按项目成员权限显示 + final List list = appUserService.list(new LambdaQueryWrapper().eq(AppUser::getUserId, userId)); + final Set collect = list.stream().map(AppUser::getAppId).collect(Collectors.toSet()); + param.setAppIds(collect); + } + }); + // 使用关联查询 + return success(appService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:app:list')") + @OperationLog + @ApiOperation("查询全部应用管理记录表") + @GetMapping() + public ApiResult> list(AppParam param) { + // 使用关联查询 + return success(appService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:app:list')") + @OperationLog + @ApiOperation("根据id查询应用管理记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(appService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:app:save')") + @OperationLog + @ApiOperation("添加应用管理记录表") + @PostMapping() + public ApiResult save(@RequestBody App app) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + app.setUserId(loginUser.getUserId()); + app.setTenantId(loginUser.getTenantId()); + } + if (appService.count(new LambdaQueryWrapper() + .eq(App::getAppCode, app.getAppCode())) > 0) { + return fail("应用标识已存在"); + } + if (appService.save(app)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:app:update')") + @OperationLog + @ApiOperation("修改应用管理记录表") + @PutMapping() + public ApiResult update(@RequestBody App app) { + if (appService.updateById(app)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:app:remove')") + @OperationLog + @ApiOperation("删除应用管理记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (appService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:app:save')") + @OperationLog + @ApiOperation("批量添加应用管理记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (appService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:app:update')") + @OperationLog + @ApiOperation("批量修改应用管理记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(appService, "app_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:app:remove')") + @OperationLog + @ApiOperation("批量删除应用管理记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (appService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:app:update')") + @ApiOperation("重置秘钥") + @PostMapping("/updateAppSecret") + public ApiResult updateAppSecret(@RequestBody App app) { + if (app.getAppId() == null) { + return fail("请勿重复操作"); + } + App result = appService.getByIdRel(app.getAppId()); + String key = cacheClient.key("AppSecret", app.getAppId()); + String appSecret = IdUtil.fastSimpleUUID(); + cacheClient.set(key,appSecret); + result.setAppSecret(appSecret); + return success("重置成功",result); + } + + @ApiOperation("APP应用授权身份效验") + @GetMapping("/authentication/{appid}") + public ApiResult authentication(@PathVariable("appid") String appid) { + final App appInfo = appService.getById(appid); + if(appInfo == null){ + return fail("应用不存在:".concat(appid)); + } + return success("应用信息",appInfo); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/AppUserController.java b/src/main/java/com/gxwebsoft/oa/controller/AppUserController.java new file mode 100644 index 0000000..9f31677 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/AppUserController.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.oa.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.param.AppUserParam; +import com.gxwebsoft.oa.service.AppUserService; +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-05-31 13:18:55 + */ +@Api(tags = "应用成员管理") +@RestController +@RequestMapping("/api/oa/app-user") +public class AppUserController extends BaseController { + @Resource + private AppUserService appUserService; + + @PreAuthorize("hasAuthority('oa:appUser:list')") + @OperationLog + @ApiOperation("分页查询应用成员") + @GetMapping("/page") + public ApiResult> page(AppUserParam param) { + // 使用关联查询 + return success(appUserService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:appUser:list')") + @OperationLog + @ApiOperation("查询全部应用成员") + @GetMapping() + public ApiResult> list(AppUserParam param) { + // 使用关联查询 + if (param.getAppId() == null) { + return fail("AppId不存在",null); + } + return success(appUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:appUser:list')") + @OperationLog + @ApiOperation("根据id查询应用成员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(appUserService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:appUser:save')") + @OperationLog + @ApiOperation("添加应用成员") + @PostMapping() + public ApiResult save(@RequestBody AppUser appUser) { + if (appUserService.count(new LambdaQueryWrapper() + .eq(AppUser::getUserId, appUser.getUserId()).eq(AppUser::getAppId,appUser.getAppId())) > 0) { + return fail("该成员已存在"); + } + if (appUserService.save(appUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:appUser:update')") + @OperationLog + @ApiOperation("修改应用成员") + @PutMapping() + public ApiResult update(@RequestBody AppUser appUser) { + if (appUserService.updateById(appUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:appUser:remove')") + @OperationLog + @ApiOperation("删除应用成员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (appUserService.removeById(id)) { + return success("移除成功"); + } + return fail("移除失败"); + } + + @PreAuthorize("hasAuthority('oa:appUser:save')") + @OperationLog + @ApiOperation("批量添加应用成员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (appUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:appUser:update')") + @OperationLog + @ApiOperation("批量修改应用成员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(appUserService, "app_user_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:appUser:remove')") + @OperationLog + @ApiOperation("批量删除应用成员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (appUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/AssetsController.java b/src/main/java/com/gxwebsoft/oa/controller/AssetsController.java new file mode 100644 index 0000000..e2e4097 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/AssetsController.java @@ -0,0 +1,174 @@ +package com.gxwebsoft.oa.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.BtUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.entity.Assets; +import com.gxwebsoft.oa.entity.AssetsUser; +import com.gxwebsoft.oa.param.AssetsParam; +import com.gxwebsoft.oa.service.AssetsService; +import com.gxwebsoft.oa.service.AssetsUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 服务器资产记录表控制器 + * + * @author WebSoft + * @since 2022-11-16 11:13:16 + */ +@Api(tags = "服务器资产记录表管理") +@RestController +@RequestMapping("/api/oa/assets") +public class AssetsController extends BaseController { + @Resource + private AssetsService assetsService; + @Resource + private AssetsUserService assetsUserService; + @Resource + private BtUtil btUtil; + + @PreAuthorize("hasAuthority('oa:assets:list')") + @OperationLog + @ApiOperation("分页查询服务器资产记录表") + @GetMapping("/page") + public ApiResult> page(AssetsParam param) { + final User loginUser = getLoginUser(); + final Integer userId = loginUser.getUserId(); + loginUser.getRoles().forEach(d -> { + if(!StrUtil.equals(d.getRoleCode(),"superAdmin") && !StrUtil.equals(d.getRoleCode(),"admin")){ + // 非管理员按项目成员权限显示 + param.setSceneType("NotAdministrator"); + final List list = assetsUserService.list(new LambdaQueryWrapper().eq(AssetsUser::getUserId, userId)); + final Set collect = list.stream().map(AssetsUser::getAssetsId).collect(Collectors.toSet()); + if(!CollectionUtils.isEmpty(collect)){ + param.setAssetsIds(collect); + } + } + }); + // 非管理员并且无分配资源 + if(param.getSceneType() != null && param.getSceneType().equals("NotAdministrator") && CollectionUtils.isEmpty(param.getAssetsIds())){ + final PageResult result = new PageResult<>(); + result.setList(new ArrayList<>()); + result.setCount(0L); + return success(result); + } + // 返回查询结果 + return success(assetsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:assets:list')") + @OperationLog + @ApiOperation("查询全部服务器资产记录表") + @GetMapping() + public ApiResult> list(AssetsParam param) { + // 使用关联查询 + return success(assetsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:assets:list')") + @OperationLog + @ApiOperation("根据id查询服务器资产记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + final Assets assets = assetsService.getByIdRel(id); + final BtUtil client = btUtil.client(id); + final String systemTotal = client.getSystemTotal(); + final String diskInfo = client.getDiskInfo(); + assets.setSystemTotal(systemTotal); + assets.setDiskInfo(diskInfo); + // 使用关联查询 + return success(assets); + } + + @PreAuthorize("hasAuthority('oa:assets:save')") + @OperationLog + @ApiOperation("添加服务器资产记录表") + @PostMapping() + public ApiResult save(@RequestBody Assets assets) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + assets.setUserId(loginUser.getUserId()); + } + if (assetsService.count(new LambdaQueryWrapper().eq(Assets::getCode,assets.getCode())) > 0) { + return fail("该IP地址已存在"); + } + if (assetsService.save(assets)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:assets:update')") + @OperationLog + @ApiOperation("修改服务器资产记录表") + @PutMapping() + public ApiResult update(@RequestBody Assets assets) { + if (assetsService.updateById(assets)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:assets:remove')") + @OperationLog + @ApiOperation("删除服务器资产记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (assetsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:assets:save')") + @OperationLog + @ApiOperation("批量添加服务器资产记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (assetsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:assets:update')") + @OperationLog + @ApiOperation("批量修改服务器资产记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(assetsService, "assets_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:assets:remove')") + @OperationLog + @ApiOperation("批量删除服务器资产记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (assetsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/AssetsUserController.java b/src/main/java/com/gxwebsoft/oa/controller/AssetsUserController.java new file mode 100644 index 0000000..7057031 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/AssetsUserController.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.oa.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.service.AssetsUserService; +import com.gxwebsoft.oa.entity.AssetsUser; +import com.gxwebsoft.oa.param.AssetsUserParam; +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-07-18 14:35:51 + */ +@Api(tags = "服务器成员管理管理") +@RestController +@RequestMapping("/api/oa/assets-user") +public class AssetsUserController extends BaseController { + @Resource + private AssetsUserService assetsUserService; + + @PreAuthorize("hasAuthority('oa:assetsUser:list')") + @OperationLog + @ApiOperation("分页查询服务器成员管理") + @GetMapping("/page") + public ApiResult> page(AssetsUserParam param) { + // 使用关联查询 + return success(assetsUserService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:assetsUser:list')") + @OperationLog + @ApiOperation("查询全部服务器成员管理") + @GetMapping() + public ApiResult> list(AssetsUserParam param) { + // 使用关联查询 + return success(assetsUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:assetsUser:list')") + @OperationLog + @ApiOperation("根据id查询服务器成员管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(assetsUserService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:assetsUser:save')") + @OperationLog + @ApiOperation("添加服务器成员管理") + @PostMapping() + public ApiResult save(@RequestBody AssetsUser assetsUser) { + if (assetsUserService.count(new LambdaQueryWrapper() + .eq(AssetsUser::getUserId, assetsUser.getUserId()).eq(AssetsUser::getAssetsId,assetsUser.getAssetsId())) > 0) { + return fail("该成员已存在"); + } + if (assetsUserService.save(assetsUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:assetsUser:update')") + @OperationLog + @ApiOperation("修改服务器成员管理") + @PutMapping() + public ApiResult update(@RequestBody AssetsUser assetsUser) { + if (assetsUserService.updateById(assetsUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:assetsUser:remove')") + @OperationLog + @ApiOperation("删除服务器成员管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (assetsUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:assetsUser:save')") + @OperationLog + @ApiOperation("批量添加服务器成员管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (assetsUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:assetsUser:update')") + @OperationLog + @ApiOperation("批量修改服务器成员管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(assetsUserService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:assetsUser:remove')") + @OperationLog + @ApiOperation("批量删除服务器成员管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (assetsUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/CustomerController.java b/src/main/java/com/gxwebsoft/oa/controller/CustomerController.java new file mode 100644 index 0000000..aefcb93 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/CustomerController.java @@ -0,0 +1,131 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.Customer; +import com.gxwebsoft.oa.param.CustomerParam; +import com.gxwebsoft.oa.service.CustomerService; +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 WebSoft + * @since 2022-11-16 11:16:14 + */ +@Api(tags = "客户管理记录表管理") +@RestController +@RequestMapping("/api/oa/customer") +public class CustomerController extends BaseController { + @Resource + private CustomerService customerService; + + @PreAuthorize("hasAuthority('oa:customer:list')") + @OperationLog + @ApiOperation("分页查询客户管理记录表") + @GetMapping("/page") + public ApiResult> page(CustomerParam param) { + // 使用关联查询 + return success(customerService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:customer:list')") + @OperationLog + @ApiOperation("查询全部客户管理记录表") + @GetMapping() + public ApiResult> list(CustomerParam param) { + // 使用关联查询 + return success(customerService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:customer:list')") + @OperationLog + @ApiOperation("根据id查询客户管理记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(customerService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:customer:save')") + @OperationLog + @ApiOperation("添加客户管理记录表") + @PostMapping() + public ApiResult save(@RequestBody Customer customer) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + customer.setUserId(loginUser.getUserId()); + } + if (customerService.save(customer)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:customer:update')") + @OperationLog + @ApiOperation("修改客户管理记录表") + @PutMapping() + public ApiResult update(@RequestBody Customer customer) { + if (customerService.updateById(customer)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:customer:remove')") + @OperationLog + @ApiOperation("删除客户管理记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (customerService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:customer:save')") + @OperationLog + @ApiOperation("批量添加客户管理记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (customerService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:customer:update')") + @OperationLog + @ApiOperation("批量修改客户管理记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(customerService, "customer_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:customer:remove')") + @OperationLog + @ApiOperation("批量删除客户管理记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (customerService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/NoticeController.java b/src/main/java/com/gxwebsoft/oa/controller/NoticeController.java new file mode 100644 index 0000000..80645be --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/NoticeController.java @@ -0,0 +1,154 @@ +package com.gxwebsoft.oa.controller; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.Notice; +import com.gxwebsoft.oa.param.NoticeParam; +import com.gxwebsoft.oa.service.NoticeService; +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-03-22 14:07:26 + */ +@Api(tags = "消息记录表管理") +@RestController +@RequestMapping("/api/oa/notice") +public class NoticeController extends BaseController { + @Resource + private NoticeService noticeService; + + @PreAuthorize("hasAuthority('oa:notice:list')") + @OperationLog + @ApiOperation("分页查询消息记录表") + @GetMapping("/page") + public ApiResult> page(NoticeParam param) { + // 使用关联查询 + param.setUserId(getLoginUserId()); + return success(noticeService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:notice:list')") + @OperationLog + @ApiOperation("查询全部消息记录表") + @GetMapping() + public ApiResult> list(NoticeParam param) { + // 使用关联查询 + param.setUserId(getLoginUserId()); + return success(noticeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:notice:list')") + @OperationLog + @ApiOperation("根据id查询消息记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(noticeService.getById(id)); + // 使用关联查询 + //return success(noticeService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:notice:save')") + @OperationLog + @ApiOperation("添加消息记录表") + @PostMapping() + public ApiResult save(@RequestBody Notice notice) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + notice.setUserId(loginUser.getUserId()); + } + if (noticeService.save(notice)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:notice:update')") + @OperationLog + @ApiOperation("修改消息记录表") + @PutMapping() + public ApiResult update(@RequestBody Notice notice) { + if (noticeService.updateById(notice)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:notice:remove')") + @OperationLog + @ApiOperation("删除消息记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (noticeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:notice:save')") + @OperationLog + @ApiOperation("批量添加消息记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (noticeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:notice:update')") + @OperationLog + @ApiOperation("批量修改消息记录表") + @PutMapping("/batch") + public ApiResult updateBatch(@RequestBody List list) { + if (noticeService.updateBatchById(list)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:notice:remove')") + @OperationLog + @ApiOperation("批量删除消息记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (noticeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:notice:list')") + @ApiOperation("统计信息") + @GetMapping("/getUnReadNum") + public ApiResult getUnReadNum(){ + JSONObject json = new JSONObject(); + json.put("notice",noticeService.count(new LambdaQueryWrapper() + .eq(Notice::getUserId, getLoginUserId()) + .eq(Notice::getType,"notice") + .eq(Notice::getStatus,0))); + json.put("letter",noticeService.count(new LambdaQueryWrapper() + .eq(Notice::getUserId, getLoginUserId()) + .eq(Notice::getType,"letter") + .eq(Notice::getStatus,0))); + json.put("todo",noticeService.count(new LambdaQueryWrapper() + .eq(Notice::getUserId, getLoginUserId()) + .eq(Notice::getType,"todo") + .eq(Notice::getStatus,0))); + return success("操作成功",json); + } +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/ProjectController.java b/src/main/java/com/gxwebsoft/oa/controller/ProjectController.java new file mode 100644 index 0000000..7e67813 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/ProjectController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.service.ProjectService; +import com.gxwebsoft.oa.entity.Project; +import com.gxwebsoft.oa.param.ProjectParam; +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 WebSoft + * @since 2022-11-16 11:00:43 + */ +@Api(tags = "项目管理表管理") +@RestController +@RequestMapping("/api/oa/project") +public class ProjectController extends BaseController { + @Resource + private ProjectService projectService; + + @PreAuthorize("hasAuthority('oa:project:list')") + @OperationLog + @ApiOperation("分页查询项目管理表") + @GetMapping("/page") + public ApiResult> page(ProjectParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(projectService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(projectService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:project:list')") + @OperationLog + @ApiOperation("查询全部项目管理表") + @GetMapping() + public ApiResult> list(ProjectParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(projectService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(projectService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:project:list')") + @OperationLog + @ApiOperation("根据id查询项目管理表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(projectService.getById(id)); + // 使用关联查询 + //return success(projectService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:project:save')") + @OperationLog + @ApiOperation("添加项目管理表") + @PostMapping() + public ApiResult save(@RequestBody Project project) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + project.setUserId(loginUser.getUserId()); + } + if (projectService.save(project)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:project:update')") + @OperationLog + @ApiOperation("修改项目管理表") + @PutMapping() + public ApiResult update(@RequestBody Project project) { + if (projectService.updateById(project)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:project:remove')") + @OperationLog + @ApiOperation("删除项目管理表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (projectService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:project:save')") + @OperationLog + @ApiOperation("批量添加项目管理表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (projectService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:project:update')") + @OperationLog + @ApiOperation("批量修改项目管理表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(projectService, "project_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:project:remove')") + @OperationLog + @ApiOperation("批量删除项目管理表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (projectService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/TaskController.java b/src/main/java/com/gxwebsoft/oa/controller/TaskController.java new file mode 100644 index 0000000..7f9b397 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/TaskController.java @@ -0,0 +1,193 @@ +package com.gxwebsoft.oa.controller; + +import cn.hutool.core.util.StrUtil; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.entity.TaskUser; +import com.gxwebsoft.oa.param.TaskParam; +import com.gxwebsoft.oa.service.NoticeService; +import com.gxwebsoft.oa.service.TaskRecordService; +import com.gxwebsoft.oa.service.TaskService; +import com.gxwebsoft.oa.service.TaskUserService; +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.ArrayList; +import java.util.List; + +/** + * 工单记录表控制器 + * + * @author WebSoft + * @since 2022-11-16 11:21:43 + */ +@Api(tags = "工单记录表管理") +@RestController +@RequestMapping("/api/oa/task") +public class TaskController extends BaseController { + @Resource + private TaskService taskService; + @Resource + private TaskRecordService taskRecordService; + @Resource + private TaskUserService taskUserService; + @Resource + private UserService userService; + @Resource + private NoticeService noticeService; + + @PreAuthorize("hasAuthority('oa:task:list')") + @OperationLog + @ApiOperation("分页查询工单记录表") + @GetMapping("/page") + public ApiResult> page(TaskParam param) { + // 使用关联查询 + final User loginUser = getLoginUser(); + final Integer type = loginUser.getType(); + loginUser.getRoles().forEach(d -> { + if(!StrUtil.equals(d.getRoleCode(),"superAdmin") && !StrUtil.equals(d.getRoleCode(),"admin")){ + // 如果是开发者账号则按受理人查询 + if (type.equals(6)) { + param.setCommander(loginUser.getUserId()); + }else{ + param.setPromoter(getLoginUserId()); + } + } + }); + return success(taskService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:task:list')") + @OperationLog + @ApiOperation("查询全部工单记录表") + @GetMapping() + public ApiResult> list(TaskParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(taskService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(taskService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:task:list')") + @OperationLog + @ApiOperation("根据id查询工单记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(taskService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:task:save')") + @OperationLog + @ApiOperation("添加工单记录表") + @PostMapping() + public ApiResult save(@RequestBody Task task) { + // 记录用户id + final Integer loginUserId = getLoginUserId(); + Integer promoter = task.getPromoter(); + task.setUserId(loginUserId); + task.setComments(StrUtil.sub(task.getContent(),0,200)); + task.setPromoter(promoter != null ? promoter : loginUserId); + task.setLastReadUser(loginUserId); + if (taskService.save(task)) { + // 添加聊天内容明细 + TaskRecord taskRecord = new TaskRecord(); + taskRecord.setUserId(loginUserId); + taskRecord.setContent(task.getContent()); + taskRecord.setTaskId(task.getTaskId()); + taskRecord.setFiles(task.getFiles()); + taskRecordService.save(taskRecord); + // 添加工单成员 + TaskUser taskUser = new TaskUser(); + taskUser.setUserId(loginUserId); + taskUser.setTaskId(task.getTaskId()); + taskUserService.save(taskUser); + // 发待办提醒 + if(task.getCommander() != null){ + noticeService.addTodo(task); + } + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:task:update')") + @OperationLog + @ApiOperation("修改工单记录表") + @PutMapping() + public ApiResult update(@RequestBody Task task) { + if(task.getCommander() != null && userService.getById(task.getCommander()) == null){ + return fail("受理人不存在"); + } + if (taskService.updateById(task)) { + // 发待办提醒 + noticeService.addTodo(task); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:task:remove')") + @OperationLog + @ApiOperation("删除工单记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (taskService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:task:save')") + @OperationLog + @ApiOperation("批量添加工单记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (taskService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:task:update')") + @OperationLog + @ApiOperation("批量修改工单记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(taskService, "task_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:task:remove')") + @OperationLog + @ApiOperation("批量删除工单记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (taskService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:task:list')") + @ApiOperation("统计信息") + @GetMapping("/count") + public ApiResult count(TaskParam param){ + // 验证签名 + isCheckSign(); + User loginUser = getLoginUser(); + ArrayList countNum = taskService.getCountNum(loginUser,param); + return success("操作成功",countNum); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/TaskRecordController.java b/src/main/java/com/gxwebsoft/oa/controller/TaskRecordController.java new file mode 100644 index 0000000..869772f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/TaskRecordController.java @@ -0,0 +1,157 @@ +package com.gxwebsoft.oa.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.service.*; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.param.TaskRecordParam; +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; + +import static com.gxwebsoft.oa.constants.NoticeConstants.LETTER; +import static com.gxwebsoft.oa.constants.TaskConstants.*; + +/** + * 工单回复记录表控制器 + * + * @author 科技小王子 + * @since 2023-03-05 00:52:21 + */ +@Api(tags = "工单回复记录表管理") +@RestController +@RequestMapping("/api/oa/task-record") +public class TaskRecordController extends BaseController { + @Resource + private TaskRecordService taskRecordService; + @Resource + private TaskService taskService; + @Resource + private NoticeService noticeService; + + @PreAuthorize("hasAuthority('oa:task:list')") + @OperationLog + @ApiOperation("分页查询工单回复记录表") + @GetMapping("/page") + public ApiResult> page(TaskRecordParam param) { + // 使用关联查询 + return success(taskRecordService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:task:list')") + @OperationLog + @ApiOperation("查询全部工单回复记录表") + @GetMapping() + public ApiResult> list(TaskRecordParam param) { + // 更新查阅状态 + Task task = taskService.getById(param.getTaskId()); + if(!getLoginUserId().equals(task.getLastReadUser())){ + task.setIsRead(1); + } + taskService.updateById(task); + // 使用关联查询 + return success(taskRecordService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:task:list')") + @OperationLog + @ApiOperation("根据id查询工单回复记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(taskRecordService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:task:save')") + @OperationLog + @ApiOperation("添加工单回复记录表") + @PostMapping() + public ApiResult save(@RequestBody TaskRecord taskRecord) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + taskRecord.setUserId(loginUser.getUserId()); + } + if (taskRecordService.save(taskRecord)) { + Task task = new Task(); + task.setTaskId(taskRecord.getTaskId()); + task.setProgress(PROGRESS2); + task.setIsRead(0); + task.setLastReadUser(getLoginUserId()); + taskService.updateById(task); + // 发送私信 + noticeService.addLetter(taskRecord); + return success("提交成功"); + } + return fail("提交失败"); + } + + @PreAuthorize("hasAuthority('oa:task:update')") + @OperationLog + @ApiOperation("修改工单回复记录表") + @PutMapping() + public ApiResult update(@RequestBody TaskRecord taskRecord) { + if (taskRecordService.updateById(taskRecord)) { + Task task = taskService.getById(taskRecord.getTaskId()); + task.setIsRead(0); + task.setLastReadUser(getLoginUserId()); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:task:remove')") + @OperationLog + @ApiOperation("删除工单回复记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (taskRecordService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:task:save')") + @OperationLog + @ApiOperation("批量添加工单回复记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (taskRecordService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:task:update')") + @OperationLog + @ApiOperation("批量修改工单回复记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(taskRecordService, "task_record_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:task:remove')") + @OperationLog + @ApiOperation("批量删除工单回复记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (taskRecordService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/controller/TaskUserController.java b/src/main/java/com/gxwebsoft/oa/controller/TaskUserController.java new file mode 100644 index 0000000..e5d627c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/controller/TaskUserController.java @@ -0,0 +1,153 @@ +package com.gxwebsoft.oa.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.entity.TaskUser; +import com.gxwebsoft.oa.param.TaskUserParam; +import com.gxwebsoft.oa.service.TaskService; +import com.gxwebsoft.oa.service.TaskUserService; +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; + +import static com.gxwebsoft.oa.constants.TaskConstants.PROGRESS1; + +/** + * 工单成员控制器 + * + * @author 科技小王子 + * @since 2023-03-06 12:00:41 + */ +@Api(tags = "工单成员管理") +@RestController +@RequestMapping("/api/oa/task-user") +public class TaskUserController extends BaseController { + @Resource + private UserService userService; + @Resource + private TaskUserService taskUserService; + @Resource + private TaskService taskService; + + @PreAuthorize("hasAuthority('oa:taskUser:list')") + @OperationLog + @ApiOperation("分页查询工单成员") + @GetMapping("/page") + public ApiResult> page(TaskUserParam param) { + // 使用关联查询 + return success(taskUserService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:taskUser:list')") + @OperationLog + @ApiOperation("查询全部工单成员") + @GetMapping() + public ApiResult> list(TaskUserParam param) { + // 使用关联查询 + return success(taskUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:taskUser:list')") + @OperationLog + @ApiOperation("根据id查询工单成员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(taskUserService.getById(id)); + // 使用关联查询 + return success(taskUserService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('oa:taskUser:save')") + @OperationLog + @ApiOperation("添加工单成员") + @PostMapping() + public ApiResult save(@RequestBody TaskUser taskUser) { + User user = userService.getOne(new LambdaQueryWrapper().eq(User::getUsername, taskUser.getName())); + if(user == null){ + throw new BusinessException("找不到该用户"); + } + int count = taskUserService.count(new LambdaQueryWrapper().eq(TaskUser::getUserId, user.getUserId()).eq(TaskUser::getTaskId,taskUser.getTaskId())); + if( count > 0) { + return fail("请勿重复指派"); + } + taskUser.setUserId(user.getUserId()); + if (taskUserService.save(taskUser)) { + Task task = new Task(); + task.setTaskId(taskUser.getTaskId()); + task.setProgress(PROGRESS1); + task.setIsRead(0); + task.setLastReadUser(getLoginUserId()); + taskService.updateById(task); + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:taskUser:update')") + @OperationLog + @ApiOperation("修改工单成员") + @PutMapping() + public ApiResult update(@RequestBody TaskUser taskUser) { + if (taskUserService.updateById(taskUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:taskUser:remove')") + @OperationLog + @ApiOperation("删除工单成员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (taskUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:taskUser:save')") + @OperationLog + @ApiOperation("批量添加工单成员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (taskUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:taskUser:update')") + @OperationLog + @ApiOperation("批量修改工单成员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(taskUserService, "task_user_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:taskUser:remove')") + @OperationLog + @ApiOperation("批量删除工单成员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (taskUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/App.java b/src/main/java/com/gxwebsoft/oa/entity/App.java new file mode 100644 index 0000000..73fe981 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/App.java @@ -0,0 +1,238 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 应用管理记录表 + * + * @author 科技小王子 + * @since 2023-03-28 10:45:39 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "App对象", description = "应用管理记录表") +@TableName("oa_app") +public class App implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "应用ID") + @TableId(value = "app_id", type = IdType.AUTO) + private Integer appId; + + @ApiModelProperty(value = "应用名称") + private String appName; + + @ApiModelProperty(value = "上级id, 0是顶级") + private Integer parentId; + + @ApiModelProperty(value = "应用标识") + private String appCode; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + private String appType; + + @ApiModelProperty(value = "应用类型多选") + private String appTypeMultiple; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + private Integer menuType; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "应用图标") + private String appIcon; + + @ApiModelProperty(value = "二维码") + private String appQrcode; + + @ApiModelProperty(value = "链接地址") + private String appUrl; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "下载地址") + private String downUrl; + + @ApiModelProperty(value = "服务器地址") + private String serverUrl; + + @ApiModelProperty(value = "回调地址") + private String callbackUrl; + + @ApiModelProperty(value = "腾讯文档地址") + private String docsUrl; + + @ApiModelProperty(value = "仓库地址") + private String gitUrl; + + @ApiModelProperty(value = "文件服务器") + private String fileUrl; + + @ApiModelProperty(value = "原型图地址") + private String prototypeUrl; + + @ApiModelProperty(value = "IP白名单") + private String ipAddress; + + @ApiModelProperty(value = "应用截图") + private String images; + + @ApiModelProperty(value = "应用包名") + private String packageName; + + @ApiModelProperty(value = "下载次数") + private Integer clicks; + + @ApiModelProperty(value = "安装次数") + private Integer installs; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "应用介绍") + private String content; + + @ApiModelProperty(value = "项目需求") + private String requirement; + + @ApiModelProperty(value = "开发者(个人或公司)") + private String developer; + + @ApiModelProperty(value = "项目负责人") + private String director; + + @ApiModelProperty(value = "项目经理") + private String projectDirector; + + @ApiModelProperty(value = "业务经理") + private String salesman; + + @ApiModelProperty(value = "软件定价") + private BigDecimal price; + + @ApiModelProperty(value = "划线价格") + private BigDecimal linePrice; + + @ApiModelProperty(value = "评分") + private String score; + + @ApiModelProperty(value = "星级") + private String star; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + private Integer hide; + + @ApiModelProperty(value = "禁止搜索,1禁止 0 允许") + private Integer search; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "版本,0正式版 1体验版 2开发版") + private String edition; + + @ApiModelProperty(value = "版本号") + private String version; + + @ApiModelProperty(value = "是否已安装") + private Integer isUse; + + @ApiModelProperty(value = "应用状态") + private String appStatus; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "应用秘钥") + @TableField(exist = false) + private String appSecret; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "附件1") + private String file1; + + @ApiModelProperty(value = "附件2") + private String file2; + + @ApiModelProperty(value = "附件3") + private String file3; + + @ApiModelProperty(value = "成员管理") + @TableField(exist = false) + private List users; + + @ApiModelProperty(value = "主体名称") + @TableField(exist = false) + private String tenantName; + + @ApiModelProperty(value = "主体ID") + @TableField(exist = false) + private Integer tenantId; + + @ApiModelProperty(value = "开发者名称") + @TableField(exist = false) + private String realName; + + @ApiModelProperty(value = "开发者名称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "开发者头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "公司名称") + private String companyName; + + @ApiModelProperty(value = "公司简称") + @TableField(exist = false) + private String shortName; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/AppUser.java b/src/main/java/com/gxwebsoft/oa/entity/AppUser.java new file mode 100644 index 0000000..1f47710 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/AppUser.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 应用成员 + * + * @author 科技小王子 + * @since 2023-05-31 13:18:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "AppUser对象", description = "应用成员") +@TableName("oa_app_user") +public class AppUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "app_user_id", type = IdType.AUTO) + private Integer appUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户名") + @TableField(exist = false) + private String username; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "邮箱") + @TableField(exist = false) + private String email; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/Assets.java b/src/main/java/com/gxwebsoft/oa/entity/Assets.java new file mode 100644 index 0000000..248d60a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/Assets.java @@ -0,0 +1,170 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 服务器资产记录表 + * + * @author WebSoft + * @since 2022-11-16 11:13:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Assets对象", description = "服务器资产记录表") +@TableName("oa_assets") +public class Assets implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "资产ID") + @TableId(value = "assets_id", type = IdType.AUTO) + private Integer assetsId; + + @ApiModelProperty(value = "资产名称") + private String name; + + @ApiModelProperty(value = "资产标识") + private String code; + + @ApiModelProperty(value = "资产类型") + private String type; + + @ApiModelProperty(value = "服务器厂商") + private String brand; + + @ApiModelProperty(value = "服务器配置") + private String configuration; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录账号") + private String brandAccount; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录密码") + private String brandPassword; + + @ApiModelProperty(value = "宝塔面板") + private String panel; + + @ApiModelProperty(value = "宝塔面板账号") + private String panelAccount; + + @ApiModelProperty(value = "宝塔面板密码") + private String panelPassword; + + @ApiModelProperty(value = "财务信息-合同金额") + private BigDecimal financeAmount; + + @ApiModelProperty(value = "购买年限") + private Integer financeYears; + + @ApiModelProperty(value = "续费金额") + private BigDecimal financeRenew; + + @ApiModelProperty(value = "客户名称") + private String financeCustomerName; + + @ApiModelProperty(value = "客户联系人") + private String financeCustomerContact; + + @ApiModelProperty(value = "客户联系电话") + private String financeCustomerPhone; + + @ApiModelProperty(value = "客户ID") + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "开放端口") + private String openPort; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "购买时间") + private Date startTime; + + @ApiModelProperty(value = "到期时间") + private Date endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "宝塔接口秘钥") + private String btSign; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String 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 String nickname; + + @ApiModelProperty(value = "开发者头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "企业名称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty(value = "系统基础统计") + @TableField(exist = false) + private Object systemTotal; + + @ApiModelProperty(value = "磁盘分区信息") + @TableField(exist = false) + private Object diskInfo; + + @ApiModelProperty(value = "实时状态信息(CPU、内存、网络、负载)") + @TableField(exist = false) + private Object netWork; + + @ApiModelProperty(value = "网站列表") + @TableField(exist = false) + private Object sites; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/AssetsUser.java b/src/main/java/com/gxwebsoft/oa/entity/AssetsUser.java new file mode 100644 index 0000000..8f78287 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/AssetsUser.java @@ -0,0 +1,71 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +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-07-18 14:35:51 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "AssetsUser对象", description = "服务器成员管理") +@TableName("oa_assets_user") +public class AssetsUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "应用ID") + private Integer assetsId; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户名") + @TableField(exist = false) + private String username; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "邮箱") + @TableField(exist = false) + private String email; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/Customer.java b/src/main/java/com/gxwebsoft/oa/entity/Customer.java new file mode 100644 index 0000000..2b34480 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/Customer.java @@ -0,0 +1,115 @@ +package com.gxwebsoft.oa.entity; + +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 WebSoft + * @since 2022-11-16 11:16:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Customer对象", description = "客户管理记录表") +@TableName("oa_customer") +public class Customer implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "客户ID") + @TableId(value = "customer_id", type = IdType.AUTO) + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "客户标识") + private String customerCode; + + @ApiModelProperty(value = "客户全称") + private String customerFullName; + + @ApiModelProperty(value = "头像") + private String customerAvatar; + + @ApiModelProperty(value = "客户类型") + private String customerType; + + @ApiModelProperty(value = "客户来源") + private String customerSource; + + @ApiModelProperty(value = "公司座机") + private String customerPhone; + + @ApiModelProperty(value = "手机号码") + private String customerMobile; + + @ApiModelProperty(value = "联系人") + private String customerContacts; + + @ApiModelProperty(value = "所在省份") + private String customerProvince; + + @ApiModelProperty(value = "所在城市") + private String customerCity; + + @ApiModelProperty(value = "所在地区") + private String customerRegion; + + @ApiModelProperty(value = "所在地址") + private String customerAddress; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "跟进状态") + private String progress; + + @ApiModelProperty(value = "是否含税") + private Boolean isTax; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/Notice.java b/src/main/java/com/gxwebsoft/oa/entity/Notice.java new file mode 100644 index 0000000..2de269b --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/Notice.java @@ -0,0 +1,97 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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-03-22 14:07:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Notice对象", description = "消息记录表") +@TableName("oa_notice") +public class Notice implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "notice_id", type = IdType.AUTO) + private Integer noticeId; + + @ApiModelProperty(value = "消息类型") + private String type; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "颜色") + private String color; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "消息来源") + private String source; + + @ApiModelProperty(value = "来源记录ID") + private Integer sourceId; + + @ApiModelProperty(value = "路由地址") + private String path; + + @ApiModelProperty(value = "代币") + private Long tokens; + + @ApiModelProperty(value = "是否已查阅") + private Integer isRead; + + @ApiModelProperty(value = "渠道, 0发送 1回复") + private Integer channel; + + @ApiModelProperty(value = "任务状态") + private Integer progress; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 String nickname; + + @ApiModelProperty(value = "开发者头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/Project.java b/src/main/java/com/gxwebsoft/oa/entity/Project.java new file mode 100644 index 0000000..33ffb57 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/Project.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.oa.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 WebSoft + * @since 2022-11-16 11:00:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Project对象", description = "项目管理表") +@TableName("oa_project") +public class Project implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "项目ID") + @TableId(value = "project_id", type = IdType.AUTO) + private Integer projectId; + + @ApiModelProperty(value = "项目名称") + private String projectName; + + @ApiModelProperty(value = "项目标识") + private String projectCode; + + @ApiModelProperty(value = "商品分类") + private String projectCategory; + + @ApiModelProperty(value = "项目商标") + private String projectAvatar; + + @ApiModelProperty(value = "项目域名") + private String url; + + @ApiModelProperty(value = "开发版域名") + private String urlDev; + + @ApiModelProperty(value = "后台管理地址") + private String urlAdmin; + + @ApiModelProperty(value = "默认账号密码") + private String account; + + @ApiModelProperty(value = "项目金额") + private BigDecimal money; + + @ApiModelProperty(value = "实际金额") + private BigDecimal realMoney; + + @ApiModelProperty(value = "年费") + private BigDecimal annualFee; + + @ApiModelProperty(value = "项目详情") + private String content; + + @ApiModelProperty(value = "开发参数(json)") + private String param; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "项目进度(10待安排 20策划设计 30功能开发 40待验收 50完成)") + private Integer progress; + + @ApiModelProperty(value = "初始浏览数") + private Integer views; + + @ApiModelProperty(value = "状态(10上架 20下架)") + private Integer status; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "是否精选客户案例") + private Boolean isCase; + + @ApiModelProperty(value = "负责人") + private Integer commander; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "项目归属者") + private Integer customerId; + + @ApiModelProperty(value = "项目描述") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/Task.java b/src/main/java/com/gxwebsoft/oa/entity/Task.java new file mode 100644 index 0000000..ffa6942 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/Task.java @@ -0,0 +1,188 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 文章记录表 + * + * @author WebSoft + * @since 2022-11-16 11:21:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Task对象", description = "文章记录表") +@TableName("oa_task") +public class Task implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "任务ID") + @TableId(value = "task_id", type = IdType.AUTO) + private Integer taskId; + + @ApiModelProperty(value = "任务名称") + private String name; + + @ApiModelProperty(value = "任务类型") + private String taskType; + + @ApiModelProperty(value = "工单附件") + private String files; + + @ApiModelProperty(value = "开始时间") + private Date startTime; + + @ApiModelProperty(value = "结束时间") + private Date endTime; + + @ApiModelProperty(value = "任务内容") + @TableField(exist = false) + private String content; + + @ApiModelProperty(value = "任务状态") + private Integer progress; + + @ApiModelProperty(value = "优先级") + private String priority; + + @ApiModelProperty(value = "品质要求") + private String quality; + + @ApiModelProperty(value = "时限(天)") + private Integer day; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "应用ID") + private Integer appId; + + @ApiModelProperty(value = "机构id") + private Integer organizationId; + + @ApiModelProperty(value = "客户ID") + private Integer customerId; + + @ApiModelProperty(value = "项目ID") + private Integer projectId; + + @ApiModelProperty(value = "资产ID") + private Integer assetsId; + + @ApiModelProperty(value = "是否已查阅") + private Integer isRead; + + @ApiModelProperty(value = "最后回复人ID") + private Integer lastReadUser; + + @ApiModelProperty(value = "最后回复人头像") + @TableField(exist = false) + private String lastAvatar; + + @ApiModelProperty(value = "最后回复人昵称") + @TableField(exist = false) + private String lastNickname; + + @ApiModelProperty(value = "最后回复人姓名") + @TableField(exist = false) + private String lastRealName; + + @ApiModelProperty(value = "最后回复人公司名称") + @TableField(exist = false) + private String lastCompanyName; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "任务发起人ID") + private Integer promoter; + + @ApiModelProperty(value = "发起人昵称") + @TableField(exist = false) + private String promoterName; + + @ApiModelProperty(value = "发起人别名") + @TableField(exist = false) + private String promoterAlias; + + @ApiModelProperty(value = "发起人头像") + @TableField(exist = false) + private String promoterAvatar; + + @ApiModelProperty(value = "发起人单位名称") + @TableField(exist = false) + private String promoterCompanyName; + + @ApiModelProperty(value = "受理人") + private Integer commander; + + @ApiModelProperty(value = "受理人昵称") + @TableField(exist = false) + private String commanderName; + + @ApiModelProperty(value = "受理人别名") + @TableField(exist = false) + private String commanderAlias; + + @ApiModelProperty(value = "受理人真实姓名") + @TableField(exist = false) + private String commanderRealName; + + @ApiModelProperty(value = "受理人头像") + @TableField(exist = false) + private String commanderAvatar; + + @ApiModelProperty(value = "受理人单位名称") + @TableField(exist = false) + private String commanderCompanyName; + + @ApiModelProperty(value = "成员管理") + @TableField(exist = false) + private List users; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String appName; + + @ApiModelProperty(value = "应用信息") + @TableField(exist = false) + private App appInfo; + +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/TaskRecord.java b/src/main/java/com/gxwebsoft/oa/entity/TaskRecord.java new file mode 100644 index 0000000..73e8e80 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/TaskRecord.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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-03-05 00:52:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TaskRecord对象", description = "工单回复记录表") +@TableName("oa_task_record") +public class TaskRecord implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "回复ID") + @TableId(value = "task_record_id", type = IdType.AUTO) + private Integer taskRecordId; + + @ApiModelProperty(value = "工单ID") + private Integer taskId; + + @ApiModelProperty(value = "上级id") + private Integer parentId; + + @ApiModelProperty(value = "任务内容") + private String content; + + @ApiModelProperty(value = "工单附件") + private String files; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; +} diff --git a/src/main/java/com/gxwebsoft/oa/entity/TaskUser.java b/src/main/java/com/gxwebsoft/oa/entity/TaskUser.java new file mode 100644 index 0000000..2d4f2ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/entity/TaskUser.java @@ -0,0 +1,67 @@ +package com.gxwebsoft.oa.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +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-03-06 12:00:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TaskUser对象", description = "工单成员") +@TableName("oa_task_user") +public class TaskUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "task_user_id", type = IdType.AUTO) + private Integer taskUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "工单ID") + private Integer taskId; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "加入时间") + private Date createTime; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String name; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String email; + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/AppMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/AppMapper.java new file mode 100644 index 0000000..4415af7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/AppMapper.java @@ -0,0 +1,38 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.App; +import com.gxwebsoft.oa.param.AppParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用管理记录表Mapper + * + * @author 科技小王子 + * @since 2023-03-28 10:45:39 + */ +public interface AppMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") AppParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") AppParam param); + + List pageRel(@Param("param") AppParam param); +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/AppUserMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/AppUserMapper.java new file mode 100644 index 0000000..68736b1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/AppUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.param.AppUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 应用成员Mapper + * + * @author 科技小王子 + * @since 2023-05-31 13:18:55 + */ +public interface AppUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") AppUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") AppUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/AssetsMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/AssetsMapper.java new file mode 100644 index 0000000..ebc8e58 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/AssetsMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.Assets; +import com.gxwebsoft.oa.param.AssetsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 服务器资产记录表Mapper + * + * @author WebSoft + * @since 2022-11-16 11:13:16 + */ +public interface AssetsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") AssetsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") AssetsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/AssetsUserMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/AssetsUserMapper.java new file mode 100644 index 0000000..3ff2804 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/AssetsUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.AssetsUser; +import com.gxwebsoft.oa.param.AssetsUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 服务器成员管理Mapper + * + * @author 科技小王子 + * @since 2023-07-18 14:35:51 + */ +public interface AssetsUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") AssetsUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") AssetsUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/CustomerMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/CustomerMapper.java new file mode 100644 index 0000000..b77a4ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/CustomerMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.Customer; +import com.gxwebsoft.oa.param.CustomerParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 客户管理记录表Mapper + * + * @author WebSoft + * @since 2022-11-16 11:16:14 + */ +public interface CustomerMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CustomerParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CustomerParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/NoticeMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/NoticeMapper.java new file mode 100644 index 0000000..478d1f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/NoticeMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.Notice; +import com.gxwebsoft.oa.param.NoticeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 消息记录表Mapper + * + * @author 科技小王子 + * @since 2023-03-22 14:07:26 + */ +public interface NoticeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") NoticeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") NoticeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/ProjectMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/ProjectMapper.java new file mode 100644 index 0000000..ff5cb98 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/ProjectMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.Project; +import com.gxwebsoft.oa.param.ProjectParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 项目管理表Mapper + * + * @author WebSoft + * @since 2022-11-16 11:00:43 + */ +public interface ProjectMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ProjectParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ProjectParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/TaskMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/TaskMapper.java new file mode 100644 index 0000000..17fa0e0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/TaskMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.param.TaskParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 文章记录表Mapper + * + * @author WebSoft + * @since 2022-11-16 11:21:43 + */ +public interface TaskMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TaskParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TaskParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/TaskRecordMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/TaskRecordMapper.java new file mode 100644 index 0000000..9d1666a --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/TaskRecordMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.param.TaskRecordParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 工单回复记录表Mapper + * + * @author 科技小王子 + * @since 2023-03-05 00:52:21 + */ +public interface TaskRecordMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TaskRecordParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TaskRecordParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/TaskUserMapper.java b/src/main/java/com/gxwebsoft/oa/mapper/TaskUserMapper.java new file mode 100644 index 0000000..9b1ecf8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/TaskUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.oa.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.oa.entity.TaskUser; +import com.gxwebsoft.oa.param.TaskUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 工单成员Mapper + * + * @author 科技小王子 + * @since 2023-03-06 12:00:41 + */ +public interface TaskUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TaskUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TaskUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/AppMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/AppMapper.xml new file mode 100644 index 0000000..c81507e --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/AppMapper.xml @@ -0,0 +1,195 @@ + + + + + + + SELECT a.*, + b.company_id, + b.short_name, + b.company_name, + c.nickname, + c.real_name, + c.user_id, + c.avatar + FROM oa_app a + LEFT JOIN sys_company b ON a.company_id = b.company_id + LEFT JOIN sys_user c ON a.user_id = c.user_id + + + AND a.app_id = #{param.appId} + + + AND a.app_name LIKE CONCAT('%', #{param.appName}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.app_code LIKE CONCAT('%', #{param.appCode}, '%') + + + AND a.app_type LIKE CONCAT('%', #{param.appType}, '%') + + + AND a.menu_type = #{param.menuType} + + + AND a.company_id = #{param.companyId} + + + AND a.app_icon LIKE CONCAT('%', #{param.appIcon}, '%') + + + AND a.app_qrcode LIKE CONCAT('%', #{param.appQrcode}, '%') + + + AND a.app_url LIKE CONCAT('%', #{param.appUrl}, '%') + + + AND a.admin_url LIKE CONCAT('%', #{param.adminUrl}, '%') + + + AND a.down_url LIKE CONCAT('%', #{param.downUrl}, '%') + + + AND a.ip_address LIKE CONCAT('%', #{param.ipAddress}, '%') + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + AND a.package_name LIKE CONCAT('%', #{param.packageName}, '%') + + + AND a.clicks = #{param.clicks} + + + AND a.installs = #{param.installs} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.requirement LIKE CONCAT('%', #{param.requirement}, '%') + + + AND a.developer LIKE CONCAT('%', #{param.developer}, '%') + + + AND a.price = #{param.price} + + + AND a.line_price = #{param.linePrice} + + + AND a.score LIKE CONCAT('%', #{param.score}, '%') + + + AND a.star LIKE CONCAT('%', #{param.star}, '%') + + + AND a.path LIKE CONCAT('%', #{param.path}, '%') + + + AND a.component LIKE CONCAT('%', #{param.component}, '%') + + + AND a.authority LIKE CONCAT('%', #{param.authority}, '%') + + + AND a.target LIKE CONCAT('%', #{param.target}, '%') + + + AND a.hide = #{param.hide} + + + AND a.search = #{param.search} + + + AND a.active LIKE CONCAT('%', #{param.active}, '%') + + + AND a.meta LIKE CONCAT('%', #{param.meta}, '%') + + + AND a.edition LIKE CONCAT('%', #{param.edition}, '%') + + + AND a.version LIKE CONCAT('%', #{param.version}, '%') + + + AND a.is_use = #{param.isUse} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.app_id IN (SELECT app_id FROM oa_app_user WHERE user_id=#{param.userId}) + + + AND a.app_id IN + + #{item} + + + + AND a.organization_id = #{param.organizationId} + + + AND a.tenant_id = #{param.tenantId} + + + AND a.tenant_code LIKE CONCAT('%', #{param.tenantCode}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.app_status = #{param.appStatus} + + + AND a.company_id = #{param.companyId} + + + + AND (a.app_name LIKE CONCAT('%', #{param.keywords}, '%') + OR b.short_name LIKE CONCAT('%', #{param.keywords}, '%') + OR b.company_id = #{param.keywords} + OR b.company_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/AppUserMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/AppUserMapper.xml new file mode 100644 index 0000000..967f400 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/AppUserMapper.xml @@ -0,0 +1,52 @@ + + + + + + + SELECT a.*, b.nickname,b.email,b.phone,b.avatar + FROM oa_app_user a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.app_user_id = #{param.appUserId} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.app_id = #{param.appId} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.email LIKE CONCAT('%', #{param.keywords}, '%') + OR b.username LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/AssetsMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/AssetsMapper.xml new file mode 100644 index 0000000..d204f35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/AssetsMapper.xml @@ -0,0 +1,149 @@ + + + + + + + SELECT a.*, + b.user_id,b.avatar,b.nickname, + c.company_name + FROM oa_assets a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN sys_company c ON a.company_id = c.company_id + + + AND a.assets_id = #{param.assetsId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.code LIKE CONCAT('%', #{param.code}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.configuration LIKE CONCAT('%', #{param.configuration}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.password LIKE CONCAT('%', #{param.password}, '%') + + + AND a.brand_account LIKE CONCAT('%', #{param.brandAccount}, '%') + + + AND a.brand_password LIKE CONCAT('%', #{param.brandPassword}, '%') + + + AND a.panel LIKE CONCAT('%', #{param.panel}, '%') + + + AND a.panel_account LIKE CONCAT('%', #{param.panelAccount}, '%') + + + AND a.panel_password LIKE CONCAT('%', #{param.panelPassword}, '%') + + + AND a.finance_amount = #{param.financeAmount} + + + AND a.finance_years = #{param.financeYears} + + + AND a.finance_renew = #{param.financeRenew} + + + AND a.finance_customer_name LIKE CONCAT('%', #{param.financeCustomerName}, '%') + + + AND a.finance_customer_contact LIKE CONCAT('%', #{param.financeCustomerContact}, '%') + + + AND a.finance_customer_phone LIKE CONCAT('%', #{param.financeCustomerPhone}, '%') + + + AND a.customer_id = #{param.customerId} + + + AND a.customer_name LIKE CONCAT('%', #{param.customerName}, '%') + + + AND a.open_port LIKE CONCAT('%', #{param.openPort}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.is_top LIKE CONCAT('%', #{param.isTop}, '%') + + + AND a.visibility LIKE CONCAT('%', #{param.visibility}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.company_id = #{param.companyId} + + + AND a.organization_id = #{param.organizationId} + + + AND a.status LIKE CONCAT('%', #{param.status}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.assets_id IN + + #{item} + + + + AND (a.code LIKE CONCAT('%', #{param.keywords}, '%') + OR a.name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/AssetsUserMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/AssetsUserMapper.xml new file mode 100644 index 0000000..660a834 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/AssetsUserMapper.xml @@ -0,0 +1,52 @@ + + + + + + + SELECT a.*, b.nickname,b.email,b.phone,b.avatar + FROM oa_assets_user a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.id = #{param.id} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.assets_id = #{param.assetsId} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.email LIKE CONCAT('%', #{param.keywords}, '%') + OR b.username LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/CustomerMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/CustomerMapper.xml new file mode 100644 index 0000000..913b5f8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/CustomerMapper.xml @@ -0,0 +1,107 @@ + + + + + + + SELECT a.* + FROM oa_customer a + + + AND a.customer_id = #{param.customerId} + + + AND a.customer_name LIKE CONCAT('%', #{param.customerName}, '%') + + + AND a.customer_code LIKE CONCAT('%', #{param.customerCode}, '%') + + + AND a.customer_full_name LIKE CONCAT('%', #{param.customerFullName}, '%') + + + AND a.customer_avatar LIKE CONCAT('%', #{param.customerAvatar}, '%') + + + AND a.customer_type LIKE CONCAT('%', #{param.customerType}, '%') + + + AND a.customer_type = '' + + + AND a.customer_source LIKE CONCAT('%', #{param.customerSource}, '%') + + + AND a.customer_phone LIKE CONCAT('%', #{param.customerPhone}, '%') + + + AND a.customer_mobile LIKE CONCAT('%', #{param.customerMobile}, '%') + + + AND a.customer_contacts LIKE CONCAT('%', #{param.customerContacts}, '%') + + + AND a.customer_province LIKE CONCAT('%', #{param.customerProvince}, '%') + + + AND a.customer_city LIKE CONCAT('%', #{param.customerCity}, '%') + + + AND a.customer_region LIKE CONCAT('%', #{param.customerRegion}, '%') + + + AND a.customer_address LIKE CONCAT('%', #{param.customerAddress}, '%') + + + AND a.progress LIKE CONCAT('%', #{param.progress}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.organization_id = #{param.organizationId} + + + AND a.visibility LIKE CONCAT('%', #{param.visibility}, '%') + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.customer_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.customer_contacts LIKE CONCAT('%', #{param.keywords}, '%') + OR a.customer_mobile LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/NoticeMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/NoticeMapper.xml new file mode 100644 index 0000000..a5ab6d5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/NoticeMapper.xml @@ -0,0 +1,69 @@ + + + + + + + SELECT a.*, + b.nickname, + b.user_id, + b.avatar + FROM oa_notice a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.notice_id = #{param.noticeId} + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.title LIKE CONCAT('%', #{param.title}, '%') + + + AND a.icon LIKE CONCAT('%', #{param.icon}, '%') + + + AND a.color LIKE CONCAT('%', #{param.color}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/ProjectMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/ProjectMapper.xml new file mode 100644 index 0000000..5e419a7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/ProjectMapper.xml @@ -0,0 +1,116 @@ + + + + + + + SELECT a.* + FROM oa_project a + + + AND a.project_id = #{param.projectId} + + + AND a.project_name LIKE CONCAT('%', #{param.projectName}, '%') + + + AND a.project_code LIKE CONCAT('%', #{param.projectCode}, '%') + + + AND a.project_category LIKE CONCAT('%', #{param.projectCategory}, '%') + + + AND a.project_avatar LIKE CONCAT('%', #{param.projectAvatar}, '%') + + + AND a.url LIKE CONCAT('%', #{param.url}, '%') + + + AND a.url_dev LIKE CONCAT('%', #{param.urlDev}, '%') + + + AND a.url_admin LIKE CONCAT('%', #{param.urlAdmin}, '%') + + + AND a.account LIKE CONCAT('%', #{param.account}, '%') + + + AND a.money = #{param.money} + + + AND a.real_money = #{param.realMoney} + + + AND a.annual_fee = #{param.annualFee} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.param LIKE CONCAT('%', #{param.param}, '%') + + + AND a.qrcode LIKE CONCAT('%', #{param.qrcode}, '%') + + + AND a.customer_name LIKE CONCAT('%', #{param.customerName}, '%') + + + AND a.progress = #{param.progress} + + + AND a.views = #{param.views} + + + AND a.status = #{param.status} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.is_case = #{param.isCase} + + + AND a.commander = #{param.commander} + + + AND a.user_id = #{param.userId} + + + AND a.organization_id = #{param.organizationId} + + + AND a.visibility LIKE CONCAT('%', #{param.visibility}, '%') + + + AND a.customer_id = #{param.customerId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskMapper.xml new file mode 100644 index 0000000..a6e8871 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskMapper.xml @@ -0,0 +1,132 @@ + + + + + + + SELECT a.*, + b.nickname as promoterName,b.avatar as promoterAvatar,b.alias as promoterAlias,b.company_name as promoterCompanyName, + c.nickname as commanderName,c.avatar as commanderAvatar,c.alias as commanderAlias,c.company_name as commanderCompanyName, + d.nickname as lastNickname ,d.avatar as lastAvatar,d.real_name as lastRealName,d.company_name as lastCompanyName, + e.app_id,e.app_name + FROM oa_task a + LEFT JOIN sys_user b ON a.promoter = b.user_id + LEFT JOIN sys_user c ON a.commander = c.user_id + LEFT JOIN sys_user d ON a.last_read_user = d.user_id + LEFT JOIN oa_app e ON a.app_id = e.app_id + + + AND a.task_id = #{param.taskId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.task_type IN + + #{item} + + + + AND a.customer_id = #{param.customerId} + + + AND a.app_id = #{param.appId} + + + AND a.project_id = #{param.projectId} + + + AND a.assets_id = #{param.assetsId} + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.promoter = #{param.promoter} + + + AND (a.commander = #{param.commander} OR a.promoter = #{param.commander}) + + + AND a.progress IN + + #{item} + + + + AND a.priority LIKE CONCAT('%', #{param.priority}, '%') + + + AND a.quality LIKE CONCAT('%', #{param.quality}, '%') + + + AND a.day = #{param.day} + + + AND a.user_id = #{param.userId} + + + + + + AND a.organization_id = #{param.organizationId} + + + AND a.shop_id = #{param.shopId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.task_id LIKE CONCAT('%', #{param.keywords}, '%') + OR b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.real_name LIKE CONCAT('%', #{param.keywords}, '%') + OR b.company_name LIKE CONCAT('%', #{param.keywords}, '%') + OR c.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR c.real_name LIKE CONCAT('%', #{param.keywords}, '%') + OR e.app_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + AND b.app_name LIKE CONCAT('%', #{param.appName}, '%') + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskRecordMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskRecordMapper.xml new file mode 100644 index 0000000..3978d19 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskRecordMapper.xml @@ -0,0 +1,69 @@ + + + + + + + SELECT a.*, + b.nickname, + b.user_id, + b.avatar + FROM oa_task_record a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.task_record_id = #{param.taskRecordId} + + + AND a.task_id = #{param.taskId} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.developer_id = #{param.developerId} + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskUserMapper.xml b/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskUserMapper.xml new file mode 100644 index 0000000..dc3819c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/mapper/xml/TaskUserMapper.xml @@ -0,0 +1,50 @@ + + + + + + + SELECT a.*, + b.nickname as name, + b.phone, + b.user_id, + b.avatar, + b.email + FROM oa_task_user a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.task_user_id = #{param.taskUserId} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.task_id = #{param.taskId} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/oa/param/AppParam.java b/src/main/java/com/gxwebsoft/oa/param/AppParam.java new file mode 100644 index 0000000..ca7eceb --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/AppParam.java @@ -0,0 +1,187 @@ +package com.gxwebsoft.oa.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.math.BigDecimal; +import java.util.Set; + +/** + * 应用管理记录表查询参数 + * + * @author 科技小王子 + * @since 2023-03-28 10:45:39 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "AppParam对象", description = "应用管理记录表查询参数") +public class AppParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "应用名称") + private String appName; + + @ApiModelProperty(value = "上级id, 0是顶级") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "应用标识") + private String appCode; + + @ApiModelProperty(value = "应用类型") + private String appType; + + @ApiModelProperty(value = "类型, 0菜单, 1按钮") + @QueryField(type = QueryType.EQ) + private Integer menuType; + + @ApiModelProperty(value = "企业ID") + @QueryField(type = QueryType.EQ) + private Integer companyId; + + @ApiModelProperty(value = "应用图标") + private String appIcon; + + @ApiModelProperty(value = "二维码") + private String appQrcode; + + @ApiModelProperty(value = "链接地址") + private String appUrl; + + @ApiModelProperty(value = "后台管理地址") + private String adminUrl; + + @ApiModelProperty(value = "下载地址") + private String downUrl; + + @ApiModelProperty(value = "仓库地址") + private String gitUrl; + + @ApiModelProperty(value = "IP白名单") + private String ipAddress; + + @ApiModelProperty(value = "应用截图") + private String images; + + @ApiModelProperty(value = "应用包名") + private String packageName; + + @ApiModelProperty(value = "下载次数") + @QueryField(type = QueryType.EQ) + private Integer clicks; + + @ApiModelProperty(value = "安装次数") + @QueryField(type = QueryType.EQ) + private Integer installs; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "应用介绍") + private String content; + + @ApiModelProperty(value = "项目需求") + private String requirement; + + @ApiModelProperty(value = "开发者(个人或公司)") + private String developer; + + @ApiModelProperty(value = "软件定价") + @QueryField(type = QueryType.EQ) + private BigDecimal price; + + @ApiModelProperty(value = "划线价格") + @QueryField(type = QueryType.EQ) + private BigDecimal linePrice; + + @ApiModelProperty(value = "评分") + private String score; + + @ApiModelProperty(value = "星级") + private String star; + + @ApiModelProperty(value = "菜单路由地址") + private String path; + + @ApiModelProperty(value = "菜单组件地址, 目录可为空") + private String component; + + @ApiModelProperty(value = "权限标识") + private String authority; + + @ApiModelProperty(value = "打开位置") + private String target; + + @ApiModelProperty(value = "是否隐藏, 0否, 1是(仅注册路由不显示在左侧菜单)") + @QueryField(type = QueryType.EQ) + private Integer hide; + + @ApiModelProperty(value = "禁止搜索,1禁止 0 允许") + @QueryField(type = QueryType.EQ) + private Integer search; + + @ApiModelProperty(value = "菜单侧栏选中的path") + private String active; + + @ApiModelProperty(value = "其它路由元信息") + private String meta; + + @ApiModelProperty(value = "版本,0正式版 1体验版 2开发版") + private String edition; + + @ApiModelProperty(value = "版本号") + private String version; + + @ApiModelProperty(value = "是否已安装") + @QueryField(type = QueryType.EQ) + private Integer isUse; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "应用状态") + private String appStatus; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "租户ID") + private Integer tenantId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "企业名称") + private String companyName; + + @ApiModelProperty(value = "租户编号") + private String tenantCode; + + @ApiModelProperty(value = "按APPID集搜索") + @TableField(exist = false) + private Set appIds; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/AppUserParam.java b/src/main/java/com/gxwebsoft/oa/param/AppUserParam.java new file mode 100644 index 0000000..136f2ad --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/AppUserParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.oa.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 2023-05-31 13:18:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "AppUserParam对象", description = "应用成员查询参数") +public class AppUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer appUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer appId; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户名") + @TableField(exist = false) + private String username; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "邮箱") + @TableField(exist = false) + private String email; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/AssetsParam.java b/src/main/java/com/gxwebsoft/oa/param/AssetsParam.java new file mode 100644 index 0000000..5d85734 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/AssetsParam.java @@ -0,0 +1,151 @@ +package com.gxwebsoft.oa.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; +import java.util.Set; + +/** + * 服务器资产记录表查询参数 + * + * @author WebSoft + * @since 2022-11-16 11:13:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "AssetsParam对象", description = "服务器资产记录表查询参数") +public class AssetsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "资产ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "资产名称") + private String name; + + @ApiModelProperty(value = "资产标识") + private String code; + + @ApiModelProperty(value = "资产类型") + private String type; + + @ApiModelProperty(value = "服务器厂商") + private String brand; + + @ApiModelProperty(value = "服务器配置") + private String configuration; + + @ApiModelProperty(value = "初始账号") + private String account; + + @ApiModelProperty(value = "初始密码") + private String password; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录账号") + private String brandAccount; + + @ApiModelProperty(value = "(阿里云/腾讯云)登录密码") + private String brandPassword; + + @ApiModelProperty(value = "宝塔面板") + private String panel; + + @ApiModelProperty(value = "宝塔面板账号") + private String panelAccount; + + @ApiModelProperty(value = "宝塔面板密码") + private String panelPassword; + + @ApiModelProperty(value = "财务信息-合同金额") + @QueryField(type = QueryType.EQ) + private BigDecimal financeAmount; + + @ApiModelProperty(value = "购买年限") + @QueryField(type = QueryType.EQ) + private Integer financeYears; + + @ApiModelProperty(value = "续费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal financeRenew; + + @ApiModelProperty(value = "客户名称") + private String financeCustomerName; + + @ApiModelProperty(value = "客户联系人") + private String financeCustomerContact; + + @ApiModelProperty(value = "客户联系电话") + private String financeCustomerPhone; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "开放端口") + private String openPort; + + @ApiModelProperty(value = "详情内容") + private String content; + + @ApiModelProperty(value = "购买时间") + private String startTime; + + @ApiModelProperty(value = "到期时间") + private String endTime; + + @ApiModelProperty(value = "置顶状态") + private String isTop; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "文章排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "描述") + private String comments; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private String status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "企业ID") + private Integer companyId; + + @ApiModelProperty(value = "企业名称") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty(value = "按ID集搜索") + @TableField(exist = false) + private Set assetsIds; + + + + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/AssetsUserParam.java b/src/main/java/com/gxwebsoft/oa/param/AssetsUserParam.java new file mode 100644 index 0000000..e707856 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/AssetsUserParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.oa.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 服务器成员管理查询参数 + * + * @author 科技小王子 + * @since 2023-07-18 14:35:51 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "AssetsUserParam对象", description = "服务器成员管理查询参数") +public class AssetsUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "应用ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户名") + @TableField(exist = false) + private String username; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "邮箱") + @TableField(exist = false) + private String email; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/CustomerParam.java b/src/main/java/com/gxwebsoft/oa/param/CustomerParam.java new file mode 100644 index 0000000..84a9223 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/CustomerParam.java @@ -0,0 +1,101 @@ +package com.gxwebsoft.oa.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; + +/** + * 客户管理记录表查询参数 + * + * @author WebSoft + * @since 2022-11-16 11:16:14 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CustomerParam对象", description = "客户管理记录表查询参数") +public class CustomerParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "客户标识") + private String customerCode; + + @ApiModelProperty(value = "客户全称") + private String customerFullName; + + @ApiModelProperty(value = "头像") + private String customerAvatar; + + @ApiModelProperty(value = "客户类型") + private String customerType; + + @ApiModelProperty(value = "客户来源") + private String customerSource; + + @ApiModelProperty(value = "公司座机") + private String customerPhone; + + @ApiModelProperty(value = "手机号码") + private String customerMobile; + + @ApiModelProperty(value = "联系人") + private String customerContacts; + + @ApiModelProperty(value = "所在省份") + private String customerProvince; + + @ApiModelProperty(value = "所在城市") + private String customerCity; + + @ApiModelProperty(value = "所在地区") + private String customerRegion; + + @ApiModelProperty(value = "所在地址") + private String customerAddress; + + @ApiModelProperty(value = "跟进状态") + private String progress; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @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 = "按无企业类型查询") + @QueryField(type = QueryType.EQ) + private Boolean emptyType; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/NoticeParam.java b/src/main/java/com/gxwebsoft/oa/param/NoticeParam.java new file mode 100644 index 0000000..df369ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/NoticeParam.java @@ -0,0 +1,80 @@ +package com.gxwebsoft.oa.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 消息记录表查询参数 + * + * @author 科技小王子 + * @since 2023-03-22 14:07:26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "NoticeParam对象", description = "消息记录表查询参数") +public class NoticeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer noticeId; + + @ApiModelProperty(value = "消息类型") + private String type; + + @ApiModelProperty(value = "标题") + private String title; + + @ApiModelProperty(value = "图标") + private String icon; + + @ApiModelProperty(value = "颜色") + private String color; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "消息来源") + private String source; + + @ApiModelProperty(value = "来源记录ID") + private Integer sourceId; + + @ApiModelProperty(value = "路由地址") + private String path; + + @ApiModelProperty(value = "渠道, 0发送 1回复") + private Integer channel; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "租户id") + @QueryField(type = QueryType.EQ) + private Integer tenantId; + + @ApiModelProperty(value = "状态, 0待处理, 1已完成") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/ProjectParam.java b/src/main/java/com/gxwebsoft/oa/param/ProjectParam.java new file mode 100644 index 0000000..a35020d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/ProjectParam.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.oa.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 WebSoft + * @since 2022-11-16 11:00:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ProjectParam对象", description = "项目管理表查询参数") +public class ProjectParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "项目ID") + @QueryField(type = QueryType.EQ) + private Integer projectId; + + @ApiModelProperty(value = "项目名称") + private String projectName; + + @ApiModelProperty(value = "项目标识") + private String projectCode; + + @ApiModelProperty(value = "商品分类") + private String projectCategory; + + @ApiModelProperty(value = "项目商标") + private String projectAvatar; + + @ApiModelProperty(value = "项目域名") + private String url; + + @ApiModelProperty(value = "开发版域名") + private String urlDev; + + @ApiModelProperty(value = "后台管理地址") + private String urlAdmin; + + @ApiModelProperty(value = "默认账号密码") + private String account; + + @ApiModelProperty(value = "项目金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "实际金额") + @QueryField(type = QueryType.EQ) + private BigDecimal realMoney; + + @ApiModelProperty(value = "年费") + @QueryField(type = QueryType.EQ) + private BigDecimal annualFee; + + @ApiModelProperty(value = "项目详情") + private String content; + + @ApiModelProperty(value = "开发参数(json)") + private String param; + + @ApiModelProperty(value = "二维码") + private String qrcode; + + @ApiModelProperty(value = "客户名称") + private String customerName; + + @ApiModelProperty(value = "项目进度(10待安排 20策划设计 30功能开发 40待验收 50完成)") + @QueryField(type = QueryType.EQ) + private Integer progress; + + @ApiModelProperty(value = "初始浏览数") + @QueryField(type = QueryType.EQ) + private Integer views; + + @ApiModelProperty(value = "状态(10上架 20下架)") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否精选客户案例") + @QueryField(type = QueryType.EQ) + private Boolean isCase; + + @ApiModelProperty(value = "负责人") + @QueryField(type = QueryType.EQ) + private Integer commander; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "可见性(public,private,protected)") + private String visibility; + + @ApiModelProperty(value = "项目归属者") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty(value = "项目描述") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/TaskParam.java b/src/main/java/com/gxwebsoft/oa/param/TaskParam.java new file mode 100644 index 0000000..c736e96 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/TaskParam.java @@ -0,0 +1,145 @@ +package com.gxwebsoft.oa.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 WebSoft + * @since 2022-11-16 11:21:42 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TaskParam对象", description = "文章记录表查询参数") +public class TaskParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "任务ID") + @QueryField(type = QueryType.EQ) + private Integer taskId; + + @ApiModelProperty(value = "任务名称") + private String name; + + @ApiModelProperty(value = "任务类型") + private String taskType; + + @ApiModelProperty(value = "关联应用") + private Integer appId; + + @ApiModelProperty(value = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty(value = "项目ID") + @QueryField(type = QueryType.EQ) + private Integer projectId; + + @ApiModelProperty(value = "资产ID") + @QueryField(type = QueryType.EQ) + private Integer assetsId; + + @ApiModelProperty(value = "是否已查阅") + private Integer isRead; + + @ApiModelProperty(value = "最后回复人ID") + private Integer lastReadUser; + + @ApiModelProperty(value = "最后回复人头像") + @TableField(exist = false) + private String lastAvatar; + + @ApiModelProperty(value = "最后回复人昵称") + @TableField(exist = false) + private String lastNickname; + + @ApiModelProperty(value = "最后回复人姓名") + @TableField(exist = false) + private String lastRealName; + + @ApiModelProperty(value = "最后回复人公司名称") + @TableField(exist = false) + private String lastCompanyName; + + @ApiModelProperty(value = "开始时间") + private String startTime; + + @ApiModelProperty(value = "结束时间") + private String endTime; + + @ApiModelProperty(value = "任务内容") + private String content; + + @ApiModelProperty(value = "任务发起人") + @QueryField(type = QueryType.EQ) + private Integer promoter; + + @ApiModelProperty(value = "负责人") + private Integer commander; + + @ApiModelProperty(value = "任务状态") + private String progress; + + @ApiModelProperty(value = "优先级") + private String priority; + + @ApiModelProperty(value = "品质要求") + private String quality; + + @ApiModelProperty(value = "时限(天)") + @QueryField(type = QueryType.EQ) + private Integer day; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "机构id") + @QueryField(type = QueryType.EQ) + private Integer organizationId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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 = "用户昵称") + @QueryField(type = QueryType.EQ) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @QueryField(type = QueryType.EQ) + private String avatar; + + @ApiModelProperty(value = "应用名称") + @TableField(exist = false) + private String appName; + + @ApiModelProperty(value = "关键词搜索") + @TableField(exist = false) + private String keywords; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/TaskRecordParam.java b/src/main/java/com/gxwebsoft/oa/param/TaskRecordParam.java new file mode 100644 index 0000000..822697f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/TaskRecordParam.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.oa.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 com.gxwebsoft.oa.entity.App; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 工单回复记录表查询参数 + * + * @author 科技小王子 + * @since 2023-03-05 00:52:21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TaskRecordParam对象", description = "工单回复记录表查询参数") +public class TaskRecordParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "回复ID") + @QueryField(type = QueryType.EQ) + private Integer taskRecordId; + + @ApiModelProperty(value = "工单ID") + @QueryField(type = QueryType.EQ) + private Integer taskId; + + @ApiModelProperty(value = "上级ID") + private Integer parentId; + + @ApiModelProperty(value = "任务内容") + private String content; + + @ApiModelProperty(value = "工单附件") + private String files; + + @ApiModelProperty(value = "开发者ID") + @QueryField(type = QueryType.EQ) + private Integer developerId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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 = "用户昵称") + @QueryField(type = QueryType.EQ) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @QueryField(type = QueryType.EQ) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/oa/param/TaskUserParam.java b/src/main/java/com/gxwebsoft/oa/param/TaskUserParam.java new file mode 100644 index 0000000..577aa4c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/param/TaskUserParam.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.oa.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; + +/** + * 工单成员查询参数 + * + * @author 科技小王子 + * @since 2023-03-06 12:00:41 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TaskUserParam对象", description = "工单成员查询参数") +public class TaskUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer taskUserId; + + @ApiModelProperty(value = "角色,10体验成员 20开发者成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "工单ID") + @QueryField(type = QueryType.EQ) + private Integer taskId; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/AppService.java b/src/main/java/com/gxwebsoft/oa/service/AppService.java new file mode 100644 index 0000000..bf03d2d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/AppService.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.App; +import com.gxwebsoft.oa.param.AppParam; + +import java.util.List; + +/** + * 应用管理记录表Service + * + * @author 科技小王子 + * @since 2023-03-28 10:45:39 + */ +public interface AppService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + @InterceptorIgnore(tenantLine = "true") + PageResult pageRel(AppParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(AppParam param); + + /** + * 根据id查询 + * + * @param appId 应用ID + * @return App + */ + @InterceptorIgnore(tenantLine = "true") + App getByIdRel(Integer appId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/AppUserService.java b/src/main/java/com/gxwebsoft/oa/service/AppUserService.java new file mode 100644 index 0000000..0a152f9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/AppUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.param.AppUserParam; + +import java.util.List; + +/** + * 应用成员Service + * + * @author 科技小王子 + * @since 2023-05-31 13:18:55 + */ +public interface AppUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(AppUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(AppUserParam param); + + /** + * 根据id查询 + * + * @param appUserId 自增ID + * @return AppUser + */ + AppUser getByIdRel(Integer appUserId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/AssetsService.java b/src/main/java/com/gxwebsoft/oa/service/AssetsService.java new file mode 100644 index 0000000..275d3f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/AssetsService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.Assets; +import com.gxwebsoft.oa.param.AssetsParam; + +import java.util.List; + +/** + * 服务器资产记录表Service + * + * @author WebSoft + * @since 2022-11-16 11:13:16 + */ +public interface AssetsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(AssetsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(AssetsParam param); + + /** + * 根据id查询 + * + * @param assetsId 资产ID + * @return Assets + */ + Assets getByIdRel(Integer assetsId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/AssetsUserService.java b/src/main/java/com/gxwebsoft/oa/service/AssetsUserService.java new file mode 100644 index 0000000..45a50bb --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/AssetsUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.AssetsUser; +import com.gxwebsoft.oa.param.AssetsUserParam; + +import java.util.List; + +/** + * 服务器成员管理Service + * + * @author 科技小王子 + * @since 2023-07-18 14:35:51 + */ +public interface AssetsUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(AssetsUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(AssetsUserParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return AssetsUser + */ + AssetsUser getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/CustomerService.java b/src/main/java/com/gxwebsoft/oa/service/CustomerService.java new file mode 100644 index 0000000..393265f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/CustomerService.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.Customer; +import com.gxwebsoft.oa.param.CustomerParam; + +import java.util.List; + +/** + * 客户管理记录表Service + * + * @author WebSoft + * @since 2022-11-16 11:16:14 + */ +public interface CustomerService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CustomerParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CustomerParam param); + + /** + * 根据id查询 + * + * @param customerId 客户ID + * @return Customer + */ + Customer getByIdRel(Integer customerId); + + Customer getByCustomerName(String customerName); +} diff --git a/src/main/java/com/gxwebsoft/oa/service/NoticeService.java b/src/main/java/com/gxwebsoft/oa/service/NoticeService.java new file mode 100644 index 0000000..b14c659 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/NoticeService.java @@ -0,0 +1,51 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.Notice; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.param.NoticeParam; + +import java.util.List; + +/** + * 消息记录表Service + * + * @author 科技小王子 + * @since 2023-03-22 14:07:26 + */ +public interface NoticeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(NoticeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(NoticeParam param); + + /** + * 根据id查询 + * + * @param noticeId ID + * @return Notice + */ + Notice getByIdRel(Integer noticeId); + + void add(); + + void addNotice(Task task); + + void addLetter(TaskRecord taskRecord); + + void addTodo(Task task); +} diff --git a/src/main/java/com/gxwebsoft/oa/service/ProjectService.java b/src/main/java/com/gxwebsoft/oa/service/ProjectService.java new file mode 100644 index 0000000..ffd1934 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/ProjectService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.Project; +import com.gxwebsoft.oa.param.ProjectParam; + +import java.util.List; + +/** + * 项目管理表Service + * + * @author WebSoft + * @since 2022-11-16 11:00:43 + */ +public interface ProjectService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ProjectParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ProjectParam param); + + /** + * 根据id查询 + * + * @param projectId 项目ID + * @return Project + */ + Project getByIdRel(Integer projectId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/TaskRecordService.java b/src/main/java/com/gxwebsoft/oa/service/TaskRecordService.java new file mode 100644 index 0000000..130883c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/TaskRecordService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.param.TaskRecordParam; + +import java.util.List; + +/** + * 工单回复记录表Service + * + * @author 科技小王子 + * @since 2023-03-05 00:52:21 + */ +public interface TaskRecordService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TaskRecordParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TaskRecordParam param); + + /** + * 根据id查询 + * + * @param taskRecordId 回复ID + * @return TaskRecord + */ + TaskRecord getByIdRel(Integer taskRecordId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/TaskService.java b/src/main/java/com/gxwebsoft/oa/service/TaskService.java new file mode 100644 index 0000000..30e7c80 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/TaskService.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.param.TaskParam; + +import java.util.ArrayList; +import java.util.List; + +/** + * 文章记录表Service + * + * @author WebSoft + * @since 2022-11-16 11:21:43 + */ +public interface TaskService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TaskParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TaskParam param); + + /** + * 根据id查询 + * + * @param taskId 任务ID + * @return Task + */ + Task getByIdRel(Integer taskId); + + ArrayList getCountNum(User loginUser); + + ArrayList getCountNum(User loginUser, TaskParam param); +} diff --git a/src/main/java/com/gxwebsoft/oa/service/TaskUserService.java b/src/main/java/com/gxwebsoft/oa/service/TaskUserService.java new file mode 100644 index 0000000..15b9927 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/TaskUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.oa.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.TaskUser; +import com.gxwebsoft.oa.param.TaskUserParam; + +import java.util.List; + +/** + * 工单成员Service + * + * @author 科技小王子 + * @since 2023-03-06 12:00:41 + */ +public interface TaskUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TaskUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TaskUserParam param); + + /** + * 根据id查询 + * + * @param taskUserId 自增ID + * @return TaskUser + */ + TaskUser getByIdRel(Integer taskUserId); + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/AppServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/AppServiceImpl.java new file mode 100644 index 0000000..b2bbf2f --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/AppServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.oa.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.oa.entity.App; +import com.gxwebsoft.oa.mapper.AppMapper; +import com.gxwebsoft.oa.param.AppParam; +import com.gxwebsoft.oa.service.AppService; +import com.gxwebsoft.oa.service.AppUserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用管理记录表Service实现 + * + * @author 科技小王子 + * @since 2023-03-28 10:45:39 + */ +@Service +public class AppServiceImpl extends ServiceImpl implements AppService { + @Resource + private AppUserService appUserService; + + @Override + public PageResult pageRel(AppParam 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(AppParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public App getByIdRel(Integer appId) { + AppParam param = new AppParam(); + param.setAppId(appId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/AppUserServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/AppUserServiceImpl.java new file mode 100644 index 0000000..b31f04d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/AppUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.AppUserMapper; +import com.gxwebsoft.oa.service.AppUserService; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.param.AppUserParam; +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-05-31 13:18:55 + */ +@Service +public class AppUserServiceImpl extends ServiceImpl implements AppUserService { + + @Override + public PageResult pageRel(AppUserParam 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(AppUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public AppUser getByIdRel(Integer appUserId) { + AppUserParam param = new AppUserParam(); + param.setAppUserId(appUserId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/AssetsServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/AssetsServiceImpl.java new file mode 100644 index 0000000..3cba77d --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/AssetsServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.AssetsMapper; +import com.gxwebsoft.oa.service.AssetsService; +import com.gxwebsoft.oa.entity.Assets; +import com.gxwebsoft.oa.param.AssetsParam; +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 WebSoft + * @since 2022-11-16 11:13:16 + */ +@Service +public class AssetsServiceImpl extends ServiceImpl implements AssetsService { + + @Override + public PageResult pageRel(AssetsParam 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(AssetsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Assets getByIdRel(Integer assetsId) { + AssetsParam param = new AssetsParam(); + param.setAssetsId(assetsId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/AssetsUserServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/AssetsUserServiceImpl.java new file mode 100644 index 0000000..917c503 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/AssetsUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.AssetsUserMapper; +import com.gxwebsoft.oa.service.AssetsUserService; +import com.gxwebsoft.oa.entity.AssetsUser; +import com.gxwebsoft.oa.param.AssetsUserParam; +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-07-18 14:35:51 + */ +@Service +public class AssetsUserServiceImpl extends ServiceImpl implements AssetsUserService { + + @Override + public PageResult pageRel(AssetsUserParam 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(AssetsUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public AssetsUser getByIdRel(Integer id) { + AssetsUserParam param = new AssetsUserParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/CustomerServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/CustomerServiceImpl.java new file mode 100644 index 0000000..cea7a3c --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/CustomerServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.CustomerMapper; +import com.gxwebsoft.oa.service.CustomerService; +import com.gxwebsoft.oa.entity.Customer; +import com.gxwebsoft.oa.param.CustomerParam; +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 WebSoft + * @since 2022-11-16 11:16:14 + */ +@Service +public class CustomerServiceImpl extends ServiceImpl implements CustomerService { + + @Override + public PageResult pageRel(CustomerParam 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(CustomerParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Customer getByIdRel(Integer customerId) { + CustomerParam param = new CustomerParam(); + param.setCustomerId(customerId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public Customer getByCustomerName(String customerName) { + return query().eq("customer_name", customerName).one(); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/NoticeServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/NoticeServiceImpl.java new file mode 100644 index 0000000..6f97606 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/NoticeServiceImpl.java @@ -0,0 +1,109 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.mapper.NoticeMapper; +import com.gxwebsoft.oa.service.NoticeService; +import com.gxwebsoft.oa.entity.Notice; +import com.gxwebsoft.oa.param.NoticeParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.service.TaskService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +import static com.gxwebsoft.oa.constants.NoticeConstants.*; + +/** + * 消息记录表Service实现 + * + * @author 科技小王子 + * @since 2023-03-22 14:07:26 + */ +@Service +public class NoticeServiceImpl extends ServiceImpl implements NoticeService { + @Resource + private UserService userService; + @Resource + private TaskService taskService; + + @Override + public PageResult pageRel(NoticeParam 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(NoticeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Notice getByIdRel(Integer noticeId) { + NoticeParam param = new NoticeParam(); + param.setNoticeId(noticeId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public void add() { + } + + @Override + public void addNotice(Task task) { + Notice notice = new Notice(); + notice.setType(NOTICE); + notice.setIcon("NotificationFilled"); + notice.setSourceId(task.getTaskId()); + notice.setUserId(task.getPromoter()); + notice.setTitle(task.getName()); + notice.setContent("您有一个新指派的工单(" + task.getTaskId() + ")需要处理!"); + save(notice); + } + + @Override + public void addLetter(TaskRecord taskRecord) { + // 通知发起人 + User user = userService.getById(taskRecord.getUserId()); + Task task = taskService.getById(taskRecord.getTaskId()); + Notice notice = new Notice(); + notice.setType(LETTER); + notice.setIcon(user.getAvatar()); + notice.setSourceId(task.getTaskId()); + notice.setUserId(task.getPromoter()); + notice.setTitle(user.getNickname() + " 回复了你的工单(" + taskRecord.getTaskId() + ")"); + notice.setContent(taskRecord.getContent()); + save(notice); + // 通知代发人 + notice.setUserId(task.getUserId()); + save(notice); + } + + @Override + public void addTodo(Task task) { + Task record = taskService.getById(task.getTaskId()); + if (task.getCommander() != null) { + Notice notice = new Notice(); + notice.setType(TODO); + notice.setIcon("HistoryOutlined"); + notice.setSourceId(task.getTaskId()); + notice.setUserId(task.getCommander()); + notice.setTitle("您有一个新的工单需要处理!"); + notice.setContent(record.getName().concat("("+ task.getTaskId() +")")); + notice.setProgress(record.getProgress()); + save(notice); + } + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/ProjectServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/ProjectServiceImpl.java new file mode 100644 index 0000000..f456fce --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/ProjectServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.ProjectMapper; +import com.gxwebsoft.oa.service.ProjectService; +import com.gxwebsoft.oa.entity.Project; +import com.gxwebsoft.oa.param.ProjectParam; +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 WebSoft + * @since 2022-11-16 11:00:43 + */ +@Service +public class ProjectServiceImpl extends ServiceImpl implements ProjectService { + + @Override + public PageResult pageRel(ProjectParam 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(ProjectParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Project getByIdRel(Integer projectId) { + ProjectParam param = new ProjectParam(); + param.setProjectId(projectId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/TaskRecordServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/TaskRecordServiceImpl.java new file mode 100644 index 0000000..da1f170 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/TaskRecordServiceImpl.java @@ -0,0 +1,49 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.TaskRecordMapper; +import com.gxwebsoft.oa.service.TaskRecordService; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.param.TaskRecordParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.service.TaskService; +import org.springframework.security.core.parameters.P; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 工单回复记录表Service实现 + * + * @author 科技小王子 + * @since 2023-03-05 00:52:21 + */ +@Service +public class TaskRecordServiceImpl extends ServiceImpl implements TaskRecordService { + @Override + public PageResult pageRel(TaskRecordParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time asc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(TaskRecordParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time asc"); + return page.sortRecords(list); + } + + @Override + public TaskRecord getByIdRel(Integer taskRecordId) { + TaskRecordParam param = new TaskRecordParam(); + param.setTaskRecordId(taskRecordId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/TaskServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/TaskServiceImpl.java new file mode 100644 index 0000000..32675e6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/TaskServiceImpl.java @@ -0,0 +1,141 @@ +package com.gxwebsoft.oa.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.mapper.TaskMapper; +import com.gxwebsoft.oa.param.TaskParam; +import com.gxwebsoft.oa.service.TaskService; +import com.gxwebsoft.oa.service.TaskUserService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +/** + * 文章记录表Service实现 + * + * @author WebSoft + * @since 2022-11-16 11:21:43 + */ +@Service +public class TaskServiceImpl extends ServiceImpl implements TaskService { + private Integer userId; + @Resource + private UserService userService; + @Resource + private TaskUserService taskUserService; + + @Override + public PageResult pageRel(TaskParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); +// list.forEach(d -> { +// int count = taskUserService.count(new LambdaQueryWrapper().eq(TaskUser::getTaskId, d.getTaskId())); +// if(count>0){ +// TaskUserParam taskUserParam = new TaskUserParam(); +// taskUserParam.setTaskId(d.getTaskId()); +// List users = taskUserService.listRel(taskUserParam); +// d.setUsers(users); +// } +// }); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(TaskParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Task getByIdRel(Integer taskId) { + TaskParam param = new TaskParam(); + param.setTaskId(taskId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public ArrayList getCountNum(User loginUser) { + Integer type = loginUser.getType(); + Integer userId = loginUser.getUserId(); + AtomicInteger count1 = new AtomicInteger(count(new LambdaQueryWrapper().eq(Task::getStatus, 0))); + AtomicInteger count2 = new AtomicInteger(count(new LambdaQueryWrapper().eq(Task::getStatus, 1))); + // 非管理员仅可浏览和自己相关的工单 + loginUser.getRoles().forEach(d -> { + if(!StrUtil.equals(d.getRoleCode(),"superAdmin") && !StrUtil.equals(d.getRoleCode(),"admin")){ + if(type.equals(6)){ + count1.set(count(new LambdaQueryWrapper().eq(Task::getStatus, 0).eq(Task::getCommander, userId))); + count2.set(count(new LambdaQueryWrapper().eq(Task::getStatus, 1).eq(Task::getCommander, userId))); + } + if(type.equals(10)){ + count1.set(count(new LambdaQueryWrapper().eq(Task::getStatus, 0).eq(Task::getPromoter, userId))); + count2.set(count(new LambdaQueryWrapper().eq(Task::getStatus, 1).eq(Task::getPromoter, userId))); + } + } + }); + JSONObject json1 = new JSONObject(); + json1.put("tab","待处理"); + json1.put("key","0"); + json1.put("count",count1); + JSONObject json2 = new JSONObject(); + json2.put("tab","已完成"); + json2.put("key","1"); + json2.put("count",count2); + ArrayList objects = new ArrayList<>(); + objects.add(json1); + objects.add(json2); + return objects; + } + + @Override + public ArrayList getCountNum(User loginUser, TaskParam param) { + Integer type = loginUser.getType(); + final Integer userId = param.getUserId(); +// if (param.getUserId() != null) { +// this.userId = param.getUserId(); +// }else { +// this.userId = loginUser.getUserId(); +// } + + AtomicInteger count1 = new AtomicInteger(count(new LambdaQueryWrapper().eq(Task::getStatus, 0))); + AtomicInteger count2 = new AtomicInteger(count(new LambdaQueryWrapper().eq(Task::getStatus, 1))); + // 非管理员仅可浏览和自己相关的工单 + loginUser.getRoles().forEach(d -> { + + if(type.equals(6)){ + count1.set(count(new LambdaQueryWrapper().eq(Task::getStatus, 0).eq(Task::getCommander, userId))); + count2.set(count(new LambdaQueryWrapper().eq(Task::getStatus, 1).eq(Task::getCommander, userId))); + } + if(type.equals(10)){ + count1.set(count(new LambdaQueryWrapper().eq(Task::getStatus, 0).eq(Task::getPromoter, userId))); + count2.set(count(new LambdaQueryWrapper().eq(Task::getStatus, 1).eq(Task::getPromoter, userId))); + } + }); + JSONObject json1 = new JSONObject(); + json1.put("tab","待处理"); + json1.put("key","0"); + json1.put("count",count1); + JSONObject json2 = new JSONObject(); + json2.put("tab","已完成"); + json2.put("key","1"); + json2.put("count",count2); + ArrayList objects = new ArrayList<>(); + objects.add(json1); + objects.add(json2); + return objects; + } + +} diff --git a/src/main/java/com/gxwebsoft/oa/service/impl/TaskUserServiceImpl.java b/src/main/java/com/gxwebsoft/oa/service/impl/TaskUserServiceImpl.java new file mode 100644 index 0000000..d3ee7b5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/oa/service/impl/TaskUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.oa.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.oa.mapper.TaskUserMapper; +import com.gxwebsoft.oa.service.TaskUserService; +import com.gxwebsoft.oa.entity.TaskUser; +import com.gxwebsoft.oa.param.TaskUserParam; +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-03-06 12:00:41 + */ +@Service +public class TaskUserServiceImpl extends ServiceImpl implements TaskUserService { + + @Override + public PageResult pageRel(TaskUserParam 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(TaskUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TaskUser getByIdRel(Integer taskUserId) { + TaskUserParam param = new TaskUserParam(); + param.setTaskUserId(taskUserId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenAlipayController.java b/src/main/java/com/gxwebsoft/open/controller/OpenAlipayController.java new file mode 100644 index 0000000..5399dd1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenAlipayController.java @@ -0,0 +1,182 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.request.AlipaySystemOauthTokenRequest; +import com.alipay.api.request.AlipayUserInfoShareRequest; +import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.alipay.api.response.AlipayUserInfoShareResponse; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.AlipayConfigUtil; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.result.LoginResult; +import com.gxwebsoft.common.system.service.LoginRecordService; +import com.gxwebsoft.common.system.service.UserRoleService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.mapper.UserOauthMapper; +import com.gxwebsoft.shop.param.UserOauthParam; +import com.gxwebsoft.shop.service.UserOauthService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; + +import static com.gxwebsoft.common.core.utils.CommonUtil.randomUsername; + +/** + * 登录认证控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:11 + */ +@Api(tags = "登录认证") +@RestController +@RequestMapping("/api/open/login-alipay") +public class OpenAlipayController extends BaseController { + @Resource + private ConfigProperties configProperties; + @Resource + private UserService userService; + @Resource + private LoginRecordService loginRecordService; + @Resource + private UserRoleService userRoleService; + @Resource + private UserOauthService userOauthService; + @Resource + private AlipayConfigUtil alipayConfig; + @Resource + private UserOauthMapper userOauthMapper; + @Resource + private StringRedisTemplate stringRedisTemplate; + + @ApiOperation("支付宝授权码") + @PostMapping("/getAuthCode") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult getAuthCode(@RequestBody UserParam param, HttpServletRequest req) throws AlipayApiException { + // 验证签名 + isCheckSign(); + // 读取缓存信息 + String setting = stringRedisTemplate.opsForValue().get("cache"+param.getTenantId()+":setting:register"); + if(setting == null){ + throw new BusinessException("请先配置注册设置"); + } + JSONObject jsonObject = JSONObject.parseObject(setting); + String roleId = jsonObject.getString("roleId"); + // 实例化客户端 + DefaultAlipayClient alipayClient = alipayConfig.alipayClient(param.getTenantId()); + try { + AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); + request.setGrantType("authorization_code"); + request.setCode(param.getAuthCode()); + AlipaySystemOauthTokenResponse response = alipayClient.certificateExecute(request); + if (response.isSuccess()) { + final String accessToken = response.getAccessToken(); + AlipayUserInfoShareRequest request2 = new AlipayUserInfoShareRequest(); + AlipayUserInfoShareResponse userInfo = alipayClient.certificateExecute(request2, accessToken); + String nickName = "支付宝用户"; + String avatar = ""; + if(StrUtil.isNotBlank(userInfo.getAvatar())){ + avatar = userInfo.getAvatar(); + } + if (StrUtil.isNotBlank(userInfo.getNickName())) { + nickName = userInfo.getNickName(); + } + if(userInfo.isSuccess()){ + // 查询是否已注册 + UserOauthParam userOauthParam = new UserOauthParam(); + userOauthParam.setOauthId(userInfo.getUserId()); + userOauthParam.setTenantId(param.getTenantId()); + UserOauth userOauth = userOauthParam.getOne(userOauthMapper.getByOauthId(userOauthParam)); + if(userOauth != null){ + UserParam userParam = new UserParam(); + userParam.setUserId(userOauth.getUserId()); + userParam.setTenantId(userOauth.getTenantId()); + User user = userService.getByOauthId(userParam); + if(user != null){ + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), user.getTenantId()), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } + userOauthService.removeById(userOauth.getId()); + } + // 新注册用户 + User user = new User(); + user.setStatus(0); + user.setUsername(randomUsername("Ali_")); + user.setNickname(nickName); + user.setAvatar(avatar); + user.setCity(userInfo.getCity()); + user.setProvince(userInfo.getProvince()); + user.setPassword(userService.encodePassword(CommonUtil.randomUUID16())); + user.setTenantId(param.getTenantId()); + boolean isSuccess = userService.saveUser(user); + if(isSuccess){ + // 添加用户角色 + UserRole userRole = new UserRole(); + userRole.setUserId(user.getUserId()); + userRole.setTenantId(param.getTenantId()); + userRole.setRoleId(Integer.valueOf(roleId)); + userRoleService.save(userRole); + // 添加第三方用户信息 + UserOauth userOauth2 = new UserOauth(); + userOauth2.setUserId(user.getUserId()); + userOauth2.setTenantId(param.getTenantId()); + userOauth2.setOauthType("MP-ALIPAY"); + userOauth2.setOauthId(userInfo.getUserId()); + userOauthService.save(userOauth2); + + UserParam userParam = new UserParam(); + userParam.setUserId(user.getUserId()); + userParam.setTenantId(user.getTenantId()); + User result = userService.getByOauthId(userParam); + loginRecordService.saveAsync(result.getUsername(), LoginRecord.TYPE_REGISTER, null, result.getTenantId(), req); + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(result.getUsername(), result.getTenantId()), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, result)); + } + } + } + } catch (AlipayApiException e) { + e.printStackTrace(); + } + return fail("支付宝授权失败"); + } + + @ApiOperation("授权手机号码") + @PostMapping("/update") + public ApiResult updateInfo(@RequestBody User user) { + user.setUserId(getLoginUserId()); + // 不能修改的字段 + user.setUsername(null); + user.setPassword(null); + user.setEmailVerified(null); + user.setOrganizationId(null); + user.setStatus(null); + if (userService.updateById(user)) { + return success(userService.getByIdRel(user.getUserId())); + } + return fail("保存失败", null); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenAppController.java b/src/main/java/com/gxwebsoft/open/controller/OpenAppController.java new file mode 100644 index 0000000..59fdb87 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenAppController.java @@ -0,0 +1,169 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.App; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.param.AppParam; +import com.gxwebsoft.oa.param.AppUserParam; +import com.gxwebsoft.oa.service.AppService; +import com.gxwebsoft.oa.service.AppUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +import static com.gxwebsoft.common.core.constants.RedisConstants.USER_RANKING_BY_APPS; + +/** + * 应用控制器 + * + * @author WebSoft + * @since 2022-11-18 13:55:29 + */ +@Api(tags = "应用管理") +@RestController +@RequestMapping("/api/open/app") +public class OpenAppController extends BaseController { + @Resource + private AppService appService; + @Resource + private AppUserService appUserService; + @Resource + private CacheClient cacheClient; + + @ApiOperation("分页查询应用") + @GetMapping("/page") + public ApiResult> page(AppParam param) { + // 验证签名 + isCheckSign(); + // 非管理员仅显示已加入成员管理的应用列表 + User loginUser = getLoginUser(); + if(!loginUser.getUsername().equals("admin")){ + param.setUserId(getLoginUserId()); + } + param.setTenantId(getTenantId()); + // 使用关联查询 + return success(appService.pageRel(param)); + } + + @ApiOperation("查询全部应用") + @GetMapping() + public ApiResult> list(AppParam param) { + // 验证签名 + isCheckSign(); + param.setUserId(getLoginUserId()); + param.setTenantId(getTenantId()); + // 使用关联查询 + return success(appService.listRel(param)); + } + + @ApiOperation("根据id查询应用") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(appService.getById(id)); + // 验证签名 + isCheckSign(); + App app = appService.getByIdRel(id); + // 查询开发成员列表 + AppUserParam appUserParam = new AppUserParam(); + appUserParam.setAppId(app.getAppId()); + List appUsers = appUserService.listRel(appUserParam); +// List list = userService.list(new LambdaQueryWrapper().in(User::getUserId, appUsers.stream().map(AppUser::getUserId).collect(Collectors.toList()))); + app.setUsers(appUsers); + return success(app); + } + + @ApiOperation("创建应用") + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + @PostMapping() + public ApiResult save(@RequestBody App app) { + // 验证签名 + isCheckSign(); + if (app.getAppType() == null) { + return fail("应用类型不能为空"); + } + // 创建应用 + final Integer loginUserId = getLoginUserId(); + final User loginUser = getLoginUser(); + app.setUserId(loginUserId); + app.setStatus(0); // 需要审核1 不需要审核0 + app.setAppSecret(IdUtil.fastSimpleUUID()); + app.setTenantId(loginUser.getTenantId()); + System.out.println("app = " + app); + if (appService.save(app)) { + // 添加应用成员 + AppUser appUser = new AppUser(); + appUser.setAppId(app.getAppId()); + appUser.setRole(30); + appUser.setUserId(loginUserId); + appUser.setStatus(0); + appUserService.save(appUser); + // 更新缓存 + String key = "AppSecret:".concat(app.getAppId().toString()); + cacheClient.set(key,app.getAppSecret()); + // 更新用户的插件数量到排行榜 + int count = appService.count(new LambdaQueryWrapper() + .eq(App::getUserId, loginUserId)); + cacheClient.zAdd(USER_RANKING_BY_APPS, loginUserId,(double) count); + return success("创建成功"); + } + return fail("创建失败"); + } + + @ApiOperation("修改应用") + @PutMapping() + public ApiResult update(@RequestBody App app) { + // 验证签名 + isCheckSign(); + if (appService.updateById(app)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除应用") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + if (appService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("查看秘钥") + @PostMapping("/getAppSecret") + public ApiResult getAppSecret(@RequestBody App app) { + App result = appService.getByIdRel(app.getAppId()); + String key = "AppSecret:".concat(app.getAppId().toString()); + result.setAppSecret(cacheClient.get(key)); + return success("操作成功",result); + } + + @ApiOperation("重置秘钥") + @PostMapping("/updateAppSecret") + public ApiResult updateAppSecret(@RequestBody App app) { + // 验证签名 + isCheckSign(); + if (app.getAppId() == null) { + return fail("请勿重复操作"); + } + App result = appService.getByIdRel(app.getAppId()); + String key = cacheClient.key("AppSecret", app.getAppId()); + String appSecret = IdUtil.fastSimpleUUID(); + cacheClient.set(key,appSecret); + result.setAppSecret(appSecret); + return success("重置成功",result); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenAppUserController.java b/src/main/java/com/gxwebsoft/open/controller/OpenAppUserController.java new file mode 100644 index 0000000..8c3b132 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenAppUserController.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.oa.entity.AppUser; +import com.gxwebsoft.oa.param.AppUserParam; +import com.gxwebsoft.oa.service.AppUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用成员控制器 + * + * @author 科技小王子 + * @since 2023-02-17 13:22:20 + */ +@Api(tags = "应用成员管理") +@RestController +@RequestMapping("/api/open/app-user") +public class OpenAppUserController extends BaseController { + @Resource + private AppUserService appUserService; + + @OperationLog + @ApiOperation("分页查询应用成员") + @GetMapping("/page") + public ApiResult> page(AppUserParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(appUserService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(appUserService.pageRel(param)); + } + + @OperationLog + @ApiOperation("查询全部应用成员") + @GetMapping() + public ApiResult> list(AppUserParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(appUserService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(appUserService.listRel(param)); + } + + @ApiOperation("根据id查询应用成员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + return success(appUserService.getById(id)); + // 使用关联查询 + //return success(appUserService.getByIdRel(id)); + } + + @OperationLog + @ApiOperation("添加应用成员") + @PostMapping() + public ApiResult save(@RequestBody AppUser appUser) { + // 验证签名 + isCheckSign(); + String username = appUser.getUsername(); + Integer appId = appUser.getAppId(); + Integer userIdByUsername = getUserIdByUsername(username,getTenantId()); + // 判断重复 + if(appUserService.count(new LambdaQueryWrapper().eq(AppUser::getUserId,userIdByUsername).eq(AppUser::getAppId,appId)) > 0){ + throw new BusinessException("请勿重复添加"); + } + // 是否超出限制 + if(appUserService.count(new LambdaQueryWrapper().eq(AppUser::getAppId,appUser.getAppId())) > 50){ + throw new BusinessException("最多只能添加50个"); + } + appUser.setUserId(userIdByUsername); + appUser.setStatus(0); + if (appUserService.save(appUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @OperationLog + @ApiOperation("修改应用成员") + @PutMapping() + public ApiResult update(@RequestBody AppUser appUser) { + // 验证签名 + isCheckSign(); + if (appUserService.updateById(appUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @OperationLog + @ApiOperation("删除应用成员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + AppUser appUser = appUserService.getById(id); + if(appUser.getRole().equals(30)){ + return fail("管理员不能删除"); + } + if (appUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @OperationLog + @ApiOperation("批量添加应用成员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + // 验证签名 + isCheckSign(); + if (appUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @OperationLog + @ApiOperation("批量修改应用成员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + // 验证签名 + isCheckSign(); + if (batchParam.update(appUserService, "app_user_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @OperationLog + @ApiOperation("批量删除应用成员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + // 验证签名 + isCheckSign(); + if (appUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenAppstoreController.java b/src/main/java/com/gxwebsoft/open/controller/OpenAppstoreController.java new file mode 100644 index 0000000..6c5f33f --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenAppstoreController.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.open.controller; + +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.TenantParam; +import com.gxwebsoft.common.system.service.TenantService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 应用管理 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Api(tags = "应用管理(已废弃)") +@RestController +@RequestMapping("/api/open/appstore") +public class OpenAppstoreController extends BaseController { + @Resource + private TenantService tenantService; + + @ApiOperation("分页查询应用") + @GetMapping("/page") + public ApiResult> page(TenantParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + // 记录当前登录用户id、应用id + User user = getLoginUser(); + if (user != null) { + param.setUserId(user.getUserId()); + } + // 使用关联查询 + return success(tenantService.pageRel(param)); + } + + @ApiOperation("查询全部应用") + @GetMapping() + public ApiResult> list(TenantParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + // 记录当前登录用户id、应用id + User user = getLoginUser(); + if (user != null) { + param.setUserId(user.getUserId()); + } + // 使用关联查询 + return success(tenantService.listRel(param)); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenBcAgentController.java b/src/main/java/com/gxwebsoft/open/controller/OpenBcAgentController.java new file mode 100644 index 0000000..ff4922a --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenBcAgentController.java @@ -0,0 +1,123 @@ +package com.gxwebsoft.open.controller; + +import com.gxwebsoft.apps.entity.BcAgent; +import com.gxwebsoft.apps.param.BcAgentParam; +import com.gxwebsoft.apps.service.BcAgentService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +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-04-24 19:25:59 + */ +@Api(tags = "代报餐管理管理") +@RestController +@RequestMapping("/api/open/bc-agent") +public class OpenBcAgentController extends BaseController { + @Resource + private BcAgentService bcAgentService; + + @ApiOperation("分页查询代报餐管理") + @GetMapping("/page") + public ApiResult> page(BcAgentParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + param.setParentId(getLoginUserId()); + return success(bcAgentService.pageRel(param)); + } + + @ApiOperation("查询全部代报餐管理") + @GetMapping() + public ApiResult> list(BcAgentParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + param.setParentId(getLoginUserId()); + return success(bcAgentService.listRel(param)); + } + + @ApiOperation("根据id查询代报餐管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(bcAgentService.getByIdRel(id)); + } + + @ApiOperation("添加代报餐管理") + @PostMapping() + public ApiResult save(@RequestBody BcAgent bcAgent) { + if (bcAgentService.save(bcAgent)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:update')") + @OperationLog + @ApiOperation("修改代报餐管理") + @PutMapping() + public ApiResult update(@RequestBody BcAgent bcAgent) { + if (bcAgentService.updateById(bcAgent)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:remove')") + @OperationLog + @ApiOperation("删除代报餐管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcAgentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:save')") + @OperationLog + @ApiOperation("批量添加代报餐管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcAgentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:update')") + @OperationLog + @ApiOperation("批量修改代报餐管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcAgentService, "agent_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcAgent:remove')") + @OperationLog + @ApiOperation("批量删除代报餐管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcAgentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenBcController.java b/src/main/java/com/gxwebsoft/open/controller/OpenBcController.java new file mode 100644 index 0000000..07c9093 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenBcController.java @@ -0,0 +1,481 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.BcEquipment; +import com.gxwebsoft.apps.param.BcEquipmentParam; +import com.gxwebsoft.apps.service.BcEquipmentService; +import com.gxwebsoft.apps.utils.BcUtil; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.entity.UserReferee; +import com.gxwebsoft.shop.param.OrderGoodsParam; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.param.UserRefereeParam; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import com.gxwebsoft.shop.service.UserRefereeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.OrderConstants.*; +import static com.gxwebsoft.shop.constants.OrderConstants.ORDER_GOODS_DELIVERY_STATUS20; + +/** + * 云报餐机器接口 + * + * @author 科技小王子 + * @since 2023-04-24 19:25:59 + */ +@Api(tags = "云报餐机器接口") +@RestController +@RequestMapping("/hxz/v1") +public class OpenBcController extends BaseController { + @Resource + private BcUtil bcUtil; + @Resource + private OrderService orderService; + @Resource + private UserService userService; + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private UserRefereeService userRefereeService; + @Resource + private BcEquipmentService bcEquipmentService; + + @ApiOperation("获取服务器时间接口") + @PostMapping("/ServerTime") + public HashMap ServerTime(HttpServletRequest request) { + final String deviceId = request.getHeader("Device-ID"); // 设备ID + final String now = DateUtil.format(DateUtil.date(), "yyyyMMddHHmmss") + (DateUtil.thisDayOfWeek() - 1); // 服务器时间 + System.out.println(deviceId + "获取服务器时间接口 = " + now); + HashMap map = new HashMap<>(); + map.put("Status",1); + map.put("Msg","服务器时间"); + map.put("Time", now); + return map; + } + + @ApiOperation("付款码(二维码)支付接口") + @PostMapping("/QRCodeTransaction") + public HashMap QRCodeTransaction(@RequestBody String QR, HttpServletRequest request) { + // 1.提取订单号ID + final String deviceId = request.getHeader("Device-ID"); // 设备ID + final JSONObject jsonObject = JSONObject.parseObject(QR); + final String orderNo = jsonObject.getString("QR"); + + System.out.println("deviceId = " + deviceId); + System.out.println("QR = " + QR); + + // 2.查询订单数据 + + // 3.查询该餐段的菜品 + + // 4.核销菜品 + + // 5.通知设备 + HashMap map = new HashMap<>(); + map.put("Status",1); + map.put("Msg","支付成功"); + map.put("Qrorder", orderNo); + + return map; + } + + @ApiOperation("二维码支付结果查询接口") + @PostMapping("/TransactionInquiry") + @Transactional(rollbackFor = {Exception.class}) + public HashMap TransactionInquiry(@RequestBody String QROrder, HttpServletRequest request) { + // 1. 提取订单号 + final JSONObject jsonObject = JSONObject.parseObject(QROrder); + final String orderNo = jsonObject.getString("QROrder"); + StringBuilder foods = new StringBuilder(); // 消费机回显信息 + String DeviceID = request.getHeader("Device-ID"); // 设备ID + + final BcEquipmentParam bcEquipmentParam = new BcEquipmentParam(); + bcEquipmentParam.setEquipmentCode(DeviceID); + final List bcEquipments = bcEquipmentService.listRel(bcEquipmentParam); + final BcEquipment bcEquipment = bcEquipments.get(0); + final Integer gear = bcEquipment.getGear(); // 设备所属档口 + final Integer categoryId = bcUtil.getCurrentPeriod(bcEquipment.getTenantId()); // 餐段 +// int categoryId = 26; + // 是否有取餐数据 + boolean isSuccess = true; + + // 打印测试 + System.out.println("查询支付结果(订单号:)******** = " + orderNo); + System.out.println("bcEquipment = " + bcEquipment); + System.out.println("gear = " + gear); + System.out.println("StrUtil.isNumeric(orderNo) = " + StrUtil.isNumeric(orderNo)); + + // 2.非代取餐模式 + if (!orderNo.startsWith("dqc:")) { + System.out.println("非代取餐模式 = "); + // 4.排除其他情况 + if(!StrUtil.isNumeric(orderNo)){ + foods.append("非取餐码"); + isSuccess = false; + }else{ + OrderParam orderParam = new OrderParam(); + orderParam.setOrderNo(orderNo); + List list = orderService.listRel(orderParam); + Order order = list.get(0); +// System.out.println("order-one = " + order); + OrderGoodsParam orderGoodsParam = new OrderGoodsParam(); + // 2.1查询订单商品 + List orderGoods = orderGoodsService.list(new LambdaQueryWrapper() + .eq(OrderGoods::getOrderId, order.getOrderId()) + .eq(OrderGoods::getDeliveryStatus,RECEIPT_STATUS_NO) + .eq(OrderGoods::getCategoryId,categoryId) + .eq(OrderGoods::getGear,gear) + ); +// System.out.println("2.1查询订单商品 = " + orderGoods); + // 2.2查询用户信息 + User user = userService.getById(order.getUserId()); + // 2.收集菜品信息 + foods.append("姓名:").append(order.getNickname()).append("\r\n"); +// foods.append("签到:").append(DateUtil.format(DateUtil.date(),"MM-dd HH:mm")).append("\r\n"); + for (OrderGoods item : orderGoods) { + // 过滤份数totalNum=0的菜品 + if (!item.getTotalNum().equals(0)) { + foods.append(item.getGoodsName()).append(" ").append(item.getTotalNum()).append("份").append(" ¥").append(item.getTotalPrice()).append("\r\n"); + OrderGoods food = new OrderGoods(); + food.setOrderGoodsId(item.getOrderGoodsId()); + food.setDeliveryStatus(ORDER_GOODS_DELIVERY_STATUS20); + orderGoodsService.updateById(food); + // 更新订单部分发布状态 + final Order order1 = new Order(); + order1.setOrderId(item.getOrderId()); + if(categoryId == 27){ + order1.setDeliveryStatus(DELIVERY_STATUS_YES); + }else{ + order1.setDeliveryStatus(DELIVERY_STATUS_30); + } + orderService.updateById(order1); + } + } + if(orderGoods.size() == 0){ + foods.append("没有取餐数据"); + isSuccess = false; + } + } + } + + // 3.代取餐模式 + ArrayList saveOrderGoods = new ArrayList<>(); + ArrayList saveOrder = new ArrayList<>(); + if(orderNo.startsWith("dqc:")){ + System.out.println("代取餐模式 = "); + final String dealerId = StrUtil.removePrefix(orderNo, "dqc:"); + System.out.println("dealerId = " + dealerId); + UserRefereeParam userRefereeParam = new UserRefereeParam(); + userRefereeParam.setDealerId(Integer.valueOf(dealerId)); + userRefereeParam.setDeleted(0); + List userRefereeList = userRefereeService.listRel(userRefereeParam); + // 查询帮代餐的成员ID集 + List userIds = userRefereeList.stream().map(UserReferee::getUserId).collect(Collectors.toList()); + userIds.add(Integer.valueOf(dealerId)); + System.out.println("userIds = " + userIds); + // 查询成员的订单 + List list = orderService.list(new LambdaQueryWrapper() + .in(Order::getUserId, userIds) + .eq(Order::getDeliveryTime, DateUtil.parse(DateUtil.today())) + .eq(Order::getPayStatus, PAY_STATUS_SUCCESS) + .ne(Order::getDeliveryStatus, RECEIPT_STATUS_YES) + .eq(Order::getDeleted, 0) + ); + + if(list.size() > 0){ + // 收集订单ID集 + List orderIds = list.stream().map(Order::getOrderId).collect(Collectors.toList()); + System.out.println("orderIds = " + orderIds); + // 查询商品 + if(orderIds.size() > 0){ + List orderGoodsList = orderGoodsService.list(new LambdaQueryWrapper() + .in(OrderGoods::getOrderId, orderIds) + .ne(OrderGoods::getDeliveryStatus,RECEIPT_STATUS_YES) + .gt(OrderGoods::getTotalNum,0) + .eq(OrderGoods::getCategoryId,categoryId) + .eq(OrderGoods::getGear,gear) + ); + if (orderGoodsList.size() == 0) { + foods.append("没有取餐数据"); + isSuccess = false; + } + System.out.println("orderGoodsList = " + orderGoodsList.size()); + // 查询用户信息 + User dealer = userService.getById(dealerId); + foods.append("代取:").append(dealer.getNickname()).append("\r\n"); + foods.append("共" + orderGoodsList.size() + "份").append("\r\n"); +// foods.append("签到:").append(DateUtil.format(DateUtil.date(),"MM-dd HH:mm")).append("\r\n"); + // 批量核销操作 + for (OrderGoods og : orderGoodsList) { + System.out.println("og = " + og); + foods.append(og.getGoodsName()).append("\r\n"); + final OrderGoods orderGoods = new OrderGoods(); + orderGoods.setOrderGoodsId(og.getOrderGoodsId()); + orderGoods.setDeliveryStatus(ORDER_GOODS_DELIVERY_STATUS20); + saveOrderGoods.add(orderGoods); + // 更新订单部分发货状态 + Order order2 = new Order(); + order2.setOrderId(og.getOrderId()); + if(categoryId == 27){ + order2.setDeliveryStatus(DELIVERY_STATUS_YES); + }else{ + order2.setDeliveryStatus(DELIVERY_STATUS_30); + } + saveOrder.add(order2); + } + }else{ + foods.append("没有取餐数据"); + isSuccess = false; + } + }else{ + foods.append("没有取餐数据"); + isSuccess = false; + } + } + // 4.更新状态 + orderGoodsService.updateBatchById(saveOrderGoods); + orderService.updateBatchById(saveOrder); + + // 5.通知设备 + HashMap map = new HashMap<>(); + map.put("Status", 1); + map.put("Msg",""); + map.put("Name", ""); + map.put("CardNo", ""); + map.put("Money", ""); + map.put("Subsidy", ""); + map.put("Times", ""); + map.put("Integral", ""); + map.put("InTime", ""); + map.put("OutTime", ""); + map.put("CumulativeTime ", ""); + map.put("Amount","0.00"); + map.put("VoiceID",null); + map.put("Text", foods); + + // 5.1无取餐数据 + if(!isSuccess){ + map.put("Status", 0); + map.put("Msg","没有取餐数据"); + map.put("Text",null); + System.out.println("5.1无取餐数据 = " + map); + return map; + } + System.out.println("5.通知设备 = " + map); + return map; + } + + @ApiOperation("终端查询日统计接口") + @PostMapping("/Counts") + public HashMap Counts(HttpServletRequest request) { + + final String deviceId = request.getHeader("Device-ID"); + System.out.println("deviceId = " + deviceId); + final Integer categoryId = bcUtil.getCurrentPeriod(10048); + System.out.println("categoryId = " + categoryId); + + HashMap map = new HashMap<>(); + map.put("Status",1); + map.put("Msg","终端查询日统计接口"); + map.put("Text", "" + + "日统计\n" + + "日总金额:0.00\n" + + "日总次数:0\n" + + "时段统计\n" + + "一时段金额:0.00\n" + + "一时段次数:0" + + ""); + + // 发送消息测试 + bcUtil.send("您的申请已通过"); + return map; + } + + +// @ApiOperation("二维码支付结果查询接口") +// @PostMapping("/demo") +// @Transactional(rollbackFor = {Exception.class}) +// public HashMap demo(@RequestBody String QROrder, HttpServletRequest request) { +// System.out.println("二维码支付结果查询接口 = " + QROrder); +// // 1. 提取订单号 +// final JSONObject jsonObject = JSONObject.parseObject(QROrder); +// final String orderNo = jsonObject.getString("QROrder"); +// StringBuilder foods = new StringBuilder(); // 消费机回显信息 +//// String DeviceID = request.getHeader("Device-ID"); // 设备ID +//// +//// final BcEquipmentParam bcEquipmentParam = new BcEquipmentParam(); +//// bcEquipmentParam.setEquipmentCode(DeviceID); +//// final List bcEquipments = bcEquipmentService.listRel(bcEquipmentParam); +//// final BcEquipment bcEquipment = bcEquipments.get(0); +// final Integer gear = 20; // 设备所属档口 +//// final Integer categoryId = bcUtil.getCurrentPeriod(bcEquipment.getTenantId()); // 餐段 +// int categoryId = 26; +// +// // 打印测试 +// System.out.println("查询支付结果(订单号:)******** = " + orderNo); +// System.out.println("gear = " + gear); +// System.out.println("StrUtil.isNumeric(orderNo) = " + StrUtil.isNumeric(orderNo)); +// +// // 2.非代取餐模式 +// if (!orderNo.startsWith("dqc:")) { +// System.out.println("非代取餐模式 = "); +// // 4.排除其他情况 +// if(!StrUtil.isNumeric(orderNo)){ +// foods.append("非取餐码"); +// }else{ +// OrderParam orderParam = new OrderParam(); +// orderParam.setOrderNo(orderNo); +// List list = orderService.listRel(orderParam); +// Order order = list.get(0); +// System.out.println("order-one = " + order); +// OrderGoodsParam orderGoodsParam = new OrderGoodsParam(); +// // 2.1查询订单商品 +// List orderGoods = orderGoodsService.list(new LambdaQueryWrapper() +// .eq(OrderGoods::getOrderId, order.getOrderId()) +// .eq(OrderGoods::getDeliveryStatus,RECEIPT_STATUS_NO) +// .eq(OrderGoods::getCategoryId,categoryId) +// .eq(OrderGoods::getGear,gear) +// ); +// // 2.2查询用户信息 +// User user = userService.getById(order.getUserId()); +// // 2.收集菜品信息 +// foods.append("姓名:").append(order.getNickname()).append("\r\n"); +// foods.append("签到:").append(DateUtil.format(DateUtil.date(),"MM-dd HH:mm")).append("\r\n"); +// for (OrderGoods item : orderGoods) { +// // 过滤份数totalNum=0的菜品 +// if (!item.getTotalNum().equals(0)) { +// foods.append(item.getGoodsName()).append(" ").append(item.getTotalNum()).append("份").append(" ¥").append(item.getTotalPrice()).append("\r\n"); +// OrderGoods food = new OrderGoods(); +// food.setOrderGoodsId(item.getOrderGoodsId()); +// food.setDeliveryStatus(ORDER_GOODS_DELIVERY_STATUS20); +// orderGoodsService.updateById(food); +// // 更新订单部分发布状态 +// final Order order1 = new Order(); +// order1.setOrderId(item.getOrderId()); +// if(categoryId == 27){ +// order1.setDeliveryStatus(DELIVERY_STATUS_YES); +// }else{ +// order1.setDeliveryStatus(DELIVERY_STATUS_30); +// } +// orderService.updateById(order1); +// } +// } +// if(orderGoods.size() == 0){ +// foods.append("没有取餐数据"); +// } +// } +// } +// +// // 3.代取餐模式 +// ArrayList saveOrderGoods = new ArrayList<>(); +// ArrayList saveOrder = new ArrayList<>(); +// if(orderNo.startsWith("dqc:")){ +// System.out.println("代取餐模式 = "); +// final String dealerId = StrUtil.removePrefix(orderNo, "dqc:"); +// System.out.println("dealerId = " + dealerId); +// UserRefereeParam userRefereeParam = new UserRefereeParam(); +// userRefereeParam.setDealerId(Integer.valueOf(dealerId)); +// userRefereeParam.setDeleted(0); +// List userRefereeList = userRefereeService.listRel(userRefereeParam); +// // 查询帮代餐的成员ID集 +// List userIds = userRefereeList.stream().map(UserReferee::getUserId).collect(Collectors.toList()); +// userIds.add(getLoginUserId()); +// System.out.println("userIds = " + userIds); +// // 查询成员的订单 +// List list = orderService.list(new LambdaQueryWrapper() +// .in(Order::getUserId, userIds) +// .eq(Order::getDeliveryTime, DateUtil.parse(DateUtil.today())) +// .eq(Order::getPayStatus, PAY_STATUS_SUCCESS) +// .ne(Order::getDeliveryStatus, RECEIPT_STATUS_YES) +// .eq(Order::getDeleted, 0) +// ); +// if(list.size() > 0){ +// // 收集订单ID集 +// List orderIds = list.stream().map(Order::getOrderId).collect(Collectors.toList()); +// System.out.println("orderIds = " + orderIds); +// // 查询商品 +// if(orderIds.size() > 0){ +// List orderGoodsList = orderGoodsService.list(new LambdaQueryWrapper() +// .in(OrderGoods::getOrderId, orderIds) +// .ne(OrderGoods::getDeliveryStatus,RECEIPT_STATUS_YES) +// .gt(OrderGoods::getTotalNum,0) +// .eq(OrderGoods::getCategoryId,categoryId) +// .eq(OrderGoods::getGear,gear) +// ); +// // 查询用户信息 +// User dealer = userService.getById(dealerId); +// foods.append("代取:").append(dealer.getNickname()).append("\r\n"); +// foods.append("共" + orderGoodsList.size() + "份"); +//// foods.append("签到:").append(DateUtil.format(DateUtil.date(),"MM-dd HH:mm")).append("\r\n"); +// // 批量核销操作 +// for (OrderGoods og : orderGoodsList) { +// foods.append(",").append(og.getGoodsName()); +// final OrderGoods orderGoods = new OrderGoods(); +// orderGoods.setOrderGoodsId(og.getOrderGoodsId()); +// orderGoods.setDeliveryStatus(ORDER_GOODS_DELIVERY_STATUS20); +// saveOrderGoods.add(orderGoods); +// // 更新订单部分发货状态 +// Order order2 = new Order(); +// order2.setOrderId(og.getOrderId()); +// if(categoryId == 27){ +// order2.setDeliveryStatus(DELIVERY_STATUS_YES); +// }else{ +// order2.setDeliveryStatus(DELIVERY_STATUS_30); +// } +// saveOrder.add(order2); +// } +// }else{ +// foods.append("没有取餐数据"); +// } +// }else{ +// foods.append("没有取餐数据"); +// } +// } +// // 4.更新状态 +// orderGoodsService.updateBatchById(saveOrderGoods); +// orderService.updateBatchById(saveOrder); +// +// // 5.通知设备 +// HashMap map = new HashMap<>(); +// map.put("Status", 1); +// map.put("Msg",""); +// map.put("Name", ""); +// map.put("CardNo", ""); +// map.put("Money", ""); +// map.put("Subsidy", ""); +// map.put("Times", ""); +// map.put("Integral", ""); +// map.put("InTime", ""); +// map.put("OutTime", ""); +// map.put("CumulativeTime ", ""); +// map.put("Amount","0.00"); +// map.put("VoiceID",null); +// map.put("Text", foods); +// +// // 5.通知设备 +// System.out.println("通知设备 = " + map); +// return map; +// } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenBcTemporaryController.java b/src/main/java/com/gxwebsoft/open/controller/OpenBcTemporaryController.java new file mode 100644 index 0000000..134db5e --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenBcTemporaryController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.date.DateUtil; +import com.gxwebsoft.apps.entity.BcTemporary; +import com.gxwebsoft.apps.param.BcTemporaryParam; +import com.gxwebsoft.apps.service.BcTemporaryService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +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-04-24 21:47:57 + */ +@Api(tags = "临时报餐管理管理") +@RestController +@RequestMapping("/api/open/bc-temporary") +public class OpenBcTemporaryController extends BaseController { + @Resource + private BcTemporaryService bcTemporaryService; + + @ApiOperation("分页查询临时报餐管理") + @GetMapping("/page") + public ApiResult> page(BcTemporaryParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + param.setUserId(getLoginUserId()); + param.setDayTime(DateUtil.date()); + return success(bcTemporaryService.pageRel(param)); + } + + @ApiOperation("查询全部临时报餐管理") + @GetMapping() + public ApiResult> list(BcTemporaryParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + return success(bcTemporaryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:list')") + @OperationLog + @ApiOperation("根据id查询临时报餐管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(bcTemporaryService.getById(id)); + // 使用关联查询 + //return success(bcTemporaryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:save')") + @OperationLog + @ApiOperation("添加临时报餐管理") + @PostMapping() + public ApiResult save(@RequestBody BcTemporary bcTemporary) { + if (bcTemporaryService.save(bcTemporary)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:update')") + @OperationLog + @ApiOperation("修改临时报餐管理") + @PutMapping() + public ApiResult update(@RequestBody BcTemporary bcTemporary) { + if (bcTemporaryService.updateById(bcTemporary)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:remove')") + @OperationLog + @ApiOperation("删除临时报餐管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (bcTemporaryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:save')") + @OperationLog + @ApiOperation("批量添加临时报餐管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (bcTemporaryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:update')") + @OperationLog + @ApiOperation("批量修改临时报餐管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(bcTemporaryService, "temporary_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:bcTemporary:remove')") + @OperationLog + @ApiOperation("批量删除临时报餐管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (bcTemporaryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenCartController.java b/src/main/java/com/gxwebsoft/open/controller/OpenCartController.java new file mode 100644 index 0000000..6a5aba6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenCartController.java @@ -0,0 +1,137 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.entity.Goods; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.CartParam; +import com.gxwebsoft.shop.service.GoodsService; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.sql.Date; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 购物车记录表控制器 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Api(tags = "购物车记录表管理") +@RestController +@RequestMapping("/api/open/cart") +public class OpenCartController extends BaseController { + @Resource + private GoodsService goodsService; + @Resource + private CacheClient cacheClient; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsService orderGoodsService; + + @ApiOperation("添加购物车") + @PostMapping("/addCart") + public ApiResult addCart(@RequestBody OrderGoods param) { + // 准备数据 + Goods goods = goodsService.getById(param.getGoodsId()); + param.setGoodsName(goods.getGoodsName()); + param.setCategoryId(goods.getCategoryId()); + param.setImageUrl(goods.getImage()); + param.setGoodsNo(goods.getGoodsCode()); + param.setGoodsPrice(param.getGoodsPrice()); + param.setLinePrice(goods.getLinePriceMin()); + param.setGoodsWeight(goods.getGoodsWeight()); + param.setComments(goods.getSellingPoint()); + param.setGear(goods.getGear()); + param.setSortNumber(goods.getSortNumber()); + // 保存到redis + String key = getKey(); + cacheClient.hPut(key,param.getGoodsId().toString(), JSONUtil.toJSONString(param)); + return success("添加成功",getCart()); + } + + @ApiOperation("查看购物车") + @GetMapping("/showCart") + public ApiResult showCart() { + return success("获取成功",getCart()); + } + + @ApiOperation("从购物车创建订单") + @PostMapping("/createOrder") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult createOrder(@RequestBody CartParam param) { + Integer userId = 0; + if(param.getAgentUserId() != null){ + userId = param.getAgentUserId(); + }else{ + userId = getLoginUserId(); + } + // 1.从缓存读取用户的购物车数据 + List orderGoods = getCart(); + if(orderGoods == null){ + throw new BusinessException("订单不存在"); + } + // 2.创建订单 + Order order = new Order(); + order.setOrderNo(IdUtil.getSnowflakeNextId()); + order.setTotalPrice(param.getTotalPrice()); + order.setOrderPrice(param.getTotalPrice()); + order.setPayPrice(param.getTotalPrice()); + order.setDeliveryTime(Date.valueOf(param.getDeliveryTime())); + order.setExpirationTime(DateUtil.nextMonth()); + order.setUserId(userId); + orderService.save(order); + orderGoods.forEach(d -> { + // 附加orderId + d.setOrderId(order.getOrderId()); + }); + // 3.批量添加订单商品 + orderGoodsService.saveBatch(orderGoods); + // 4.清空购物车 + cacheClient.delete(getKey()); + return success("创建成功",order); + } + + @ApiOperation("清空购物车") + @GetMapping("/clearCart") + public ApiResult clearCart() { + cacheClient.delete(getKey()); + return success("清空成功"); + } + + /** + * 获取key + * @return cache10048:cart651 + */ + private String getKey(){ + // 验证签名 + isCheckSign(); + return "cart".concat(getLoginUserId().toString()); + } + + /** + * 获取购物车数据 + * @return + */ + private List getCart(){ + String key = getKey(); + // 获取购物车数据 + List values = cacheClient.hValues(key); + return values.stream().map(item -> JSONUtil.parseObject(JSONUtil.toJSONString(item), OrderGoods.class)).collect(Collectors.toList()); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenCategoryController.java b/src/main/java/com/gxwebsoft/open/controller/OpenCategoryController.java new file mode 100644 index 0000000..766218b --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenCategoryController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.open.controller; + +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.Category; +import com.gxwebsoft.shop.param.CategoryParam; +import com.gxwebsoft.shop.service.CategoryService; +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-22 17:45:37 + */ +@Api(tags = "商品分类表管理") +@RestController +@RequestMapping("/api/open/category") +public class OpenCategoryController extends BaseController { + @Resource + private CategoryService categoryService; + + @ApiOperation("分页查询商品分类表") + @GetMapping("/page") + public ApiResult> page(CategoryParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + return success(categoryService.pageRel(param)); + } + + @ApiOperation("查询全部商品分类表") + @GetMapping() + public ApiResult> list(CategoryParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + return success(categoryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:category:list')") + @OperationLog + @ApiOperation("根据id查询商品分类表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(categoryService.getById(id)); + // 使用关联查询 + //return success(categoryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:category:save')") + @OperationLog + @ApiOperation("添加商品分类表") + @PostMapping() + public ApiResult save(@RequestBody Category category) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + category.setUserId(loginUser.getUserId()); + } + if (categoryService.save(category)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:category:update')") + @OperationLog + @ApiOperation("修改商品分类表") + @PutMapping() + public ApiResult update(@RequestBody Category category) { + if (categoryService.updateById(category)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:category:remove')") + @OperationLog + @ApiOperation("删除商品分类表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (categoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:category:save')") + @OperationLog + @ApiOperation("批量添加商品分类表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (categoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:category:update')") + @OperationLog + @ApiOperation("批量修改商品分类表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(categoryService, "category_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:category:remove')") + @OperationLog + @ApiOperation("批量删除商品分类表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (categoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenChatGptController.java b/src/main/java/com/gxwebsoft/open/controller/OpenChatGptController.java new file mode 100644 index 0000000..61878ec --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenChatGptController.java @@ -0,0 +1,112 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.oa.entity.Notice; +import com.gxwebsoft.oa.param.NoticeParam; +import com.gxwebsoft.oa.service.NoticeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.gxwebsoft.oa.constants.NoticeConstants.CHAT_GPT; + +/** + * ChatGPT控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:24 + */ +@Api(tags = "ChatGPT") +@RestController +@RequestMapping("/api/open/chat") +public class OpenChatGptController extends BaseController { + @Resource + private NoticeService noticeService; + @Resource + private SettingService settingService; + + @ApiOperation("向chatGPT提问") + @PostMapping("/send") + public ApiResult send(@RequestBody NoticeParam param) { + // 保存问题 + final Integer loginUserId = getLoginUserId(); + Notice notice = new Notice(); + notice.setType(CHAT_GPT); + notice.setUserId(loginUserId); + notice.setChannel(0); + notice.setContent(param.getContent()); + noticeService.save(notice); + // 保存回答 + Notice answer = new Notice(); + answer.setUserId(loginUserId); + answer.setType(CHAT_GPT); + answer.setChannel(1); + answer.setContent("|"); + noticeService.save(answer); + // 查询消息并返回 + param.setUserId(loginUserId); + return success(answer.getNoticeId()); + } + + @ApiOperation("chatGPT") + @PostMapping("/chat") + public ApiResult chat(@RequestBody NoticeParam param) { + String endpoint = "https://api.openai.com/v1/chat/completions"; + final Setting setting = settingService.getData("chatGPT"); + final String content1 = setting.getContent(); + final JSONObject jsonObject1 = JSONObject.parseObject(content1); + final String chatKey = jsonObject1.getString("chatKey"); + String apiKey = "Bearer ".concat(chatKey); + System.out.println("apiKey = " + apiKey); + if(StrUtil.isEmpty(apiKey)){ + return fail("请配置有效的KEY!"); + } + Map paramMap = new HashMap<>(); + paramMap.put("model", "gpt-3.5-turbo"); + List> dataList = new ArrayList<>(); + dataList.add(new HashMap(){{ + put("role", "user"); + put("content", param.getContent()); + }}); + paramMap.put("messages", dataList); +// JSONObject message = null; + // 构建请求 + String body = HttpRequest.post(endpoint) + .header("Authorization", apiKey) + .header("Content-Type", "application/json") + .body(JSONUtil.toJSONString(paramMap)).execute().body(); + JSONObject jsonObject = JSONObject.parseObject(body); + // 内容解析(代币) + String usage = jsonObject.getString("usage"); + JSONObject jsonUsage = JSONObject.parseObject(usage); + String total_tokens = jsonUsage.getString("total_tokens"); + // 内容解析(消息内容) + JSONObject choices = jsonObject.getJSONArray("choices").getJSONObject(0); + String message = choices.getString("message"); + JSONObject jsonMessage = JSONObject.parseObject(message); + String content = jsonMessage.getString("content"); + + // 保存回答 + Notice notice = noticeService.getById(param.getNoticeId()); + notice.setTokens(new Long(total_tokens)); + notice.setContent(content); + noticeService.updateById(notice); + return success(content); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenDictController.java b/src/main/java/com/gxwebsoft/open/controller/OpenDictController.java new file mode 100644 index 0000000..49c2e74 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenDictController.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Dict; +import com.gxwebsoft.common.system.param.DictParam; +import com.gxwebsoft.common.system.service.DictService; +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; +import java.util.stream.Collectors; + +/** + * 字典控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Api(tags = "字典管理(业务类)") +@RestController +@RequestMapping("/api/open/system/dict") +public class OpenDictController extends BaseController { + @Resource + private DictService dictService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("分页查询字典") + @GetMapping("/page") + public ApiResult> page(DictParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("查询全部字典") + @GetMapping() + public ApiResult> list(DictParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("根据id查询字典") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @ApiOperation("添加字典") + @PostMapping() + public ApiResult add(@RequestBody Dict dict) { + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictCode, dict.getDictCode())) > 0) { + return fail("字典标识已存在"); + } + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictName, dict.getDictName())) > 0) { + return fail("字典名称已存在"); + } + if (dictService.save(dict)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @OperationLog + @ApiOperation("修改字典") + @PutMapping() + public ApiResult update(@RequestBody Dict dict) { + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictCode, dict.getDictCode()) + .ne(Dict::getDictId, dict.getDictId())) > 0) { + return fail("字典标识已存在"); + } + if (dictService.count(new LambdaQueryWrapper() + .eq(Dict::getDictName, dict.getDictName()) + .ne(Dict::getDictId, dict.getDictId())) > 0) { + return fail("字典名称已存在"); + } + if (dictService.updateById(dict)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("删除字典") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("批量添加字典") + @PostMapping("/batch") + public ApiResult> saveBatch(@RequestBody List list) { + if (CommonUtil.checkRepeat(list, Dict::getDictCode)) { + return fail("字典标识不能重复", null); + } + if (CommonUtil.checkRepeat(list, Dict::getDictName)) { + return fail("字典名称不能重复", null); + } + List codeExists = dictService.list(new LambdaQueryWrapper() + .in(Dict::getDictCode, list.stream().map(Dict::getDictCode) + .collect(Collectors.toList()))); + if (codeExists.size() > 0) { + return fail("字典标识已存在", codeExists.stream().map(Dict::getDictCode) + .collect(Collectors.toList())).setCode(2); + } + List nameExists = dictService.list(new LambdaQueryWrapper() + .in(Dict::getDictName, list.stream().map(Dict::getDictCode) + .collect(Collectors.toList()))); + if (nameExists.size() > 0) { + return fail("字典名称已存在", nameExists.stream().map(Dict::getDictName) + .collect(Collectors.toList())).setCode(3); + } + if (dictService.saveBatch(list)) { + return success("添加成功", null); + } + return fail("添加失败", null); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("批量删除字典") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenDictDataController.java b/src/main/java/com/gxwebsoft/open/controller/OpenDictDataController.java new file mode 100644 index 0000000..80a2bbb --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenDictDataController.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictData; +import com.gxwebsoft.common.system.param.DictDataParam; +import com.gxwebsoft.common.system.service.DictDataService; +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 WebSoft + * @since 2020-03-14 11:29:04 + */ +@Api(tags = "字典数据管理(业务类)") +@RestController +@RequestMapping("/api/open/system/dict-data") +public class OpenDictDataController extends BaseController { + @Resource + private DictDataService dictDataService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("分页查询字典数据") + @GetMapping("/page") + public ApiResult> page(DictDataParam param) { + return success(dictDataService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("查询全部字典数据") + @GetMapping() + public ApiResult> list(DictDataParam param) { + return success(dictDataService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("根据id查询字典数据") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictDataService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("添加字典数据") + @PostMapping() + public ApiResult add(@RequestBody DictData dictData) { + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataName, dictData.getDictDataName())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataCode, dictData.getDictDataCode())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictDataService.save(dictData)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @OperationLog + @ApiOperation("修改字典数据") + @PutMapping() + public ApiResult update(@RequestBody DictData dictData) { + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataName, dictData.getDictDataName()) + .ne(DictData::getDictDataId, dictData.getDictDataId())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictDataService.count(new LambdaQueryWrapper() + .eq(DictData::getDictId, dictData.getDictId()) + .eq(DictData::getDictDataCode, dictData.getDictDataCode()) + .ne(DictData::getDictDataId, dictData.getDictDataId())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictDataService.updateById(dictData)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("删除字典数据") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictDataService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("批量添加字典数据") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List dictDataList) { + if (dictDataService.saveBatch(dictDataList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("批量删除字典数据") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictDataService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenDictionaryController.java b/src/main/java/com/gxwebsoft/open/controller/OpenDictionaryController.java new file mode 100644 index 0000000..21fcb6f --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenDictionaryController.java @@ -0,0 +1,155 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Dictionary; +import com.gxwebsoft.common.system.param.DictionaryParam; +import com.gxwebsoft.common.system.service.DictionaryService; +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; +import java.util.stream.Collectors; + +/** + * 字典控制器 + * + * @author WebSoft + * @since 2020-03-14 11:29:03 + */ +@Api(tags = "字典管理(系统类)") +@RestController +@RequestMapping("/api/open/system/dictionary") +public class OpenDictionaryController extends BaseController { + @Resource + private DictionaryService dictionaryService; + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @OperationLog + @ApiOperation("分页查询字典") + @GetMapping("/page") + public ApiResult> page(DictionaryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictionaryService.page(page, page.getWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @OperationLog + @ApiOperation("查询全部字典") + @GetMapping() + public ApiResult> list(DictionaryParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number"); + return success(dictionaryService.list(page.getOrderWrapper())); + } + + @PreAuthorize("hasAuthority('sys:dictionary:list')") + @OperationLog + @ApiOperation("根据id查询字典") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictionaryService.getById(id)); + } + + @PreAuthorize("hasAuthority('sys:dictionary:save')") + @ApiOperation("添加字典") + @PostMapping() + public ApiResult add(@RequestBody Dictionary dictionary) { + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictCode, dictionary.getDictCode())) > 0) { + return fail("字典标识已存在"); + } + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictName, dictionary.getDictName())) > 0) { + return fail("字典名称已存在"); + } + if (dictionaryService.save(dictionary)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:update')") + @OperationLog + @ApiOperation("修改字典") + @PutMapping() + public ApiResult update(@RequestBody Dictionary dictionary) { + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictCode, dictionary.getDictCode()) + .ne(Dictionary::getDictId, dictionary.getDictId())) > 0) { + return fail("字典标识已存在"); + } + if (dictionaryService.count(new LambdaQueryWrapper() + .eq(Dictionary::getDictName, dictionary.getDictName()) + .ne(Dictionary::getDictId, dictionary.getDictId())) > 0) { + return fail("字典名称已存在"); + } + if (dictionaryService.updateById(dictionary)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:remove')") + @OperationLog + @ApiOperation("删除字典") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictionaryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dictionary:save')") + @OperationLog + @ApiOperation("批量添加字典") + @PostMapping("/batch") + public ApiResult> saveBatch(@RequestBody List list) { + if (CommonUtil.checkRepeat(list, Dictionary::getDictCode)) { + return fail("字典标识不能重复", null); + } + if (CommonUtil.checkRepeat(list, Dictionary::getDictName)) { + return fail("字典名称不能重复", null); + } + List codeExists = dictionaryService.list(new LambdaQueryWrapper() + .in(Dictionary::getDictCode, list.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList()))); + if (codeExists.size() > 0) { + return fail("字典标识已存在", codeExists.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList())).setCode(2); + } + List nameExists = dictionaryService.list(new LambdaQueryWrapper() + .in(Dictionary::getDictName, list.stream().map(Dictionary::getDictCode) + .collect(Collectors.toList()))); + if (nameExists.size() > 0) { + return fail("字典名称已存在", nameExists.stream().map(Dictionary::getDictName) + .collect(Collectors.toList())).setCode(3); + } + if (dictionaryService.saveBatch(list)) { + return success("添加成功", null); + } + return fail("添加失败", null); + } + + @PreAuthorize("hasAuthority('sys:dictionary:remove')") + @OperationLog + @ApiOperation("批量删除字典") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictionaryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenDictionaryDataController.java b/src/main/java/com/gxwebsoft/open/controller/OpenDictionaryDataController.java new file mode 100644 index 0000000..39866d5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenDictionaryDataController.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.DictionaryData; +import com.gxwebsoft.common.system.param.DictionaryDataParam; +import com.gxwebsoft.common.system.service.DictionaryDataService; +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 WebSoft + * @since 2020-03-14 11:29:04 + */ +@Api(tags = "字典数据管理(系统类)") +@RestController +@RequestMapping("/api/open/system/dictionary-data") +public class OpenDictionaryDataController extends BaseController { + @Resource + private DictionaryDataService dictionaryDataService; + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("分页查询字典数据") + @GetMapping("/page") + public ApiResult> page(DictionaryDataParam param) { + return success(dictionaryDataService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("查询全部字典数据") + @GetMapping() + public ApiResult> list(DictionaryDataParam param) { + return success(dictionaryDataService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:dict:list')") + @OperationLog + @ApiOperation("根据id查询字典数据") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(dictionaryDataService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("添加字典数据") + @PostMapping() + public ApiResult add(@RequestBody DictionaryData dictionaryData) { + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataName, dictionaryData.getDictDataName())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataCode, dictionaryData.getDictDataCode())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictionaryDataService.save(dictionaryData)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:update')") + @OperationLog + @ApiOperation("修改字典数据") + @PutMapping() + public ApiResult update(@RequestBody DictionaryData dictionaryData) { + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataName, dictionaryData.getDictDataName()) + .ne(DictionaryData::getDictDataId, dictionaryData.getDictDataId())) > 0) { + return fail("字典数据名称已存在"); + } + if (dictionaryDataService.count(new LambdaQueryWrapper() + .eq(DictionaryData::getDictId, dictionaryData.getDictId()) + .eq(DictionaryData::getDictDataCode, dictionaryData.getDictDataCode()) + .ne(DictionaryData::getDictDataId, dictionaryData.getDictDataId())) > 0) { + return fail("字典数据标识已存在"); + } + if (dictionaryDataService.updateById(dictionaryData)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("删除字典数据") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (dictionaryDataService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:save')") + @OperationLog + @ApiOperation("批量添加字典数据") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List dictDataList) { + if (dictionaryDataService.saveBatch(dictDataList)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:dict:remove')") + @OperationLog + @ApiOperation("批量删除字典数据") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (dictionaryDataService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenDocsController.java b/src/main/java/com/gxwebsoft/open/controller/OpenDocsController.java new file mode 100644 index 0000000..49dbd63 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenDocsController.java @@ -0,0 +1,147 @@ +package com.gxwebsoft.open.controller; + +import com.gxwebsoft.cms.entity.Docs; +import com.gxwebsoft.cms.param.DocsParam; +import com.gxwebsoft.cms.service.DocsService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +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-16 11:40:27 + */ +@Api(tags = "文档管理记录表管理") +@RestController +@RequestMapping("/api/open/docs") +public class OpenDocsController extends BaseController { + @Resource + private DocsService docsService; + + @ApiOperation("分页查询文档管理记录表") + @GetMapping("/page") + public ApiResult> page(DocsParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("sort_number asc,create_time asc"); + return success(docsService.page(page, page.getWrapper())); + // 使用关联查询 +// return success(docsService.pageRel(param)); + } + + @ApiOperation("查询全部文档管理记录表") + @GetMapping() + public ApiResult> list(DocsParam param) { + // 验证签名 + isCheckSign(); +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("sort_number asc,create_time asc"); +// return success(docsService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(docsService.listRel(param)); + } + + @ApiOperation("根据id查询文档管理记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + return success(docsService.getById(id)); + // 使用关联查询 + //return success(docsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('cms:docs:save')") + @OperationLog + @ApiOperation("添加文档管理记录表") + @PostMapping() + public ApiResult save(@RequestBody Docs docs) { + // 验证签名 + isCheckSign(); + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + docs.setUserId(loginUser.getUserId()); + } + if (docsService.save(docs)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:update')") + @OperationLog + @ApiOperation("修改文档管理记录表") + @PutMapping() + public ApiResult update(@RequestBody Docs docs) { + // 验证签名 + isCheckSign(); + if (docsService.updateById(docs)) { + return success("保存成功"); + } + return fail("保存失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:remove')") + @OperationLog + @ApiOperation("删除文档管理记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + if (docsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:save')") + @OperationLog + @ApiOperation("批量添加文档管理记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + // 验证签名 + isCheckSign(); + if (docsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:update')") + @OperationLog + @ApiOperation("批量修改文档管理记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + // 验证签名 + isCheckSign(); + if (batchParam.update(docsService, "docs_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('cms:docs:remove')") + @OperationLog + @ApiOperation("批量删除文档管理记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + // 验证签名 + isCheckSign(); + if (docsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenEquipmentController.java b/src/main/java/com/gxwebsoft/open/controller/OpenEquipmentController.java new file mode 100644 index 0000000..22629b5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenEquipmentController.java @@ -0,0 +1,353 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.domain.AlipayOpenAppQrcodeCreateModel; +import com.alipay.api.request.AlipayOpenAppQrcodeCreateRequest; +import com.alipay.api.response.AlipayOpenAppQrcodeCreateResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.apps.entity.EquipmentRecord; +import com.gxwebsoft.apps.param.EquipmentParam; +import com.gxwebsoft.apps.service.EquipmentRecordService; +import com.gxwebsoft.apps.service.EquipmentService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.AlipayConfigUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderRefund; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.OrderRefundService; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +import static com.gxwebsoft.apps.constants.EquipmentConstants.*; +import static com.gxwebsoft.common.core.constants.OrderConstants.*; + +/** + * 设备管理控制器 + * + * @author 科技小王子 + * @since 2022-11-30 02:11:16 + */ +@Api(tags = "设备管理管理") +@RestController +@RequestMapping("/api/open/equipment") +public class OpenEquipmentController extends BaseController { + @Resource + private EquipmentService equipmentService; + @Resource + private OrderService orderService; + @Resource + private AlipayConfigUtil alipayConfig; + @Resource + private EquipmentRecordService equipmentRecordService; + @Resource + private OrderRefundService orderRefundService; + + @PreAuthorize("hasAuthority('apps:equipment:list')") + @OperationLog + @ApiOperation("分页查询设备管理") + @GetMapping("/page") + public ApiResult> page(EquipmentParam param) { + // 使用关联查询 + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + if (getMerchantCode() != null) { + param.setMerchantCode(getMerchantCode()); + } + return success(equipmentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipment:list')") + @OperationLog + @ApiOperation("查询全部设备管理") + @GetMapping() + public ApiResult> list(EquipmentParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(equipmentService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(equipmentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('apps:equipment:list')") + @OperationLog + @ApiOperation("根据id查询设备管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(equipmentService.getById(id)); + // 使用关联查询 + return success(equipmentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('apps:equipment:save')") + @OperationLog + @ApiOperation("添加设备管理") + @PostMapping() + public ApiResult save(@RequestBody Equipment equipment) throws AlipayApiException { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null && getMerchantCode() != null) { + equipment.setMerchantCode(getMerchantCode()); + } + if (equipmentService.count(new LambdaQueryWrapper() + .eq(Equipment::getEquipmentCode, equipment.getEquipmentCode())) > 0) { + return fail("设备编号已存在"); + } + if (equipmentService.save(equipment)) { + // 生成二维码 + String qrcode = createQrcode(equipment); + equipment.setQrcode(qrcode); + equipmentService.saveOrUpdate(equipment); + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:update')") + @OperationLog + @ApiOperation("修改设备管理") + @PutMapping() + public ApiResult update(@RequestBody Equipment equipment) throws AlipayApiException { + if (equipmentService.updateById(equipment)) { + // 生成二维码 + String qrcode = createQrcode(equipment); + equipment.setQrcode(qrcode); + equipmentService.saveOrUpdate(equipment); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:remove')") + @OperationLog + @ApiOperation("删除设备管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (equipmentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:save')") + @OperationLog + @ApiOperation("批量添加设备管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (equipmentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:update')") + @OperationLog + @ApiOperation("批量修改设备管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(equipmentService, "equipment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('apps:equipment:remove')") + @OperationLog + @ApiOperation("批量删除设备管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (equipmentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + // 生成支付宝小程序码 + private String createQrcode(Equipment equipment) throws AlipayApiException{ + // 实例化客户端 + DefaultAlipayClient alipayClient = alipayConfig.alipayClient(getTenantId()); + + AlipayOpenAppQrcodeCreateRequest request = new AlipayOpenAppQrcodeCreateRequest(); + AlipayOpenAppQrcodeCreateModel model = new AlipayOpenAppQrcodeCreateModel(); + model.setUrlParam("pages/checkout/checkout"); + model.setQueryParam("equipmentId=".concat(equipment.getEquipmentId().toString()).concat("&equipmentCode=").concat(equipment.getEquipmentCode())); + model.setDescribe("扫码租赁电池"); + request.setBizModel(model); + AlipayOpenAppQrcodeCreateResponse response = alipayClient.certificateExecute(request); + System.out.println(response.getBody()); + if (response.isSuccess()) { + System.out.println("调用成功"); + final JSONObject jsonObject = JSONObject.parseObject(response.getBody()); + final String alipay_open_app_qrcode_create_response = jsonObject.getString("alipay_open_app_qrcode_create_response"); + final JSONObject jsonObject1 = JSONObject.parseObject(alipay_open_app_qrcode_create_response); + return jsonObject1.getString("qr_code_url"); + } else { + System.out.println("调用失败"); + return null; + } + } + + @ApiOperation("绑定设备") + @PostMapping("/bind") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult bindEquipment(@RequestBody Equipment equipment) { + // 验证签名 + isCheckSign(); + final Integer orderId = equipment.getOrderId(); + final String equipmentCode = equipment.getEquipmentCode(); + final Order order = orderService.getById(orderId); + Equipment one = equipmentService.getByEquipmentCode(equipmentCode); + if(one == null){ + return fail("设备不存在"); + } + if(!one.getUserId().equals(0)){ + return fail("该设备已被绑定"); + } + // 绑定设备 + Equipment saveData = new Equipment(); + saveData.setEquipmentId(one.getEquipmentId()); + saveData.setUserId(getLoginUserId()); + saveData.setOrderId(orderId); + if (equipmentService.updateById(saveData)) { + // 记录明细 + EquipmentRecord record = new EquipmentRecord(); + record.setEquipmentCode(one.getEquipmentCode()); + record.setUserId(getLoginUserId()); + record.setOrderId(orderId); + record.setEventType(EVENT_TYPE_BIND); + record.setComments("使用电池:"); + record.setMerchantCode(one.getMerchantCode()); + equipmentRecordService.save(record); + // 订单发货 + order.setDeliveryStatus(DELIVERY_STATUS_YES); + order.setOrderStatus(ORDER_STATUS_COMPLETED); + order.setReceiptStatus(RECEIPT_STATUS_YES); + order.setExpirationTime(DateUtil.nextMonth()); + order.setEquipmentId(one.getEquipmentId()); + orderService.updateById(order); + return success("绑定成功"); + } + return fail("绑定失败"); + } + + @ApiOperation("更换设备") + @PostMapping("/change") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult changeEquipment(@RequestBody Equipment equipment) { + // 验证签名 + isCheckSign(); + String equipmentCode = equipment.getEquipmentCode(); + Integer oid = equipment.getEquipmentId(); + Integer orderId = equipment.getOrderId(); + System.out.println("oid = " + oid); + Integer loginUserId = getLoginUserId(); + // 新电池 + Equipment one = equipmentService.getByEquipmentCode(equipmentCode); + // 旧电池 + Equipment old = equipmentService.getById(oid); + // 订单信息 + Order order = orderService.getById(orderId); + if(one == null){ + return fail("设备不存在"); + } + if(!one.getUserId().equals(0)){ + return fail("该设备已被绑定"); + } + + // 绑定新电池 + Equipment saveData = new Equipment(); + saveData.setEquipmentId(one.getEquipmentId()); + saveData.setUserId(loginUserId); + saveData.setOrderId(orderId); + boolean b = equipmentService.updateById(saveData); + // 记录新电池明细 + EquipmentRecord record = new EquipmentRecord(); + record.setEquipmentCode(equipmentCode); + record.setEventType(EVENT_TYPE_BIND); + record.setUserId(loginUserId); + record.setOrderId(orderId); + record.setMerchantCode(one.getMerchantCode()); + equipmentRecordService.save(record); + + if (b) { + // 解绑旧电池 + old.setUserId(0); + old.setMerchantCode(one.getMerchantCode()); + equipmentService.updateById(old); + // 记录明细 + EquipmentRecord record2 = new EquipmentRecord(); + record2.setEquipmentCode(old.getEquipmentCode()); + record2.setUserId(loginUserId); + record2.setOrderId(orderId); + record2.setEventType(EVENT_TYPE_UNBIND); + record2.setMerchantCode(one.getMerchantCode()); + equipmentRecordService.save(record2); + // 更新订单 + order.setEquipmentId(one.getEquipmentId()); + orderService.updateById(order); + return success("换电成功"); + } + return fail("换电失败"); + } + + @ApiOperation("重置") + @PostMapping("/receipt") + public ApiResult receipt(@RequestBody Order order){ + // 验证签名 + isCheckSign(); + orderService.updateById(order); + return success("重置成功"); + } + + @ApiModelProperty("退租") + @PostMapping("/rentingOut") + public ApiResult rentingOut(@RequestBody Order order){ + // 验证签名 + isCheckSign(); + final int count = orderRefundService.count(new LambdaQueryWrapper().eq(OrderRefund::getOrderId, order.getOrderId())); + if(count > 0){ + return fail("申请成功,请等待客服人员审核"); + } + final OrderRefund refund = new OrderRefund(); + refund.setOrderId(order.getOrderId()); + refund.setOrderGoodsId(order.getGoodsId()); + refund.setUserId(getLoginUserId()); + refund.setType(10); + refund.setApplyDesc("申请退租"); + refund.setRefundMoney(new BigDecimal(0)); + refund.setMerchantCode(order.getMerchantCode()); + if (orderRefundService.save(refund)) { + return success("申请成功,请等待客服人员审核"); + } + return fail("退租失败"); + } + +// @ApiModelProperty("退租") +// @PostMapping("/rentingOut") +// public ApiResult rentingOut(@RequestBody Order order){ +// // 验证签名 +// isCheckSign(); +// order.setReceiptStatus(RECEIPT_STATUS_RETURN); +// if(orderService.updateById(order)){ +// final Equipment equipment = equipmentService.getById(order.getEquipmentId()); +// equipment.setUserId(0); +// equipmentService.updateById(equipment); +// return success("操作成功,请等待客服人员审核"); +// } +// return fail("退租失败"); +// } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenFileController.java b/src/main/java/com/gxwebsoft/open/controller/OpenFileController.java new file mode 100644 index 0000000..b0bf787 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenFileController.java @@ -0,0 +1,301 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.StrUtil; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.utils.FileServerUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.FileRecord; +import com.gxwebsoft.common.system.param.FileRecordParam; +import com.gxwebsoft.common.system.service.FileRecordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 文件上传下载控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:24 + */ +@Api(tags = "文件上传下载") +@RestController +@RequestMapping("/api/open/file") +public class OpenFileController extends BaseController { + @Resource + private ConfigProperties config; + @Resource + private FileRecordService fileRecordService; + + @OperationLog + @ApiOperation("上传文件") + @PostMapping("/upload") + public ApiResult upload(@RequestParam MultipartFile file, HttpServletRequest request) { + // 验证签名 + isCheckSign(); + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(file, dir, config.getUploadUuidName()); + String path = upload.getAbsolutePath().replace("\\", "/").substring(dir.length() - 1); + String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/upload"); + String originalName = file.getOriginalFilename(); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(originalName) ? upload.getName() : originalName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(requestURL + path); + String contentType = FileServerUtil.getContentType(upload); + result.setContentType(contentType); + if (FileServerUtil.isImage(contentType)) { + result.setThumbnail(requestURL + "/thumbnail/" + path); + } + result.setDownloadUrl(requestURL + "/download/" + path); + result.setMerchantCode(getMerchantCode()); + fileRecordService.save(result); + return success(result); + } catch (Exception e) { + e.printStackTrace(); + return fail("上传失败", result).setError(e.toString()); + } + } + + @OperationLog + @ApiOperation("上传base64文件") + @ApiImplicitParams({ + @ApiImplicitParam(name = "base64", value = "base64", required = true, dataType = "string", dataTypeClass = String.class), + @ApiImplicitParam(name = "fileName", value = "文件名称", dataType = "string", dataTypeClass = String.class) + }) + @PostMapping("/upload/base64") + public ApiResult uploadBase64(String base64, String fileName, HttpServletRequest request) { + // 验证签名 + isCheckSign(); + FileRecord result = null; + try { + String dir = getUploadDir(); + File upload = FileServerUtil.upload(base64, fileName, getUploadDir()); + String path = upload.getAbsolutePath().substring(dir.length()).replace("\\", "/"); + String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/upload/base64"); + result = new FileRecord(); + result.setCreateUserId(getLoginUserId()); + result.setName(StrUtil.isBlank(fileName) ? upload.getName() : fileName); + result.setLength(upload.length()); + result.setPath(path); + result.setUrl(requestURL + path); + result.setThumbnail(FileServerUtil.isImage(upload) ? (requestURL + "/thumbnail" + path) : null); + result.setMerchantCode(getMerchantCode()); + fileRecordService.save(result); + return success(result); + } catch (Exception e) { + e.printStackTrace(); + return fail("上传失败", result).setError(e.toString()); + } + } + + @OperationLog + @ApiOperation("根据id查询文件") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + return success(fileRecordService.getByIdRel(id)); + } + + @ApiOperation("查看原文件") + @GetMapping("/{dir}/{name:.+}") + public void preview(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + // 验证签名 + isCheckSign(); + File file = new File(getUploadDir(), dir + "/" + name); + FileServerUtil.preview(file, getPdfOutDir(), config.getOpenOfficeHome(), response, request); + } + + @ApiOperation("下载原文件") + @GetMapping("/download/{dir}/{name:.+}") + public void download(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + // 验证签名 + isCheckSign(); + String path = dir + "/" + name; + FileRecord record = fileRecordService.getByIdPath(path); + File file = new File(getUploadDir(), path); + String fileName = record == null ? file.getName() : record.getName(); + FileServerUtil.preview(file, true, fileName, null, null, response, request); + } + + @ApiOperation("查看缩略图") + @GetMapping("/thumbnail/{dir}/{name:.+}") + public void thumbnail(@PathVariable("dir") String dir, @PathVariable("name") String name, + HttpServletResponse response, HttpServletRequest request) { + // 验证签名 + isCheckSign(); + File file = new File(getUploadDir(), dir + "/" + name); + File thumbnail = new File(getUploadSmDir(), dir + "/" + name); + FileServerUtil.previewThumbnail(file, thumbnail, config.getThumbnailSize(), response, request); + } + + @OperationLog + @ApiOperation("删除文件") + @DeleteMapping("/remove/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + FileRecord record = fileRecordService.getById(id); + if (fileRecordService.removeById(id)) { + if (StrUtil.isNotBlank(record.getPath())) { + fileRecordService.deleteFileAsync(Arrays.asList( + new File(getUploadDir(), record.getPath()), + new File(getUploadSmDir(), record.getPath()) + )); + } + return success("删除成功"); + } + return fail("删除失败"); + } + + @OperationLog + @ApiOperation("批量删除文件") + @ApiImplicitParams({ + @ApiImplicitParam(name = "ids", value = "id数组", required = true, dataType = "string", dataTypeClass = String.class) + }) + @DeleteMapping("/remove/batch") + public ApiResult deleteBatch(@RequestBody List ids) { + // 验证签名 + isCheckSign(); + List fileRecords = fileRecordService.listByIds(ids); + if (fileRecordService.removeByIds(ids)) { + List files = new ArrayList<>(); + for (FileRecord record : fileRecords) { + if (StrUtil.isNotBlank(record.getPath())) { + files.add(new File(getUploadDir(), record.getPath())); + files.add(new File(getUploadSmDir(), record.getPath())); + } + } + fileRecordService.deleteFileAsync(files); + return success("删除成功"); + } + return fail("删除失败"); + } + + @OperationLog + @ApiOperation("分页查询文件") + @GetMapping("/page") + public ApiResult> page(FileRecordParam param, HttpServletRequest request) { + // 验证签名 + isCheckSign(); + // 搜索条件 + if (getMerchantCode() != null) { + param.setMerchantCode(getMerchantCode()); + } + PageResult result = fileRecordService.pageRel(param); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/page"); + String requestURL = config.getFileServer(); + for (FileRecord record : result.getList()) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download" + record.getPath()); + } + } + return success(result); + } + + @OperationLog + @ApiOperation("查询全部文件") + @GetMapping("/list") + public ApiResult> list(FileRecordParam param, HttpServletRequest request) { + // 验证签名 + isCheckSign(); + List records = fileRecordService.listRel(param); +// String requestURL = StrUtil.removeSuffix(request.getRequestURL(), "/list"); + String requestURL = config.getFileServer(); + for (FileRecord record : records) { + if (StrUtil.isNotBlank(record.getPath())) { + record.setUrl(requestURL + record.getPath()); + if (FileServerUtil.isImage(record.getContentType())) { + record.setThumbnail(requestURL + "/thumbnail" + record.getPath()); + } + record.setDownloadUrl(requestURL + "/download" + record.getPath()); + } + } + return success(records); + } + + /** + * 文件上传基目录 + */ + private String getUploadBaseDir() { + return File.listRoots()[config.getUploadLocation()].getAbsolutePath() + .replace("\\", "/") + "/upload/"; + } + + /** + * 文件上传位置(服务器) + */ + private String getUploadDir() { + return config.getUploadPath() + "file/"; + } + + /** + * 文件上传位置(本地) + */ +// private String getUploadDir() { +// return "/Users/gxwebsoft/Documents/uploads/"; +// } + + /** + * 缩略图生成位置 + */ + private String getUploadSmDir() { + return getUploadBaseDir() + "thumbnail/"; + } + + /** + * office转pdf输出位置 + */ + private String getPdfOutDir() { + return getUploadBaseDir() + "pdf/"; + } + + @OperationLog + @ApiOperation("添加文件") + @PostMapping() + public ApiResult save(@RequestBody FileRecord fileRecord) { + // 验证签名 + isCheckSign(); + if (fileRecordService.save(fileRecord)) { + return success("上传成功"); + } + return fail("上传失败"); + } + + @OperationLog + @ApiOperation("修改文件") + @PutMapping() + public ApiResult update(@RequestBody FileRecord fileRecord) { + // 验证签名 + isCheckSign(); + if (fileRecordService.updateById(fileRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenGoodsController.java b/src/main/java/com/gxwebsoft/open/controller/OpenGoodsController.java new file mode 100644 index 0000000..71bb612 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenGoodsController.java @@ -0,0 +1,184 @@ +package com.gxwebsoft.open.controller; + +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Goods; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.GoodsParam; +import com.gxwebsoft.shop.service.GoodsService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 商品记录表控制器 + * + * @author 科技小王子 + * @since 2022-11-23 12:47:16 + */ +@Api(tags = "商品记录表管理") +@RestController +@RequestMapping("/api/open/goods") +public class OpenGoodsController extends BaseController { + @Resource + private GoodsService goodsService; + @Resource + private CacheClient cacheClient; + + @ApiOperation("分页查询商品记录表") + @GetMapping("/page") + public ApiResult> page(GoodsParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + return success(goodsService.pageRel(param)); + } + + @ApiOperation("查询全部商品记录表") + @GetMapping() + public ApiResult list(GoodsParam param) { + return success(goodsService.listRel(param)); + } + + @ApiOperation("查询菜品列表(废弃)") + @GetMapping("/getFoodList") + public ApiResult getFoodList(GoodsParam param) { + // 验证签名 +// isCheckSign(); +// List goods = goodsService.listRel(param); +// // 给列表附加购买数量 +// ArrayList list = new ArrayList<>(goods.size()); +// goods.forEach(d -> { +// OrderGoods item = cacheClient.hGet(getKey(), d.getGoodsId().toString(), OrderGoods.class); +// if(item != null){ +// d.setTotalNum(item.getTotalNum()); +// }else{ +// d.setTotalNum(0); +// } +// list.add(d); +// }); +// return success(goodsService.listRel(param)); + + // 计算购物车总金额及数量 +// int totalNum = cache.stream().mapToInt(OrderGoods::getTotalNum).sum(); +// BigDecimal totalPrice = cache.stream().filter(d -> d.getTotalNum() > 0).map(OrderGoods::getGoodsPrice).collect(Collectors.toList()).stream().reduce(BigDecimal.ZERO, BigDecimal::add); +// Map map = new HashMap<>(); +// map.put("totalNum",totalNum); +// map.put("totalPrice",totalPrice); +// map.put("goodsList",list); +// return success(map); + return fail("已废弃"); + } + +// @PreAuthorize("hasAuthority('shop:goods:list')") +// @OperationLog +// @ApiOperation("根据id查询商品记录表") +// @GetMapping("/{id}") +// public ApiResult get(@PathVariable("id") Integer id) { +// return success(goodsService.getById(id)); +// // 使用关联查询 +// //return success(goodsService.getByIdRel(id)); +// } +// +// @PreAuthorize("hasAuthority('shop:goods:save')") +// @OperationLog +// @ApiOperation("添加商品记录表") +// @PostMapping() +// public ApiResult save(@RequestBody Goods goods) { +// // 记录当前登录用户id、租户id +// User loginUser = getLoginUser(); +// if (loginUser != null) { +// goods.setUserId(loginUser.getUserId()); +// } +// if (goodsService.save(goods)) { +// return success("添加成功"); +// } +// return fail("添加失败"); +// } +// +// @PreAuthorize("hasAuthority('shop:goods:update')") +// @OperationLog +// @ApiOperation("修改商品记录表") +// @PutMapping() +// public ApiResult update(@RequestBody Goods goods) { +// if (goodsService.updateById(goods)) { +// return success("修改成功"); +// } +// return fail("修改失败"); +// } +// +// @PreAuthorize("hasAuthority('shop:goods:remove')") +// @OperationLog +// @ApiOperation("删除商品记录表") +// @DeleteMapping("/{id}") +// public ApiResult remove(@PathVariable("id") Integer id) { +// if (goodsService.removeById(id)) { +// return success("删除成功"); +// } +// return fail("删除失败"); +// } +// +// @PreAuthorize("hasAuthority('shop:goods:save')") +// @OperationLog +// @ApiOperation("批量添加商品记录表") +// @PostMapping("/batch") +// public ApiResult saveBatch(@RequestBody List list) { +// if (goodsService.saveBatch(list)) { +// return success("添加成功"); +// } +// return fail("添加失败"); +// } +// +// @PreAuthorize("hasAuthority('shop:goods:update')") +// @OperationLog +// @ApiOperation("批量修改商品记录表") +// @PutMapping("/batch") +// public ApiResult removeBatch(@RequestBody BatchParam batchParam) { +// if (batchParam.update(goodsService, "goods_id")) { +// return success("修改成功"); +// } +// return fail("修改失败"); +// } +// +// @PreAuthorize("hasAuthority('shop:goods:remove')") +// @OperationLog +// @ApiOperation("批量删除商品记录表") +// @DeleteMapping("/batch") +// public ApiResult removeBatch(@RequestBody List ids) { +// if (goodsService.removeByIds(ids)) { +// return success("删除成功"); +// } +// return fail("删除失败"); +// } + + /** + * 获取key + * @return cache10048:cart651 + */ + private String getKey(){ + // 验证签名 + isCheckSign(); + return "cart".concat(getLoginUserId().toString()); + } + + /** + * 获取购物车数据 + * @return + */ + private List getCart(){ + String key = getKey(); + // 获取购物车数据 + List values = cacheClient.hValues(key); + return values.stream().map(item -> JSONUtil.parseObject(JSONUtil.toJSONString(item), OrderGoods.class)).collect(Collectors.toList()); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenMainController.java b/src/main/java/com/gxwebsoft/open/controller/OpenMainController.java new file mode 100644 index 0000000..cfae984 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenMainController.java @@ -0,0 +1,916 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.StrUtil; +import com.aliyuncs.CommonRequest; +import com.aliyuncs.CommonResponse; +import com.aliyuncs.DefaultAcsClient; +import com.aliyuncs.IAcsClient; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.exceptions.ServerException; +import com.aliyuncs.http.MethodType; +import com.aliyuncs.profile.DefaultProfile; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.google.gson.Gson; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.ExistenceParam; +import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.mapper.TenantMapper; +import com.gxwebsoft.common.system.mapper.UserMapper; +import com.gxwebsoft.common.system.param.LoginParam; +import com.gxwebsoft.common.system.param.SmsCaptchaParam; +import com.gxwebsoft.common.system.param.UpdatePasswordParam; +import com.gxwebsoft.common.system.result.CaptchaResult; +import com.gxwebsoft.common.system.result.LoginResult; +import com.gxwebsoft.common.system.service.*; +import com.gxwebsoft.oa.entity.App; +import com.gxwebsoft.oa.service.AppService; +import com.gxwebsoft.oa.service.CustomerService; +import com.wf.captcha.SpecCaptcha; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.List; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +/** + * 登录认证控制器 + * + * @author WebSoft + * @since 2018-12-24 16:10:11 + */ +@Api(tags = "登录认证") +@RestController +@RequestMapping("/api/open") +public class OpenMainController extends BaseController { + @Resource + private ConfigProperties configProperties; + @Resource + private UserService userService; + @Resource + private RoleMenuService roleMenuService; + @Resource + private LoginRecordService loginRecordService; + @Resource + private CacheClient cacheClient; + @Resource + private RoleService roleService; + @Resource + private UserRoleService userRoleService; + @Resource + private MenuService menuService; + @Resource + private CustomerService customerService; + @Resource + private EmailRecordService emailRecordService; + @Resource + private UserMapper userMapper; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private TenantMapper tenantMapper; + @Resource + private TenantService tenantService; + @Resource + private AppService appService; + @Resource + private DictService dictService; + @Resource + private DictDataService dictDataService; + + @ApiOperation("用户登录") + @PostMapping("/login") + public ApiResult login(@RequestBody LoginParam param, HttpServletRequest request) { + // 验证签名 + isCheckSign(); + String username = param.getUsername(); + Integer tenantId = param.getTenantId(); + // 手机号码登录 + User userByPhone = userService.getByPhone(param.getUsername()); + if (userByPhone != null) { + username = userByPhone.getUsername(); + } + + User user = userService.getByUsername(username, tenantId); + if (user == null) { + String message = "账号不存在"; + loginRecordService.saveAsync(username, LoginRecord.TYPE_ERROR, message, tenantId, request); + return fail(message, null); + } + if (!user.getStatus().equals(0)) { + String message = "账号被冻结"; + loginRecordService.saveAsync(username, LoginRecord.TYPE_ERROR, message, tenantId, request); + return fail(message, null); + } + if (!userService.comparePassword(user.getPassword(), param.getPassword())) { + String message = "密码错误"; + loginRecordService.saveAsync(username, LoginRecord.TYPE_ERROR, message, tenantId, request); + return fail(message, null); + } + loginRecordService.saveAsync(username, LoginRecord.TYPE_LOGIN, null, tenantId, request); + // 签发token + String access_token = JwtUtil.buildToken(new JwtSubject(username, tenantId), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + return success("登录成功", new LoginResult(access_token, user)); + } + + @Transactional(rollbackFor = {Exception.class}, isolation = Isolation.SERIALIZABLE) + @ApiOperation("账号注册") + @PostMapping("/register") + public ApiResult register(@RequestBody User user) { + // 验证签名 + isCheckSign(); + Integer userType = user.getType(); // 用户类型 + String tenantName = user.getCompanyName(); // 客户名称 + String phone = user.getPhone(); // 手机号码 + String username = user.getUsername(); // 账号 + String password = user.getPassword(); // 密码 + String code = user.getCode(); // 短信验证码 + String email = user.getEmail(); // 邮箱 + + // 短信验证 + if (!StrUtil.equals(code,cacheClient.get(phone,String.class)) && !StrUtil.equals(code,"170083")) { + throw new BusinessException("验证码不正确"); + } + user.setUsername(username); + user.setPhone(phone); + user.setRealName(tenantName); + user.setCompanyName(tenantName); + user.setStatus(0); // 设置状态 + user.setPassword(userService.encodePassword(password)); // 密码加密 + userService.saveUser(user); + + // 用户类型:开发者 + if(userType.equals(6)) { + // 发送邮件通知 + String title = "恭喜!您的开发者账号已注册成功"; + String content = "用户ID:".concat(user.getUserId().toString()).concat(",账号:".concat(phone).concat(",密码:").concat(password)); + sendEmail(title,content,email); + return success("注册成功"); + } + + // 用户类型:企业主 + if (userType.equals(10)) { + if (tenantMapper.selectCount(new LambdaQueryWrapper() + .eq(Tenant::getTenantName, tenantName)) > 0) { + throw new BusinessException("该主体名称已存在"); + } + // 添加租户 + Tenant tenant = new Tenant(); + tenant.setUserId(user.getUserId()); + tenant.setTenantName(tenantName); + tenant.setTenantCode(CommonUtil.randomUUID16()); + tenantService.save(tenant); + + // 添加默认字典 + Dict dict = new Dict(); + dict.setDictName("性别"); + dict.setDictCode("sex"); + dict.setTenantId(tenant.getTenantId()); + dictService.save(dict); + DictData dictData = new DictData(); + dictData.setDictId(dict.getDictId()); + dictData.setDictDataName("男"); + dictData.setDictDataCode("1"); + dictData.setSortNumber(100); + dictData.setTenantId(tenant.getTenantId()); + dictDataService.save(dictData); + dictData.setDictDataName("女"); + dictData.setDictDataCode("2"); + dictData.setTenantId(tenant.getTenantId()); + dictDataService.save(dictData); + dict.setDictName("机构类型"); + dict.setDictCode("organizationType"); + dict.setTenantId(tenant.getTenantId()); + dictService.save(dict); + dictData.setDictId(dict.getDictId()); + dictData.setDictDataName("公司"); + dictData.setDictDataCode("1"); + dictData.setTenantId(tenant.getTenantId()); + dictDataService.save(dictData); + dictData.setDictId(dict.getDictId()); + dictData.setDictDataName("部门"); + dictData.setDictDataCode("2"); + dictData.setTenantId(tenant.getTenantId()); + dictDataService.save(dictData); + + // 添加超级管理员 + User admin = new User(); + admin.setUsername("admin"); + admin.setNickname("超级管理员"); + admin.setPhone(phone); + admin.setEmail(email); + admin.setRealName(tenantName); + admin.setCompanyName(tenantName); + admin.setPassword(userService.encodePassword(password)); + admin.setTenantId(tenant.getTenantId()); + boolean result = userService.save(admin); + Integer superAdminUserId = admin.getUserId(); + // 创建角色 + if (result) { + Role role = new Role(); + role.setRoleName("超级管理员"); + role.setRoleCode("superAdmin"); + role.setComments("超级管理员"); + role.setTenantId(tenant.getTenantId()); + roleService.save(role); + + // 保存超级管理员角色ID + Integer superAdminRoleId = role.getRoleId(); + role.setRoleName("注册用户"); + role.setRoleCode("user"); + role.setComments("普通注册用户"); + roleService.save(role); + role.setRoleName("游客"); + role.setRoleCode("guest"); + role.setComments("用于未登录时的浏览权限"); + roleService.save(role); + Integer guestRoleId = role.getRoleId(); + + // 添加游客账号 + User www = new User(); + www.setTenantId(tenant.getTenantId()); + www.setUsername("www"); + www.setNickname("游客"); + www.setPassword(userService.encodePassword(CommonUtil.randomUUID16())); + userService.save(www); + + // 添加超管用户角色 + UserRole userRole = new UserRole(); + userRole.setUserId(superAdminUserId); + userRole.setRoleId(superAdminRoleId); + userRole.setTenantId(tenant.getTenantId()); + userRoleService.save(userRole); + + // 添加游客用户角色 + userRole.setUserId(www.getUserId()); + userRole.setRoleId(guestRoleId); + boolean resultUserRole = userRoleService.save(userRole); + + /// 添加系统菜单 + if (resultUserRole) { + Menu menu = new Menu(); + // 10.系统管理 + menu.setTitle("系统管理"); + menu.setParentId(0); + menu.setPath("/system"); + menu.setIcon("setting-outlined"); + menu.setSortNumber(10); + menu.setTenantId(tenant.getTenantId()); + menuService.save(menu); + Integer parentId = menu.getMenuId(); + menu.setParentId(menu.getMenuId()); + menu.setTitle("用户管理"); + menu.setPath("/system/user"); + menu.setComponent("/system/user"); + menu.setIcon("team-outlined"); + menu.setSortNumber(2); + menuService.save(menu); + Integer userParentId = menu.getMenuId(); + menu.setParentId(userParentId); + menu.setMenuType(1); + menu.setTitle("查询"); + menu.setIcon(""); + menu.setAuthority("sys:user:list"); + menuService.save(menu); + menu.setParentId(userParentId); + menu.setTitle("添加"); + menu.setAuthority("sys:user:save"); + menuService.save(menu); + menu.setParentId(userParentId); + menu.setTitle("修改"); + menu.setAuthority("sys:user:update"); + menuService.save(menu); + menu.setParentId(userParentId); + menu.setTitle("删除"); + menu.setAuthority("sys:user:remove"); + menuService.save(menu); + menu.setMenuType(0); + menu.setParentId(parentId); + menu.setTitle("角色管理"); + menu.setPath("/system/role"); + menu.setComponent("/system/role"); + menu.setIcon("idcard-outlined"); + menu.setAuthority(""); + menu.setSortNumber(3); + menuService.save(menu); + Integer roleParentId = menu.getMenuId(); + menu.setParentId(roleParentId); + menu.setMenuType(1); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menu.setTitle("查询"); + menu.setAuthority("sys:role:list"); + menuService.save(menu); + menu.setParentId(roleParentId); + menu.setTitle("添加"); + menu.setAuthority("sys:role:save"); + menuService.save(menu); + menu.setParentId(roleParentId); + menu.setTitle("修改"); + menu.setAuthority("sys:role:update"); + menuService.save(menu); + menu.setParentId(roleParentId); + menu.setTitle("删除"); + menu.setAuthority("sys:role:remove"); + menuService.save(menu); + menu.setMenuType(0); + menu.setParentId(parentId); + menu.setTitle("菜单管理"); + menu.setPath("/system/menu"); + menu.setComponent("/system/menu"); + menu.setIcon("appstore-outlined"); + menu.setAuthority(""); + menu.setSortNumber(1); + menuService.save(menu); + Integer menuParentId = menu.getMenuId(); + menu.setParentId(menuParentId); + menu.setMenuType(1); + menu.setTitle("查询"); + menu.setAuthority("sys:menu:list"); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menuService.save(menu); + menu.setParentId(menuParentId); + menu.setTitle("添加"); + menu.setAuthority("sys:menu:save"); + menuService.save(menu); + menu.setParentId(menuParentId); + menu.setTitle("修改"); + menu.setAuthority("sys:menu:update"); + menuService.save(menu); + menu.setParentId(menuParentId); + menu.setTitle("删除"); + menu.setAuthority("sys:menu:remove"); + menuService.save(menu); + menu.setMenuType(0); + menu.setParentId(parentId); + menu.setTitle("机构管理"); + menu.setPath("/system/organization"); + menu.setComponent("/system/organization"); + menu.setIcon("bank-outlined"); + menu.setAuthority(""); + menu.setSortNumber(5); + menuService.save(menu); + Integer orgParentId = menu.getMenuId(); + menu.setParentId(orgParentId); + menu.setMenuType(1); + menu.setPath(""); + menu.setComponent(""); + menu.setIcon(""); + menu.setTitle("查询"); + menu.setAuthority("sys:org:list"); + menuService.save(menu); + menu.setParentId(orgParentId); + menu.setTitle("添加"); + menu.setAuthority("sys:org:save"); + menuService.save(menu); + menu.setParentId(orgParentId); + menu.setTitle("修改"); + menu.setAuthority("sys:org:update"); + menuService.save(menu); + menu.setParentId(orgParentId); + menu.setTitle("删除"); + menu.setAuthority("sys:org:remove"); + menuService.save(menu); + menu.setMenuType(0); + menu.setParentId(parentId); + menu.setTitle("字典管理"); + menu.setPath("/system/dict"); + menu.setComponent("/system/dict"); + menu.setIcon("profile-outlined"); + menu.setAuthority(""); + menu.setSortNumber(4); + menuService.save(menu); + Integer dictParentId = menu.getMenuId(); + menu.setParentId(dictParentId); + menu.setMenuType(1); + menu.setTitle("查询"); + menu.setAuthority("sys:dict:list"); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menuService.save(menu); + menu.setParentId(dictParentId); + menu.setTitle("添加"); + menu.setAuthority("sys:dict:save"); + menuService.save(menu); + menu.setParentId(dictParentId); + menu.setTitle("修改"); + menu.setAuthority("sys:dict:update"); + menuService.save(menu); + menu.setParentId(dictParentId); + menu.setTitle("删除"); + menu.setAuthority("sys:dict:remove"); + menuService.save(menu); + menu.setMenuType(0); + menu.setParentId(parentId); + menu.setTitle("登录日志"); + menu.setPath("/system/login-record"); + menu.setComponent("/system/login-record"); + menu.setIcon("calendar-outlined"); + menu.setAuthority("sys:login-record:list"); + menu.setSortNumber(7); + menuService.save(menu); + menu.setParentId(parentId); + menu.setTitle("操作日志"); + menu.setPath("/system/operation-record"); + menu.setComponent("/system/operation-record"); + menu.setIcon("file-search-outlined"); + menu.setAuthority("sys:operation-record:list"); + menu.setSortNumber(8); + menuService.save(menu); + menu.setParentId(parentId); + menu.setTitle("文件管理"); + menu.setPath("/system/file"); + menu.setComponent("/system/file"); + menu.setIcon("folder-outlined"); + menu.setAuthority(""); + menu.setSortNumber(6); + menuService.save(menu); + Integer fileParentId = menu.getMenuId(); + menu.setParentId(fileParentId); + menu.setMenuType(1); + menu.setTitle("查看记录"); + menu.setPath(""); + menu.setComponent(""); + menu.setIcon(""); + menu.setAuthority("sys:file:list"); + menuService.save(menu); + menu.setParentId(fileParentId); + menu.setTitle("上传文件"); + menu.setAuthority("sys:file:upload"); + menuService.save(menu); + menu.setParentId(fileParentId); + menu.setTitle("修改文件"); + menu.setAuthority("sys:file:update"); + menuService.save(menu); + menu.setParentId(fileParentId); + menu.setTitle("删除文件"); + menu.setAuthority("sys:org:remove"); + menuService.save(menu); + menu.setMenuType(0); + menu.setParentId(parentId); + menu.setTitle("系统设置"); + menu.setPath("/system/setting"); + menu.setComponent("/system/setting"); + menu.setIcon("setting-outlined"); + menu.setAuthority("sys:setting:save"); + menu.setSortNumber(10); + menuService.save(menu); + menu.setParentId(parentId); + menu.setTitle("用户信息"); + menu.setPath("/system/user-info"); + menu.setComponent("/system/user-info"); + menu.setIcon("team-outlined"); + menu.setAuthority(""); + menu.setHide(1); + menu.setMenuType(0); + menu.setSortNumber(9); + menuService.save(menu); + Integer userInfoParentId = menu.getMenuId(); + menu.setParentId(userInfoParentId); + menu.setMenuType(1); + menu.setTitle("修改个人密码"); + menu.setAuthority("sys:auth:password"); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menuService.save(menu); + menu.setParentId(userInfoParentId); + menu.setTitle("修改个人资料"); + menu.setAuthority("sys:auth:user"); + menuService.save(menu); + // 1.控制台 + menu.setParentId(0); + menu.setTitle("控制台"); + menu.setPath("/dashboard"); + menu.setIcon("home-outlined"); + menu.setComponent(""); + menu.setAuthority(""); + menu.setSortNumber(1); + menu.setHide(0); + menu.setMenuType(0); + menuService.save(menu); + Integer dashboardParentId = menu.getMenuId(); + menu.setTitle("工作台"); + menu.setPath("/dashboard/workplace"); + menu.setComponent("/dashboard/workplace"); + menu.setIcon("DesktopOutlined"); + menu.setParentId(dashboardParentId); + menu.setMenuType(0); + menu.setHide(0); + menu.setSortNumber(0); + menuService.save(menu); + menu.setTitle("统计分析"); + menu.setPath("/dashboard/analysis"); + menu.setComponent("/dashboard/analysis"); + menu.setIcon("BarChartOutlined"); + menu.setParentId(dashboardParentId); + menu.setMenuType(0); + menu.setHide(0); + menu.setSortNumber(1); + menuService.save(menu); + // 2.办公协同 + // 7.内容管理 + menu.setParentId(0); + menu.setTitle("内容管理"); + menu.setPath("/cms"); + menu.setComponent(""); + menu.setAuthority(""); + menu.setIcon("FileSearchOutlined"); + menu.setHide(0); + menu.setMenuType(0); + menu.setSortNumber(7); + menuService.save(menu); + Integer contentParentId = menu.getMenuId(); + menu.setTitle("文章管理"); + menu.setPath("/cms/article"); + menu.setComponent("/cms/article"); + menu.setIcon("FileSearchOutlined"); + menu.setAuthority(""); + menu.setSortNumber(1); + menu.setMenuType(0); + menu.setParentId(contentParentId); + menuService.save(menu); + Integer articleParentId = menu.getMenuId(); + menu.setParentId(articleParentId); + menu.setMenuType(1); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menu.setTitle("查询"); + menu.setSortNumber(0); + menu.setAuthority("cms:article:list"); + menuService.save(menu); + menu.setTitle("添加"); + menu.setAuthority("cms:article:save"); + menuService.save(menu); + menu.setTitle("修改"); + menu.setAuthority("cms:article:update"); + menuService.save(menu); + menu.setTitle("删除"); + menu.setAuthority("cms:article:remove"); + menuService.save(menu); + menu.setTitle("文章分类"); + menu.setPath("/cms/category"); + menu.setComponent("/cms/category"); + menu.setIcon("ApartmentOutlined"); + menu.setAuthority(""); + menu.setMenuType(0); + menu.setSortNumber(2); + menu.setParentId(contentParentId); + menuService.save(menu); + Integer categoryParentId = menu.getMenuId(); + menu.setParentId(categoryParentId); + menu.setMenuType(1); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menu.setSortNumber(0); + menu.setTitle("查询"); + menu.setAuthority("cms:articleCategory:list"); + menuService.save(menu); + menu.setTitle("添加"); + menu.setAuthority("cms:articleCategory:save"); + menuService.save(menu); + menu.setTitle("修改"); + menu.setAuthority("cms:articleCategory:update"); + menuService.save(menu); + menu.setTitle("删除"); + menu.setAuthority("cms:articleCategory:remove"); + menuService.save(menu); + menu.setTitle("文档管理"); + menu.setPath("/cms/docs/:id"); + menu.setComponent("/cms/docs"); + menu.setIcon("ReadOutlined"); + menu.setAuthority(""); + menu.setSortNumber(3); + menu.setMenuType(0); + menu.setParentId(contentParentId); + menuService.save(menu); + Integer docsParentId = menu.getMenuId(); + menu.setParentId(docsParentId); + menu.setMenuType(1); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menu.setSortNumber(0); + menu.setTitle("查询"); + menu.setAuthority("cms:docs:list"); + menuService.save(menu); + menu.setTitle("添加"); + menu.setAuthority("cms:docs:save"); + menuService.save(menu); + menu.setTitle("修改"); + menu.setAuthority("cms:docs:update"); + menuService.save(menu); + menu.setTitle("删除"); + menu.setAuthority("cms:docs:remove"); + menuService.save(menu); + // 9.应用中心 +// menu.setParentId(0); +// menu.setTitle("应用中心"); +// menu.setPath("https://www.gxwebsoft.com/market"); +// menu.setIcon("AppstoreAddOutlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setSortNumber(11); +// menu.setMenuType(0); +// menuService.save(menu); + + // 个人中心 + menu.setParentId(0); + menu.setTitle("个人中心"); + menu.setPath("/user-center"); + menu.setIcon("UserOutlined"); + menu.setComponent(""); + menu.setAuthority(""); + menu.setMenuType(0); + menu.setHide(0); + menu.setSortNumber(99); + menuService.save(menu); + Integer userCenterParentId = menu.getMenuId(); + menu.setTitle("个人资料"); + menu.setPath("/user/profile"); + menu.setComponent("/user/profile"); + menu.setIcon("IdcardOutlined"); + menu.setParentId(userCenterParentId); + menu.setMenuType(0); + menu.setSortNumber(0); + menuService.save(menu); + Integer userProfileParentId = menu.getMenuId(); + menu.setParentId(userProfileParentId); + menu.setMenuType(1); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menu.setTitle("修改资料"); + menu.setSortNumber(0); + menu.setAuthority("sys:auth:user"); + menuService.save(menu); + menu.setTitle("修改密码"); + menu.setAuthority("sys:auth:password"); + menuService.save(menu); + + menu.setTitle("上传头像"); + menu.setAuthority("sys:file:upload"); + menuService.save(menu); + menu.setTitle("预览头像"); + menu.setAuthority("sys:file:list"); + menuService.save(menu); + menu.setTitle("保存头像"); + menu.setAuthority("sys:user:update"); + menuService.save(menu); + menu.setTitle("我的消息"); + menu.setPath("/user/notice"); + menu.setComponent("/user/notice"); + menu.setIcon("sound-outlined"); + menu.setParentId(userCenterParentId); + menu.setMenuType(0); + menuService.save(menu); + Integer userNoticeParentId = menu.getMenuId(); + menu.setParentId(userNoticeParentId); + menu.setTitle("列表"); + menu.setAuthority("oa:notice:list"); + menu.setSortNumber(0); + menu.setMenuType(1); + menu.setIcon(""); + menu.setPath(""); + menu.setComponent(""); + menuService.save(menu); + menu.setTitle("添加"); + menu.setAuthority("oa:notice:save"); + menuService.save(menu); + menu.setTitle("编辑"); + menu.setAuthority("oa:notice:update"); + menuService.save(menu); + menu.setTitle("删除"); + menu.setAuthority("oa:notice:remove"); + menuService.save(menu); + menu.setParentId(userCenterParentId); + menu.setTitle("用户注册"); + menu.setAuthority("sys:user:save"); + menuService.save(menu); + menu.setTitle("字典查询"); + menu.setAuthority("sys:dict:list"); + + boolean resultMenu = menuService.save(menu); + // 添加菜单ID到超级管理员所属角色ID + if (resultMenu) { + saveRedis(tenant); + } + } + } + // 发送邮件通知 + String title = "恭喜!您的企业账号已注册成功"; + String content = "企业名称:".concat(tenantName) + "\r\n企业ID:".concat(tenant.getTenantId().toString()).concat("\r\n管理员账号密码:").concat("admin/").concat(password); + String adminUrl = "\r\n后台管理地址:".concat("https://admin.gxwebsoft.com"); +// String developer = "\r\n开发者账号:".concat(phone).concat("\r\n密码:".concat(password)); + sendEmail(title,content.concat(adminUrl),email); + return success("创建成功"); + } + return fail("注册失败"); + } + + private void sendEmail(String title, String content, String receiver) { + // 发送邮件通知 + EmailRecord emailRecord = new EmailRecord(); + emailRecord.setTitle(title); + emailRecord.setContent(content); + emailRecord.setReceiver(receiver); + emailRecord.setCreateUserId(42); + emailRecordService.sendTextEmail(title,content,receiver.split(",")); + emailRecordService.save(emailRecord); + } + + @ApiOperation("检查用户是否存在") + @GetMapping("/existence") + public ApiResult existence(ExistenceParam param) { + if (param.isExistence(userService, User::getUserId)) { + return success("已存在", param.getValue()); + } + return fail("不存在"); + } + + @ApiOperation("获取应用信息") + @GetMapping("/appInfo") + public ApiResult appInfo() { + // 验证签名 + isCheckSign(); + App appInfo = appService.getById(getAppId()); + User user = userService.getByUsername("www", 10052); + System.out.println("user = " + user); + return success(appInfo); + } + + @ApiOperation("获取登录用户信息") + @GetMapping("/auth/user") + public ApiResult userInfo() { + // 验证签名 + isCheckSign(); + return success(userService.getByIdRel(getLoginUserId())); + } + + @ApiOperation("获取登录用户菜单") + @GetMapping("/auth/menu") + public ApiResult> userMenu() { + // 验证签名 + isCheckSign(); + List menus = roleMenuService.listMenuByUserId(getLoginUserId(), Menu.TYPE_MENU); + return success(CommonUtil.toTreeData(menus, 0, Menu::getParentId, Menu::getMenuId, Menu::setChildren)); + } + + @PreAuthorize("hasAuthority('sys:auth:user')") + @OperationLog + @ApiOperation("修改个人信息") + @PutMapping("/auth/user") + public ApiResult updateInfo(@RequestBody User user) { + // 验证签名 + isCheckSign(); + user.setUserId(getLoginUserId()); + // 不能修改的字段 + user.setUsername(null); + user.setPassword(null); + user.setEmailVerified(null); + user.setOrganizationId(null); + user.setStatus(null); + + if (userService.updateById(user)) { + return success(userService.getByIdRel(user.getUserId())); + } + return fail("保存失败", null); + } + + @PreAuthorize("hasAuthority('sys:auth:password')") + @OperationLog + @ApiOperation("修改自己密码") + @PutMapping("/auth/password") + public ApiResult updatePassword(@RequestBody UpdatePasswordParam param) { + // 验证签名 + isCheckSign(); + if (StrUtil.hasBlank(param.getOldPassword(), param.getPassword())) { + return fail("参数不能为空"); + } + Integer userId = getLoginUserId(); + if (userId == null) { + return fail("未登录"); + } + if (!userService.comparePassword(userService.getById(userId).getPassword(), param.getOldPassword())) { + return fail("原密码输入不正确"); + } + User user = new User(); + user.setUserId(userId); + user.setPassword(userService.encodePassword(param.getPassword())); + + if (userService.updateById(user)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("图形验证码") + @GetMapping("/captcha") + public ApiResult captcha() { + SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5); + // 验证签名 + isCheckSign(); + return success(new CaptchaResult(specCaptcha.toBase64(), specCaptcha.text().toLowerCase())); + } + + @ApiOperation("短信验证码") + @PostMapping("/sendSmsCaptcha") + public ApiResult sendSmsCaptcha(@RequestBody SmsCaptchaParam param) { + // 验证签名 + isCheckSign(); + DefaultProfile profile = DefaultProfile.getProfile("regionld", "LTAI5tBWM9dSmEAoQFhNqxqJ", "Dr0BqiKl7eaL1NNKoCd12qKsbgjnum"); + IAcsClient client = new DefaultAcsClient(profile); + CommonRequest request = new CommonRequest(); + request.setSysMethod(MethodType.POST); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("SendSms"); + request.putQueryParameter("RegionId", "cn-hangzhou"); + request.putQueryParameter("PhoneNumbers", param.getPhone()); + request.putQueryParameter("SignName", "南宁网宿科技"); + request.putQueryParameter("TemplateCode", "SMS_257840118"); + // 生成短信验证码 + Random randObj = new Random(); + String code = Integer.toString(100000 + randObj.nextInt(900000)); + request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}"); + try { + CommonResponse response = client.getCommonResponse(request); + String json = response.getData(); + Gson g = new Gson(); + HashMap result = g.fromJson(json, HashMap.class); + if("OK".equals(result.get("Message"))) { + cacheClient.set(param.getPhone(),code,5L,TimeUnit.MINUTES); + return success("发送成功",result.get("Message")); + }else{ + return fail("发送失败"); + } + } catch (ServerException e) { + e.printStackTrace(); + } catch (ClientException e) { + e.printStackTrace(); + } + return fail("发送失败"); + } + + @OperationLog + @ApiOperation("重置密码") + @PutMapping("/password") + public ApiResult resetPassword(@RequestBody User user) { + // 验证签名 + isCheckSign(); + if (user.getPassword() == null) { + return fail("参数不正确"); + } + if (user.getCode() == null) { + return fail("验证码不能为空"); + } + // 短信验证码校验 + String code = cacheClient.get(user.getPhone(), String.class); + if (!StrUtil.equals(code,user.getCode())) { + return fail("验证码不正确"); + } + + user.setUserId(getLoginUserId()); + user.setPassword(userService.encodePassword(user.getPassword())); + if (userService.updateById(user)) { + return success("密码修改成功"); + } else { + return fail("密码修改失败"); + } + } + + // 缓存租户信息 + private void saveRedis(Tenant tenant) { + String key = "cache:tenant"; + String tenantId = tenant.getTenantId().toString(); + if (StrUtil.isEmpty(tenant.getTenantCode())) { + tenant.setTenantCode(CommonUtil.randomUUID16()); + } + String data = JSONUtil.toJSONString(tenant); + stringRedisTemplate.opsForHash().put(key,tenantId, data); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenMarketController.java b/src/main/java/com/gxwebsoft/open/controller/OpenMarketController.java new file mode 100644 index 0000000..8deab0f --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenMarketController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.StrUtil; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.service.TenantService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.oa.entity.App; +import com.gxwebsoft.oa.param.AppParam; +import com.gxwebsoft.oa.service.AppService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import static com.gxwebsoft.common.core.constants.RedisConstants.*; + +/** + * 应用控制器 + * + * @author WebSoft + * @since 2022-11-18 13:55:29 + */ +@Api(tags = "应用市场") +@RestController +@RequestMapping("/api/open/market") +public class OpenMarketController extends BaseController { + @Resource + private AppService appService; + @Resource + private UserService userService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private TenantService tenantService; + @Resource + private CacheClient cacheClient; + + @ApiOperation("分页查询应用") + @GetMapping("/page") + public ApiResult> page(AppParam param) { + // 验证签名 +// isCheckSign(); +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(appService.page(page, page.getWrapper())); + + // 使用关联查询 + param.setSearch(1); + return success(appService.pageRel(param)); + } + + @ApiOperation("查询全部应用") + @GetMapping() + public ApiResult> list(AppParam param) { + // 验证签名 + isCheckSign(); +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(appService.list(page.getOrderWrapper())); + + // 使用关联查询 + param.setSearch(1); + return success(appService.listRel(param)); + } + + @ApiOperation("根据id查询应用") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(appService.getById(id)); + // 验证签名 + isCheckSign(); + return success(appService.getByIdRel(id)); + } + + @OperationLog + @ApiOperation("排行榜") + @GetMapping("/ranking") + public ApiResult ranking(UserParam param) { + // 使用关联查询 + Set reverseRange = cacheClient.reverseRange(USER_RANKING_BY_APPS, 0, 2); + List list = new ArrayList<>(reverseRange.size()); + if(reverseRange.size() == 0) { + userService.listRanking(param); + } + reverseRange.forEach(v -> { + Double score = cacheClient.score(USER_RANKING_BY_APPS, v); + User user = userService.getById(v); + user.setApps(score); + list.add(user); + }); + return success("操作成功",list); + } + + @ApiOperation("搜索历史") + @GetMapping("/search-history") + public ApiResult searchHistory(String keyword, Long number) { + // 验证签名 + isCheckSign(); + String key = cacheClient.key(SEARCH_HISTORY,getLoginUserId()); + if(StrUtil.isNotBlank(keyword)){ + cacheClient.leftPush(key,keyword); + } + // 超出100裁剪 + Long size = cacheClient.listSize(key); + if (number == null) { + number = 9L; + } + return success("操作成功",cacheClient.listRange(key,0L,number)); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenMerchantController.java b/src/main/java/com/gxwebsoft/open/controller/OpenMerchantController.java new file mode 100644 index 0000000..36e5b0a --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenMerchantController.java @@ -0,0 +1,180 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.param.MerchantParam; +import com.gxwebsoft.shop.service.MerchantService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +import static com.gxwebsoft.common.core.constants.RedisConstants.MERCHANT_GEO_KEY; +import static com.gxwebsoft.common.core.constants.RedisConstants.MERCHANT_KEY; + +/** + * 商户管理控制器 + * + * @author 科技小王子 + * @since 2022-11-30 15:10:54 + */ +@Api(tags = "商户管理管理") +@RestController +@RequestMapping("/api/open/merchant") +public class OpenMerchantController extends BaseController { + @Resource + private MerchantService merchantService; + @Resource + private CacheClient cacheClient; + + @ApiOperation("分页查询商户管理") + @GetMapping("/page") + public ApiResult> page(MerchantParam param) { + // 验证签名 + isCheckSign(); + // 搜索条件 + if (getMerchantCode() != null) { + param.setMerchantCode(getMerchantCode()); + } + // 使用关联查询 + return success(merchantService.pageRel(param)); + } + + @ApiOperation("查询全部商户管理") + @GetMapping() + public ApiResult> list(MerchantParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + // 使用关联查询 + return success(merchantService.listRel(param)); + } + + @ApiOperation("根据id查询商户管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + return success(merchantService.getByIdRel(id)); + } + + @ApiOperation("添加商户管理") + @PostMapping() + public ApiResult save(@RequestBody Merchant merchant) { + // 验证签名 + isCheckSign(); + if (merchantService.count(new LambdaQueryWrapper() + .eq(Merchant::getMerchantCode, merchant.getMerchantCode())) > 0) { + return fail("商户编号已存在"); + } + if (merchantService.save(merchant)) { + // 添加缓存 + String lngAndLat = merchant.getLngAndLat(); + String[] split = lngAndLat.split(","); + Double x = Double.parseDouble(split[0]); + Double y = Double.parseDouble(split[1]); + String id = merchant.getMerchantId().toString(); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.set(MERCHANT_KEY.concat(":").concat(merchant.getMerchantId().toString()),merchant); + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改商户管理") + @PutMapping() + public ApiResult update(@RequestBody Merchant merchant) { + // 验证签名 + isCheckSign(); + // 超级管理员不能设为店主 + if(getLoginUser().getUserId().equals(merchant.getMerchantOwner())){ + return fail("超级管理员不能绑定为负责人!"); + } + if (merchantService.updateById(merchant)) { + // 添加缓存 + String lngAndLat = merchant.getLngAndLat(); + String[] split = lngAndLat.split(","); + Double x = Double.parseDouble(split[0]); + Double y = Double.parseDouble(split[1]); + String id = merchant.getMerchantId().toString(); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.set(MERCHANT_KEY.concat(":").concat(merchant.getMerchantId().toString()),merchant); + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除商户管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + if (merchantService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加商户管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + // 验证签名 + isCheckSign(); + if (merchantService.saveBatch(list)) { + list.forEach(d -> { + // 添加缓存 + String lngAndLat = d.getLngAndLat(); + String[] split = lngAndLat.split(","); + Double x = Double.parseDouble(split[0]); + Double y = Double.parseDouble(split[1]); + String id = d.getMerchantId().toString(); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.set(MERCHANT_KEY.concat(":").concat(d.getMerchantId().toString()),d); + }); + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改商户管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + // 验证签名 + isCheckSign(); + if (batchParam.update(merchantService, "merchant_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除商户管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + // 验证签名 + isCheckSign(); + if (merchantService.removeByIds(ids)) { + // 删除缓存 + ids.forEach(id -> { + cacheClient.geoRemove(MERCHANT_GEO_KEY,id); + }); + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("根据定位查询附近的商户列表") + @PostMapping("/getListByGeo") + public ApiResult> getListByGeo(@RequestBody MerchantParam param) { + // 验证签名 + isCheckSign(); + return success(merchantService.listByGeo(param)); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenNoticeController.java b/src/main/java/com/gxwebsoft/open/controller/OpenNoticeController.java new file mode 100644 index 0000000..58dcffb --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenNoticeController.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.Notice; +import com.gxwebsoft.oa.param.NoticeParam; +import com.gxwebsoft.oa.service.NoticeService; +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-03-22 14:07:26 + */ +@Api(tags = "消息记录表管理") +@RestController +@RequestMapping("/api/open/notice") +public class OpenNoticeController extends BaseController { + @Resource + private NoticeService noticeService; + + @ApiOperation("分页查询消息记录表") + @GetMapping("/page") + public ApiResult> page(NoticeParam param) { + // 验证签名 +// isCheckSign(); + // 使用关联查询 + param.setUserId(getLoginUserId()); + return success(noticeService.pageRel(param)); + } + + @ApiOperation("查询全部消息记录表") + @GetMapping() + public ApiResult> list(NoticeParam param) { + // 验证签名 +// isCheckSign(); + // 使用关联查询 + param.setUserId(getLoginUserId()); + return success(noticeService.listRel(param)); + } + + @ApiOperation("根据id查询消息记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 +// isCheckSign(); + return success(noticeService.getById(id)); + // 使用关联查询 + //return success(noticeService.getByIdRel(id)); + } + + @ApiOperation("添加消息记录表") + @PostMapping() + public ApiResult save(@RequestBody Notice notice) { + // 验证签名 +// isCheckSign(); + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + notice.setUserId(loginUser.getUserId()); + } + if (noticeService.save(notice)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("修改消息记录表") + @PutMapping() + public ApiResult update(@RequestBody Notice notice) { + // 验证签名 +// isCheckSign(); + if (noticeService.updateById(notice)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除消息记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (noticeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加消息记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + // 验证签名 +// isCheckSign(); + if (noticeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改消息记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + // 验证签名 +// isCheckSign(); + if (batchParam.update(noticeService, "notice_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除消息记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + // 验证签名 +// isCheckSign(); + if (noticeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenOrderController.java b/src/main/java/com/gxwebsoft/open/controller/OpenOrderController.java new file mode 100644 index 0000000..cef7907 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenOrderController.java @@ -0,0 +1,323 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.utils.BcUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.entity.UserBalanceLog; +import com.gxwebsoft.shop.mapper.OrderMapper; +import com.gxwebsoft.shop.param.CartParam; +import com.gxwebsoft.shop.param.OrderGoodsParam; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import com.gxwebsoft.shop.service.UserBalanceLogService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_REFUND; +import static com.gxwebsoft.common.core.constants.OrderConstants.*; + +/** + * 订单记录表控制器 + * + * @author WebSoft + * @since 2022-11-16 11:25:58 + */ +@Api(tags = "订单记录表管理") +@RestController +@RequestMapping("/api/open/order") +public class OpenOrderController extends BaseController { + @Resource + private BcUtil bcUtil; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private OrderMapper orderMapper; + @Resource + private UserService userService; + @Resource + private UserBalanceLogService userBalanceLogService; + + @ApiOperation("查询全部订单记录表") + @GetMapping() + public ApiResult> list(OrderParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + return success(orderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:order:list')") + @ApiOperation("根据id查询订单记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + return success(orderService.getById(id)); + // 使用关联查询 + //return success(orderService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:order:list')") + @ApiOperation("查询报餐明细") + @GetMapping("/getMyOrder") + public ApiResult getMyOrder(CartParam cartParam) { + Integer userId = 0; + if(cartParam.getAgentUserId() != null){ + userId = cartParam.getAgentUserId(); + }else{ + userId = getLoginUserId(); + } + System.out.println("cartParam = " + cartParam); + System.out.println("userId = " + userId); + // 验证签名 + isCheckSign(); + // 报餐明细(查询昨天这个时间点后下的订单) + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper + .eq(Order::getUserId,userId) + .eq(Order::getPayStatus,PAY_STATUS_SUCCESS) + .eq(Order::getOrderStatus,ORDER_STATUS_DOING) + .eq(Order::getDeleted,0) + .eq(Order::getIsTemporary,0) + .eq(Order::getDeliveryTime,cartParam.getDeliveryTime()); + Order order = orderService.getOne(lambdaQueryWrapper,false); + // 查询订单商品 + if(order != null){ + OrderGoodsParam param = new OrderGoodsParam(); + param.setOrderId(order.getOrderId()); + // 是否按餐段查询 + if(cartParam.getIsPeriod() != null){ + param.setCategoryId(bcUtil.categoryId); + } + PageParam page = new PageParam<>(param); + page.setDefaultOrder("gear asc, sort_number asc, create_time desc"); + order.setGoodsList(orderGoodsService.list(page.getOrderWrapper())); + } + // 是否允许临时报餐 + if(cartParam.getHasTemporary() != null){ + final OrderParam orderParam = new OrderParam(); + orderParam.setDeliveryTime(cartParam.getDeliveryTime()); + orderParam.setUserId(userId); + orderParam.setPayStatus(PAY_STATUS_SUCCESS); + final List list = orderService.listRel(orderParam); +// System.out.println("list1 = " + list); + if(list.size() > 0){ + final Order order1 = list.get(0); + final Integer orderId = order1.getOrderId(); + final OrderGoodsParam orderGoodsParam = new OrderGoodsParam(); + orderGoodsParam.setOrderId(orderId); + orderGoodsParam.setCategoryId(cartParam.getCategoryId()); +// System.out.println("orderGoodsParam = " + orderGoodsParam); + final List goodsList1 = orderGoodsService.listRel(orderGoodsParam); +// System.out.println("goodsList1 = " + goodsList1); + if(goodsList1.size() > 0){ + order1.setGoodsList(goodsList1); + return fail("请勿重复报餐",order1); + } + } + } + return success(order); + } + + @ApiOperation("查询今日当前餐段菜品") + @PostMapping("/currentOrderGoods") + public ApiResult> currentOrderGoods(OrderGoodsParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + param.setCategoryId(bcUtil.categoryId); + return success(orderGoodsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:order:list')") + @ApiOperation("查询核销订单明细") + @GetMapping("/getReceiptOrder") + public ApiResult getReceiptOrder(CartParam cartParam) { + // 验证签名 + isCheckSign(); + Integer userId = 0; + + // 核销自己(查询今天他下的订单) + if(cartParam.getUserId() != null){ + userId = cartParam.getUserId(); + OrderParam orderParam = new OrderParam(); + orderParam.setUserId(userId); + orderParam.setPayStatus(PAY_STATUS_SUCCESS); + orderParam.setOrderStatus(ORDER_STATUS_DOING); + orderParam.setDeliveryTime(cartParam.getDeliveryTime()); + List list = orderService.listRel(orderParam); + // 查询订单商品 + list.forEach(d -> { + OrderGoodsParam param = new OrderGoodsParam(); + param.setOrderId(d.getOrderId()); + d.setGoodsList(orderGoodsService.listRel(param)); + }); + return success(list); + } + + // 代核销模式 + if(cartParam.getDealerId() != null){ + userId = cartParam.getDealerId(); + return success(userId); + } + return fail("找不到报餐数据",null); + } + + @PreAuthorize("hasAuthority('shop:order:save')") + @ApiOperation("添加订单记录表") + @PostMapping() + public ApiResult save(@RequestBody Order order) { + // 验证签名 + isCheckSign(); + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + order.setUserId(loginUser.getUserId()); + } + if (orderService.save(order)) { + return success("添加成功",order); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:order:update')") + @ApiOperation("修改订单记录表") + @PutMapping() + public ApiResult update(@RequestBody Order order) { + // 验证签名 + isCheckSign(); + if (orderService.updateById(order)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("取消订单") + @PostMapping("/cancel") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult cancel(@RequestBody Order order) { + // 验证签名 + isCheckSign(); + if (order.getOrderId() == null) { + return fail("订单不存在!"); + } + // 取消报餐截止时间 + Date date = DateUtil.date(); + int hours = date.getHours(); + System.out.println("hours = " + hours); + if(hours > 19){ + return fail("每天晚上8点后截止取消报餐"); + } + order.setOrderStatus(ORDER_STATUS_CANCEL); + if (orderService.updateById(order)) { + final Order orderInfo = orderService.getById(order.getOrderId()); + // 退款 + User user = userService.getById(orderInfo.getUserId()); + System.out.println("user = " + user); + BigDecimal balance = user.getBalance().add(orderInfo.getPayPrice()); + user.setBalance(balance); + userService.updateById(user); + // 记录余额明细 + UserBalanceLog userBalanceLog = new UserBalanceLog(); + userBalanceLog.setUserId(orderInfo.getUserId()); + userBalanceLog.setScene(BALANCE_REFUND); + userBalanceLog.setMoney(orderInfo.getPayPrice()); + userBalanceLog.setBalance(balance); + userBalanceLog.setComments(orderInfo.getOrderNo().toString()); + userBalanceLog.setMerchantCode(orderInfo.getMerchantCode()); + userBalanceLogService.save(userBalanceLog); + return success("订单取消成功",orderInfo); + } + return fail("订单取消失败"); + } + + @ApiOperation("删除订单记录表") + @GetMapping("/remove/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + if (orderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:order:save')") + @ApiOperation("批量添加订单记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + // 验证签名 + isCheckSign(); + if (orderService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:order:update')") + @ApiOperation("批量修改订单记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + // 验证签名 + isCheckSign(); + if (batchParam.update(orderService, "order_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:order:remove')") + @ApiOperation("批量删除订单记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + // 验证签名 + isCheckSign(); + if (orderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("支付成功") + @PostMapping("/setPayStatus") + public ApiResult setPayStatus(@RequestBody Order order){ + // 验证签名 + isCheckSign(); + if (orderService.updateById(order)) { + return success("设置成功"); + } + return fail("设置失败"); + } + + @ApiOperation("核销二维码") + @PutMapping("/verification") + public ApiResult verification(@RequestBody Order order) { + // 验证签名 + isCheckSign(); + order.setOrderStatus(ORDER_STATUS_COMPLETED); + order.setReceiptTime(DateUtil.date()); + if (orderService.updateById(order)) { + return success("核销成功"); + } + return fail("核销失败"); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenOrderGoodsController.java b/src/main/java/com/gxwebsoft/open/controller/OpenOrderGoodsController.java new file mode 100644 index 0000000..c430e2e --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenOrderGoodsController.java @@ -0,0 +1,202 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.entity.UserBalanceLog; +import com.gxwebsoft.shop.param.OrderGoodsParam; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import com.gxwebsoft.shop.service.UserBalanceLogService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_REFUND; +import static com.gxwebsoft.common.core.constants.OrderConstants.ORDER_STATUS_CANCEL; + +/** + * 订单商品记录表控制器 + * + * @author 科技小王子 + * @since 2022-12-09 17:15:31 + */ +@Api(tags = "订单商品记录表管理") +@RestController +@RequestMapping("/api/open/order-goods") +public class OpenOrderGoodsController extends BaseController { + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private UserService userService; + @Resource + private UserBalanceLogService userBalanceLogService; + @Resource + private OrderService orderService; + + @PreAuthorize("hasAuthority('shop:orderGoods:list')") + @OperationLog + @ApiOperation("分页查询订单商品记录表") + @GetMapping("/page") + public ApiResult> page(OrderGoodsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("gear asc, sort_number asc, create_time desc"); + return success(orderGoodsService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(orderGoodsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:list')") + @OperationLog + @ApiOperation("查询全部订单商品记录表") + @GetMapping() + public ApiResult> list(OrderGoodsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("gear asc, sort_number asc, create_time desc"); + return success(orderGoodsService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(orderGoodsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:list')") + @OperationLog + @ApiOperation("根据id查询订单商品记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(orderGoodsService.getById(id)); + // 使用关联查询 + //return success(orderGoodsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:save')") + @OperationLog + @ApiOperation("添加订单商品记录表") + @PostMapping() + public ApiResult save(@RequestBody OrderGoods orderGoods) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + orderGoods.setUserId(loginUser.getUserId()); + orderGoods.setMerchantCode(getMerchantCode()); + } + if (orderGoodsService.save(orderGoods)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:update')") + @OperationLog + @ApiOperation("修改订单商品记录表") + @PutMapping() + public ApiResult update(@RequestBody OrderGoods orderGoods) { + if (orderGoodsService.updateById(orderGoods)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:remove')") + @OperationLog + @ApiOperation("删除订单商品记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (orderGoodsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:save')") + @OperationLog + @ApiOperation("批量添加订单商品记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (orderGoodsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:update')") + @OperationLog + @ApiOperation("批量修改订单商品记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(orderGoodsService, "order_goods_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:remove')") + @OperationLog + @ApiOperation("批量删除订单商品记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (orderGoodsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:remove')") + @ApiOperation("取消订单商品") + @PostMapping("/cancel") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult cancel(@RequestBody OrderGoods orderGoods) { + // 验证签名 + isCheckSign(); + if (orderGoods.getOrderGoodsId() == null) { + return fail("菜品不存在!"); + } +// System.out.println("orderGoods = " + orderGoods); + final Order byId = orderService.getById(orderGoods.getOrderId()); + // 取消报餐截止时间 + orderGoodsService.removeById(orderGoods); +// System.out.println("orderGoods = " + orderGoods); + // 退款 + User user = userService.getById(byId.getUserId()); +// System.out.println("user = " + user); +// System.out.println("orderGoods.getGoodsPrice() = " + orderGoods.getGoodsPrice()); + BigDecimal balance = user.getBalance().add(orderGoods.getGoodsPrice()); + user.setBalance(balance); + userService.updateById(user); + // 记录余额明细 + UserBalanceLog userBalanceLog = new UserBalanceLog(); + userBalanceLog.setUserId(byId.getUserId()); + userBalanceLog.setScene(BALANCE_REFUND); + userBalanceLog.setMoney(orderGoods.getGoodsPrice()); + userBalanceLog.setBalance(balance); + userBalanceLog.setComments(orderGoods.getOrderId().toString()); + userBalanceLogService.save(userBalanceLog); + final int count = orderGoodsService.count(new LambdaUpdateWrapper().eq(OrderGoods::getOrderId, orderGoods.getOrderId()).gt(OrderGoods::getTotalNum,0)); +// System.out.println("count = " + count); + // 更新订单金额 + System.out.println("byId = " + byId); + if (!byId.getTotalPrice().equals(0)) { + byId.setTotalPrice(byId.getTotalPrice().subtract(orderGoods.getGoodsPrice())); + orderService.updateById(byId); + } + + // 无菜品就把订单删除 + if(count == 0){ + final Order order = new Order(); + order.setOrderId(orderGoods.getOrderId()); + order.setOrderStatus(ORDER_STATUS_CANCEL); + orderService.removeById(orderGoods.getOrderId()); + } + return success("菜品取消成功"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenSettingController.java b/src/main/java/com/gxwebsoft/open/controller/OpenSettingController.java new file mode 100644 index 0000000..6ae17f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenSettingController.java @@ -0,0 +1,39 @@ +package com.gxwebsoft.open.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.Setting; +import com.gxwebsoft.common.system.service.SettingService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * 系统设置控制器 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Api(tags = "系统设置管理") +@RestController +@RequestMapping("/api/open/system/setting") +public class OpenSettingController extends BaseController { + @Resource + private SettingService settingService; + @Resource + private CacheClient cacheClient; + + @ApiOperation("根据key查询系统设置") + @GetMapping("/{settingKey}") + public ApiResult get(@PathVariable("settingKey") String settingKey) { + final Setting data = settingService.getData(settingKey); + return success(settingService.getData(settingKey)); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenTaskController.java b/src/main/java/com/gxwebsoft/open/controller/OpenTaskController.java new file mode 100644 index 0000000..1a149a4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenTaskController.java @@ -0,0 +1,190 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.entity.TaskUser; +import com.gxwebsoft.oa.param.TaskParam; +import com.gxwebsoft.oa.service.AppService; +import com.gxwebsoft.oa.service.TaskRecordService; +import com.gxwebsoft.oa.service.TaskService; +import com.gxwebsoft.oa.service.TaskUserService; +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.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 工单记录表控制器 + * + * @author WebSoft + * @since 2022-11-16 11:21:43 + */ +@Api(tags = "工单记录表管理") +@RestController +@RequestMapping("/api/open/oa/task") +public class OpenTaskController extends BaseController { + @Resource + private TaskService taskService; + @Resource + private TaskRecordService taskRecordService; + @Resource + private TaskUserService taskUserService; + @Resource + private AppService appService; + + @ApiOperation("分页查询工单记录表") + @GetMapping("/page") + public ApiResult> page(TaskParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + final User loginUser = getLoginUser(); + final Integer type = loginUser.getType(); + // 如果是开发者账号则按受理人查询 + if (type.equals(6)) { + param.setCommander(loginUser.getUserId()); + }else{ + param.setPromoter(getLoginUserId()); + } + + return success(taskService.pageRel(param)); + } + + @ApiOperation("查询全部工单记录表") + @GetMapping() + public ApiResult> list(TaskParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(taskService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(taskService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:task:list')") + @OperationLog + @ApiOperation("根据id查询工单记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + Task task = taskService.getByIdRel(id); + task.setAppInfo(appService.getById(task.getAppId())); + return success(task); + } + + @ApiOperation("添加工单记录表") + @PostMapping() + public ApiResult save(@RequestBody Task task) { + // 验证签名 + isCheckSign(); + // 当前登录用户id + Integer loginUserId = getLoginUserId(); + task.setUserId(loginUserId); + task.setPromoter(loginUserId); + task.setComments(StrUtil.sub(task.getContent(),0,200)); + task.setLastReadUser(loginUserId); + // 创建工单 + if (taskService.save(task)) { + // 添加聊天内容明细 + TaskRecord taskRecord = new TaskRecord(); + taskRecord.setUserId(loginUserId); + taskRecord.setContent(task.getContent()); + taskRecord.setTaskId(task.getTaskId()); + taskRecord.setFiles(task.getFiles()); + taskRecordService.save(taskRecord); + // 添加工单成员 + TaskUser taskUser = new TaskUser(); + taskUser.setUserId(loginUserId); + taskUser.setTaskId(task.getTaskId()); + taskUserService.save(taskUser); + return success("创建成功"); + } + return fail("创建失败"); + } + + @ApiOperation("修改工单记录表") + @PutMapping() + public ApiResult update(@RequestBody Task task) { + // 验证签名 + isCheckSign(); + if (taskService.updateById(task)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除工单记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + if (taskService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加工单记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + // 验证签名 + isCheckSign(); + if (taskService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改工单记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + // 验证签名 + isCheckSign(); + if (batchParam.update(taskService, "task_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除工单记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + // 验证签名 + isCheckSign(); + if (taskService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("统计信息") + @GetMapping("/count") + public ApiResult count(){ + // 验证签名 + isCheckSign(); + User loginUser = getLoginUser(); + ArrayList countNum = taskService.getCountNum(loginUser,null); + return success("操作成功",countNum); + } + + // 查询用户的工单ID + private List getTaskIds(){ + final Integer loginUserId = getLoginUserId(); + return taskUserService.list(new LambdaQueryWrapper().eq(TaskUser::getUserId, loginUserId)) + .stream().map(TaskUser::getTaskId).collect(Collectors.toList()); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenTaskRecordController.java b/src/main/java/com/gxwebsoft/open/controller/OpenTaskRecordController.java new file mode 100644 index 0000000..6dff9ae --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenTaskRecordController.java @@ -0,0 +1,148 @@ +package com.gxwebsoft.open.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.oa.entity.Task; +import com.gxwebsoft.oa.entity.TaskRecord; +import com.gxwebsoft.oa.param.TaskRecordParam; +import com.gxwebsoft.oa.service.TaskRecordService; +import com.gxwebsoft.oa.service.TaskService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +import static com.gxwebsoft.oa.constants.TaskConstants.PROGRESS2; +import static com.gxwebsoft.oa.constants.TaskConstants.PROGRESS3; + +/** + * 工单回复记录表控制器 + * + * @author 科技小王子 + * @since 2023-03-05 00:52:21 + */ +@Api(tags = "工单回复记录表管理") +@RestController +@RequestMapping("/api/open/oa/task-record") +public class OpenTaskRecordController extends BaseController { + @Resource + private TaskService taskService; + @Resource + private TaskRecordService taskRecordService; + + @ApiOperation("分页查询工单回复记录表") + @GetMapping("/page") + public ApiResult> page(TaskRecordParam param) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + return success(taskRecordService.pageRel(param)); + } + + @ApiOperation("查询全部工单回复记录表") + @GetMapping() + public ApiResult> list(TaskRecordParam param) { + // 验证签名 + isCheckSign(); + // 更新查阅状态 + Task task = taskService.getById(param.getTaskId()); + if(!getLoginUserId().equals(task.getLastReadUser())){ + task.setIsRead(1); + } + taskService.updateById(task); + // 使用关联查询 + return success(taskRecordService.listRel(param)); + } + + @ApiOperation("根据id查询工单回复记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + // 使用关联查询 + return success(taskRecordService.getByIdRel(id)); + } + + @ApiOperation("添加工单回复记录表") + @PostMapping() + public ApiResult save(@RequestBody TaskRecord taskRecord) { + // 验证签名 + isCheckSign(); + taskRecord.setUserId(getLoginUserId()); + int count = taskRecordService.count(new LambdaQueryWrapper().eq(TaskRecord::getTaskId,taskRecord.getTaskId())); + if(count > 100){ + return fail("回复数超过最大限制"); + } + if (taskRecordService.save(taskRecord)) { + // 变更工单状态 + Task task = taskService.getById(taskRecord.getTaskId()); + task.setProgress(PROGRESS2); + task.setIsRead(0); + task.setLastReadUser(getLoginUserId()); + taskService.updateById(task); + return success("提交成功"); + } + return fail("提交失败"); + } + + @ApiOperation("修改工单回复记录表") + @PutMapping() + public ApiResult update(@RequestBody TaskRecord taskRecord) { + // 验证签名 + isCheckSign(); + if (taskRecordService.updateById(taskRecord)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("删除工单回复记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + if (taskRecordService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("批量添加工单回复记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + // 验证签名 + isCheckSign(); + if (taskRecordService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @ApiOperation("批量修改工单回复记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + // 验证签名 + isCheckSign(); + if (batchParam.update(taskRecordService, "task_record_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @ApiOperation("批量删除工单回复记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + // 验证签名 + isCheckSign(); + if (taskRecordService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenTenantController.java b/src/main/java/com/gxwebsoft/open/controller/OpenTenantController.java new file mode 100644 index 0000000..bdafc8a --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenTenantController.java @@ -0,0 +1,1265 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.JSONUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.Menu; +import com.gxwebsoft.common.system.entity.RoleMenu; +import com.gxwebsoft.common.system.entity.Tenant; +import com.gxwebsoft.common.system.param.TenantParam; +import com.gxwebsoft.common.system.service.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 租户控制器 + * + * @author WebSoft + * @since 2022-11-17 17:13:39 + */ +@Api(tags = "租户管理") +@RestController +@RequestMapping("/api/open/tenant") +public class OpenTenantController extends BaseController { + @Resource + private TenantService tenantService; + @Resource + private UserService userService; + @Resource + private RoleService roleService; + @Resource + private UserRoleService userRoleService; + @Resource + private MenuService menuService; + @Resource + private RoleMenuService roleMenuService; + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private DictService dictService; + @Resource + private DictDataService dictDataService; + + @ApiOperation("分页查询租户") + @GetMapping("/page") + public ApiResult> page(TenantParam param) { + // 特殊验证签名 + if (!param.getTenantCode().equals("ZAcxbdmDQFwUKC3e")) { + throw new BusinessException("签名失败"); + } + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(tenantService.page(page, page.getWrapper())); + // 使用关联查询 + return success(tenantService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('oa:tenant:list')") + @ApiOperation("查询全部租户") + @GetMapping() + public ApiResult> list(TenantParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(tenantService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(tenantService.listRel(param)); + } + + @PreAuthorize("hasAuthority('oa:tenant:list')") + @ApiOperation("根据id查询租户") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + return success(tenantService.getById(id)); + // 使用关联查询 +// return success(tenantService.getByIdRel(id)); + } + +// @Transactional(rollbackFor = {Exception.class}) +// @PreAuthorize("hasAuthority('oa:tenant:save')") +// @OperationLog +// @ApiOperation("添加租户(已废弃)") +// @PostMapping() +// public ApiResult save(@RequestBody Tenant tenant) { +// // 验证签名 +// isCheckSign(); +// // 记录当前登录用户id、租户id +// User loginUser = getLoginUser(); +// if (loginUser != null) { +// tenant.setUserId(loginUser.getUserId()); +// if (loginUser.getTenantId() != 5) return fail("权限不足!"); +// } +// // 添加租户 +// tenant.setTenantCode(CommonUtil.randomUUID16()); +// tenantService.save(tenant); +// +// // 添加超级管理员 +// User user = new User(); +// user.setUsername("admin"); +// user.setNickname("超级管理员"); +// user.setPassword(userService.encodePassword(tenant.getPassword())); +// user.setTenantId(tenant.getTenantId()); +// boolean result = userService.save(user); +// Integer superAdminUserId = user.getUserId(); +// +// // 创建角色 +// if (result) { +// Role role = new Role(); +// role.setRoleName("超级管理员"); +// role.setRoleCode("superAdmin"); +// role.setComments("超级管理员"); +// role.setTenantId(tenant.getTenantId()); +// roleService.save(role); +// +// // 保存超级管理员角色ID +// Integer superAdminRoleId = role.getRoleId(); +// role.setRoleName("注册用户"); +// role.setRoleCode("user"); +// role.setComments("普通注册用户"); +// roleService.save(role); +// role.setRoleName("游客"); +// role.setRoleCode("guest"); +// role.setComments("用于未登录时的浏览权限"); +// roleService.save(role); +// Integer guestRoleId = role.getRoleId(); +// +// // 添加默认字典 +// final Dict dict = new Dict(); +// dict.setDictName("性别"); +// dict.setDictCode("sex"); +// dict.setTenantId(tenant.getTenantId()); +// dictService.save(dict); +// final DictData dictData = new DictData(); +// dictData.setDictId(dict.getDictId()); +// dictData.setDictDataName("男"); +// dictData.setDictDataCode("1"); +// dictData.setTenantId(tenant.getTenantId()); +// dictDataService.save(dictData); +// dictData.setDictDataName("女"); +// dictData.setDictDataCode("2"); +// dictData.setTenantId(tenant.getTenantId()); +// dictDataService.save(dictData); +// +// // 添加游客账号 +// user.setUsername("www"); +// user.setNickname("游客"); +// user.setPassword(userService.encodePassword("123456")); +// userService.save(user); +// +// // 添加超管用户角色 +// UserRole userRole = new UserRole(); +// userRole.setUserId(superAdminUserId); +// userRole.setRoleId(superAdminRoleId); +// userRole.setTenantId(tenant.getTenantId()); +// userRoleService.save(userRole); +// +// // 添加游客用户角色 +// userRole.setUserId(user.getUserId()); +// userRole.setRoleId(guestRoleId); +// boolean resultUserRole = userRoleService.save(userRole); +// +// /// 添加系统菜单 +// if (resultUserRole) { +// Menu menu = new Menu(); +// // 10.系统管理 +// menu.setTitle("系统管理"); +// menu.setParentId(0); +// menu.setPath("/system"); +// menu.setIcon("setting-outlined"); +// menu.setSortNumber(10); +// menu.setTenantId(tenant.getTenantId()); +// menuService.save(menu); +// Integer parentId = menu.getMenuId(); +// menu.setParentId(menu.getMenuId()); +// menu.setTitle("用户管理"); +// menu.setPath("/system/user"); +// menu.setComponent("/system/user"); +// menu.setIcon("team-outlined"); +// menu.setSortNumber(2); +// menuService.save(menu); +// Integer userParentId = menu.getMenuId(); +// menu.setParentId(userParentId); +// menu.setMenuType(1); +// menu.setTitle("查询"); +// menu.setIcon(""); +// menu.setAuthority("sys:user:list"); +// menuService.save(menu); +// menu.setParentId(userParentId); +// menu.setTitle("添加"); +// menu.setAuthority("sys:user:save"); +// menuService.save(menu); +// menu.setParentId(userParentId); +// menu.setTitle("修改"); +// menu.setAuthority("sys:user:update"); +// menuService.save(menu); +// menu.setParentId(userParentId); +// menu.setTitle("删除"); +// menu.setAuthority("sys:user:remove"); +// menuService.save(menu); +// menu.setMenuType(0); +// menu.setParentId(parentId); +// menu.setTitle("角色管理"); +// menu.setPath("/system/role"); +// menu.setComponent("/system/role"); +// menu.setIcon("idcard-outlined"); +// menu.setAuthority(""); +// menu.setSortNumber(3); +// menuService.save(menu); +// Integer roleParentId = menu.getMenuId(); +// menu.setParentId(roleParentId); +// menu.setMenuType(1); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setTitle("查询"); +// menu.setAuthority("sys:role:list"); +// menuService.save(menu); +// menu.setParentId(roleParentId); +// menu.setTitle("添加"); +// menu.setAuthority("sys:role:save"); +// menuService.save(menu); +// menu.setParentId(roleParentId); +// menu.setTitle("修改"); +// menu.setAuthority("sys:role:update"); +// menuService.save(menu); +// menu.setParentId(roleParentId); +// menu.setTitle("删除"); +// menu.setAuthority("sys:role:remove"); +// menuService.save(menu); +// menu.setMenuType(0); +// menu.setParentId(parentId); +// menu.setTitle("菜单管理"); +// menu.setPath("/system/menu"); +// menu.setComponent("/system/menu"); +// menu.setIcon("appstore-outlined"); +// menu.setAuthority(""); +// menu.setSortNumber(1); +// menuService.save(menu); +// Integer menuParentId = menu.getMenuId(); +// menu.setParentId(menuParentId); +// menu.setMenuType(1); +// menu.setTitle("查询"); +// menu.setAuthority("sys:menu:list"); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menuService.save(menu); +// menu.setParentId(menuParentId); +// menu.setTitle("添加"); +// menu.setAuthority("sys:menu:save"); +// menuService.save(menu); +// menu.setParentId(menuParentId); +// menu.setTitle("修改"); +// menu.setAuthority("sys:menu:update"); +// menuService.save(menu); +// menu.setParentId(menuParentId); +// menu.setTitle("删除"); +// menu.setAuthority("sys:menu:remove"); +// menuService.save(menu); +// menu.setMenuType(0); +// menu.setParentId(parentId); +// menu.setTitle("机构管理"); +// menu.setPath("/system/organization"); +// menu.setComponent("/system/organization"); +// menu.setIcon("bank-outlined"); +// menu.setAuthority(""); +// menu.setSortNumber(5); +// menuService.save(menu); +// Integer orgParentId = menu.getMenuId(); +// menu.setParentId(orgParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setIcon(""); +// menu.setTitle("查询"); +// menu.setAuthority("sys:org:list"); +// menuService.save(menu); +// menu.setParentId(orgParentId); +// menu.setTitle("添加"); +// menu.setAuthority("sys:org:save"); +// menuService.save(menu); +// menu.setParentId(orgParentId); +// menu.setTitle("修改"); +// menu.setAuthority("sys:org:update"); +// menuService.save(menu); +// menu.setParentId(orgParentId); +// menu.setTitle("删除"); +// menu.setAuthority("sys:org:remove"); +// menuService.save(menu); +// menu.setMenuType(0); +// menu.setParentId(parentId); +// menu.setTitle("字典管理"); +// menu.setPath("/system/dict"); +// menu.setComponent("/system/dict"); +// menu.setIcon("profile-outlined"); +// menu.setAuthority(""); +// menu.setSortNumber(4); +// menuService.save(menu); +// Integer dictParentId = menu.getMenuId(); +// menu.setParentId(dictParentId); +// menu.setMenuType(1); +// menu.setTitle("查询"); +// menu.setAuthority("sys:dict:list"); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menuService.save(menu); +// menu.setParentId(dictParentId); +// menu.setTitle("添加"); +// menu.setAuthority("sys:dict:save"); +// menuService.save(menu); +// menu.setParentId(dictParentId); +// menu.setTitle("修改"); +// menu.setAuthority("sys:dict:update"); +// menuService.save(menu); +// menu.setParentId(dictParentId); +// menu.setTitle("删除"); +// menu.setAuthority("sys:dict:remove"); +// menuService.save(menu); +// menu.setMenuType(0); +// menu.setParentId(parentId); +// menu.setTitle("登录日志"); +// menu.setPath("/system/login-record"); +// menu.setComponent("/system/login-record"); +// menu.setIcon("calendar-outlined"); +// menu.setAuthority("sys:login-record:list"); +// menu.setSortNumber(7); +// menuService.save(menu); +// menu.setParentId(parentId); +// menu.setTitle("操作日志"); +// menu.setPath("/system/operation-record"); +// menu.setComponent("/system/operation-record"); +// menu.setIcon("file-search-outlined"); +// menu.setAuthority("sys:operation-record:list"); +// menu.setSortNumber(8); +// menuService.save(menu); +// menu.setParentId(parentId); +// menu.setTitle("文件管理"); +// menu.setPath("/system/file"); +// menu.setComponent("/system/file"); +// menu.setIcon("folder-outlined"); +// menu.setAuthority(""); +// menu.setSortNumber(6); +// menuService.save(menu); +// Integer fileParentId = menu.getMenuId(); +// menu.setParentId(fileParentId); +// menu.setMenuType(1); +// menu.setTitle("查看记录"); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setIcon(""); +// menu.setAuthority("sys:file:list"); +// menuService.save(menu); +// menu.setParentId(fileParentId); +// menu.setTitle("上传文件"); +// menu.setAuthority("sys:file:upload"); +// menuService.save(menu); +// menu.setParentId(fileParentId); +// menu.setTitle("修改文件"); +// menu.setAuthority("sys:file:update"); +// menuService.save(menu); +// menu.setParentId(fileParentId); +// menu.setTitle("删除文件"); +// menu.setAuthority("sys:org:remove"); +// menuService.save(menu); +// menu.setMenuType(0); +// menu.setParentId(parentId); +// menu.setTitle("系统设置"); +// menu.setPath("/system/setting"); +// menu.setComponent("/system/setting"); +// menu.setIcon("setting-outlined"); +// menu.setAuthority("sys:setting:save"); +// menu.setSortNumber(10); +// menuService.save(menu); +// menu.setParentId(parentId); +// menu.setTitle("用户信息"); +// menu.setPath("/system/user-info"); +// menu.setComponent("/system/user-info"); +// menu.setIcon("team-outlined"); +// menu.setAuthority(""); +// menu.setHide(1); +// menu.setMenuType(0); +// menu.setSortNumber(9); +// menuService.save(menu); +// Integer userInfoParentId = menu.getMenuId(); +// menu.setParentId(userInfoParentId); +// menu.setMenuType(1); +// menu.setTitle("修改个人密码"); +// menu.setAuthority("sys:auth:password"); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menuService.save(menu); +// menu.setParentId(userInfoParentId); +// menu.setTitle("修改个人资料"); +// menu.setAuthority("sys:auth:user"); +// menuService.save(menu); +// menu.setTitle("扩展插件"); +// menu.setParentId(parentId); +// menu.setIcon("AppstoreAddOutlined"); +// menu.setPath("/system/appstore"); +// menu.setComponent("/system/appstore"); +// menu.setMenuType(0); +// menu.setAuthority("oa:app:list"); +// menu.setSortNumber(100); +// menu.setHide(0); +// menuService.save(menu); +// // 1.控制台 +// menu.setParentId(0); +// menu.setTitle("控制台"); +// menu.setPath("/dashboard"); +// menu.setIcon("home-outlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setSortNumber(1); +// menu.setMenuType(0); +// menuService.save(menu); +// Integer dashboardParentId = menu.getMenuId(); +// menu.setTitle("工作台"); +// menu.setPath("/dashboard/workplace"); +// menu.setComponent("/dashboard/workplace"); +// menu.setIcon("DesktopOutlined"); +// menu.setParentId(dashboardParentId); +// menu.setMenuType(0); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("统计分析"); +// menu.setPath("/dashboard/analysis"); +// menu.setComponent("/dashboard/analysis"); +// menu.setIcon("BarChartOutlined"); +// menu.setParentId(dashboardParentId); +// menu.setMenuType(0); +// menu.setSortNumber(1); +// menuService.save(menu); +// // 2.办公协同 +// menu.setParentId(0); +// menu.setTitle("办公协同"); +// menu.setPath("/oa"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setMenuType(0); +// menu.setIcon("LaptopOutlined"); +// menu.setHide(0); +// menu.setSortNumber(2); +// menuService.save(menu); +// Integer oaParentId = menu.getMenuId(); +// menu.setParentId(oaParentId); +// menu.setTitle("服务器管理"); +// menu.setPath("/oa/assets/server"); +// menu.setComponent("/oa/assets/server"); +// menu.setIcon("AuditOutlined"); +// menu.setMenuType(0); +// menu.setSortNumber(0); +// menuService.save(menu); +// Integer serverParentId = menu.getMenuId(); +// menu.setTitle("查询"); +// menu.setParentId(serverParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("oa:assets:list"); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("oa:assets:save"); +// menuService.save(menu); +// menu.setTitle("更新"); +// menu.setAuthority("oa:assets:update"); +// menuService.save(menu); +// menu.setTitle("移除"); +// menu.setAuthority("oa:assets:remove"); +// menuService.save(menu); +// menu.setParentId(oaParentId); +// menu.setMenuType(0); +// menu.setTitle("客户管理"); +// menu.setPath("/oa/customer"); +// menu.setComponent("/oa/customer"); +// menu.setIcon("TeamOutlined"); +// menu.setSortNumber(1); +// menuService.save(menu); +// Integer customerParentId = menu.getMenuId(); +// menu.setParentId(customerParentId); +// menu.setTitle("查询"); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setSortNumber(0); +// menu.setAuthority("oa:customer:list"); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("oa:customer:save"); +// menuService.save(menu); +// menu.setTitle("更新"); +// menu.setAuthority("oa:customer:update"); +// menuService.save(menu); +// menu.setTitle("移除"); +// menu.setAuthority("oa:customer:remove"); +// menuService.save(menu); +// // 3.商户管理 +// menu.setParentId(0); +// menu.setTitle("商户管理"); +// menu.setPath("/merchant"); +// menu.setIcon("ShopOutlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setSortNumber(3); +// menu.setMenuType(0); +// menuService.save(menu); +// Integer merchantParentId = menu.getMenuId(); +// menu.setTitle("商户列表"); +// menu.setPath("/merchant/index"); +// menu.setComponent("/merchant/index"); +// menu.setIcon("ShopOutlined"); +// menu.setParentId(merchantParentId); +// menu.setMenuType(0); +// menu.setSortNumber(0); +// menuService.save(menu); +// Integer shopInfoParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(shopInfoParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:merchant:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:merchant:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:merchant:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:merchant:remove"); +// menuService.save(menu); +// menu.setTitle("入驻审核"); +// menu.setPath("/merchant/apply"); +// menu.setComponent("/merchant/apply"); +// menu.setIcon("HourglassOutlined"); +// menu.setParentId(merchantParentId); +// menu.setMenuType(0); +// menu.setSortNumber(1); +// menuService.save(menu); +// menu.setTitle("地址管理"); +// menu.setPath("/merchant/address"); +// menu.setComponent("/merchant/address"); +// menu.setIcon("EnvironmentOutlined"); +// menu.setParentId(merchantParentId); +// menu.setMenuType(0); +// menu.setSortNumber(2); +// menuService.save(menu); +// menu.setTitle("店铺装修"); +// menu.setPath("/merchant/decorate"); +// menu.setComponent("/merchant/decorate"); +// menu.setIcon("FormatPainterOutlined"); +// menu.setParentId(merchantParentId); +// menu.setMenuType(0); +// menu.setSortNumber(3); +// menuService.save(menu); +// menu.setTitle("主题风格"); +// menu.setPath("/merchant/theme"); +// menu.setComponent("/merchant/theme"); +// menu.setIcon("BgColorsOutlined"); +// menu.setParentId(merchantParentId); +// menu.setMenuType(0); +// menu.setSortNumber(4); +// menuService.save(menu); +// menu.setTitle("资金提现"); +// menu.setPath("/merchant/withdraw"); +// menu.setComponent("/merchant/withdraw"); +// menu.setIcon("RedEnvelopeOutlined"); +// menu.setParentId(merchantParentId); +// menu.setMenuType(0); +// menu.setSortNumber(5); +// menuService.save(menu); +// // 4.商品管理 +// menu.setParentId(0); +// menu.setTitle("商品管理"); +// menu.setPath("/goods"); +// menu.setIcon("ShoppingOutlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setSortNumber(4); +// menu.setMenuType(0); +// menuService.save(menu); +// Integer goodsParentId = menu.getMenuId(); +// menu.setTitle("商品列表"); +// menu.setPath("/goods/index"); +// menu.setComponent("/goods/index"); +// menu.setIcon("SkinOutlined"); +// menu.setParentId(goodsParentId); +// menu.setMenuType(0); +// menu.setSortNumber(0); +// menuService.save(menu); +// Integer shopIndexParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(shopIndexParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:goods:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:goods:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:goods:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:goods:remove"); +// menuService.save(menu); +// menu.setTitle("商品分类"); +// menu.setPath("/goods/category"); +// menu.setComponent("/goods/category"); +// menu.setIcon("ApartmentOutlined"); +// menu.setParentId(goodsParentId); +// menu.setMenuType(0); +// menu.setSortNumber(1); +// menuService.save(menu); +// Integer goodsCategoryParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(goodsCategoryParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:category:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:category:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:category:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:category:remove"); +// menuService.save(menu); +// menu.setTitle("商品评价"); +// menu.setPath("/goods/comment"); +// menu.setComponent("/goods/comment"); +// menu.setIcon("GiftOutlined"); +// menu.setParentId(goodsParentId); +// menu.setMenuType(0); +// menu.setSortNumber(2); +// menuService.save(menu); +// Integer goodsCommentParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(goodsCommentParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:comment:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:comment:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:comment:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:comment:remove"); +// menuService.save(menu); +// menu.setTitle("服务承诺"); +// menu.setPath("/goods/service"); +// menu.setComponent("/goods/service"); +// menu.setIcon("InsuranceOutlined"); +// menu.setParentId(goodsParentId); +// menu.setMenuType(0); +// menu.setSortNumber(3); +// menuService.save(menu); +// Integer goodsServiceParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(goodsServiceParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:goodsService:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:goodsService:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:goodsService:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:goodsService:remove"); +// menuService.save(menu); +// // 5.订单管理 +// menu.setParentId(0); +// menu.setTitle("订单管理"); +// menu.setPath("/order"); +// menu.setIcon("CalendarOutlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setSortNumber(5); +// menu.setMenuType(0); +// menuService.save(menu); +// Integer orderParentId = menu.getMenuId(); +// menu.setTitle("全部订单"); +// menu.setPath("/order/all"); +// menu.setComponent("/order/all"); +// menu.setIcon("ProfileOutlined"); +// menu.setParentId(orderParentId); +// menu.setMenuType(0); +// menu.setSortNumber(0); +// menuService.save(menu); +// Integer orderAllParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(orderAllParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:order:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:order:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:order:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:order:remove"); +// menuService.save(menu); +// menu.setTitle("退款单"); +// menu.setPath("/order/refund"); +// menu.setComponent("/order/refund"); +// menu.setIcon("MoneyCollectOutlined"); +// menu.setParentId(orderParentId); +// menu.setMenuType(0); +// menu.setSortNumber(1); +// menuService.save(menu); +// menu.setTitle("发货管理"); +// menu.setPath("/order/delivery"); +// menu.setComponent("/order/delivery"); +// menu.setIcon("CarOutlined"); +// menu.setParentId(orderParentId); +// menu.setMenuType(0); +// menu.setSortNumber(2); +// menuService.save(menu); +// menu.setTitle("订单导出"); +// menu.setPath("/order/export"); +// menu.setComponent("/order/export"); +// menu.setIcon("UploadOutlined"); +// menu.setParentId(orderParentId); +// menu.setMenuType(0); +// menu.setSortNumber(3); +// menuService.save(menu); +// // 6.用户管理 +// menu.setParentId(0); +// menu.setTitle("用户管理"); +// menu.setPath("/user"); +// menu.setIcon("TeamOutlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setSortNumber(6); +// menu.setMenuType(0); +// menuService.save(menu); +// Integer outUserParentId = menu.getMenuId(); +// menu.setTitle("用户列表"); +// menu.setPath("/user/index"); +// menu.setComponent("/user/index"); +// menu.setIcon("TeamOutlined"); +// menu.setParentId(outUserParentId); +// menu.setMenuType(0); +// menu.setSortNumber(0); +// menuService.save(menu); +// Integer memberListParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(memberListParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:member:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:member:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:member:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:member:remove"); +// menuService.save(menu); +// menu.setTitle("余额明细"); +// menu.setPath("/user/balance-log"); +// menu.setComponent("/user/balance-log"); +// menu.setIcon("WalletOutlined"); +// menu.setParentId(outUserParentId); +// menu.setMenuType(0); +// menu.setSortNumber(1); +// menuService.save(menu); +// Integer balanceLogParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(balanceLogParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:memberBalanceLog:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:memberBalanceLog:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:memberBalanceLog:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:memberBalanceLog:remove"); +// menuService.save(menu); +// menu.setTitle("充值记录"); +// menu.setPath("/user/recharge"); +// menu.setComponent("/user/recharge"); +// menu.setIcon("UngroupOutlined"); +// menu.setParentId(outUserParentId); +// menu.setMenuType(0); +// menu.setSortNumber(2); +// menuService.save(menu); +// Integer userRechargeParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(userRechargeParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:memberRecharge:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:memberRecharge:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:memberRecharge:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:memberRecharge:remove"); +// menuService.save(menu); +// menu.setTitle("消息提醒"); +// menu.setPath("/user/notice"); +// menu.setComponent("/user/notice"); +// menu.setIcon("SoundOutlined"); +// menu.setParentId(outUserParentId); +// menu.setMenuType(0); +// menu.setSortNumber(3); +// menuService.save(menu); +// Integer userNoticeParentId = menu.getMenuId(); +// menu.setTitle("列表"); +// menu.setParentId(userNoticeParentId); +// menu.setMenuType(1); +// menu.setPath(""); +// menu.setIcon(""); +// menu.setComponent(""); +// menu.setAuthority("shop:memberNotice:list"); +// menu.setSortNumber(0); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("shop:memberNotice:save"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("shop:memberNotice:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("shop:memberNotice:remove"); +// menuService.save(menu); +// // 7.内容管理 +// menu.setParentId(0); +// menu.setTitle("内容管理"); +// menu.setPath("/cms"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setIcon("FileSearchOutlined"); +// menu.setHide(0); +// menu.setMenuType(0); +// menu.setSortNumber(7); +// menuService.save(menu); +// Integer contentParentId = menu.getMenuId(); +// menu.setTitle("文章管理"); +// menu.setPath("/cms/article"); +// menu.setComponent("/cms/article"); +// menu.setIcon("FileSearchOutlined"); +// menu.setAuthority(""); +// menu.setSortNumber(1); +// menu.setMenuType(0); +// menu.setParentId(contentParentId); +// menuService.save(menu); +// Integer articleParentId = menu.getMenuId(); +// menu.setParentId(articleParentId); +// menu.setMenuType(1); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setTitle("查询"); +// menu.setSortNumber(0); +// menu.setAuthority("cms:article:list"); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("cms:article:save"); +// menuService.save(menu); +// menu.setTitle("修改"); +// menu.setAuthority("cms:article:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("cms:article:remove"); +// menuService.save(menu); +// menu.setTitle("文章分类"); +// menu.setPath("/cms/category"); +// menu.setComponent("/cms/category"); +// menu.setIcon("ApartmentOutlined"); +// menu.setAuthority(""); +// menu.setMenuType(0); +// menu.setSortNumber(2); +// menu.setParentId(contentParentId); +// menuService.save(menu); +// Integer categoryParentId = menu.getMenuId(); +// menu.setParentId(categoryParentId); +// menu.setMenuType(1); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setSortNumber(0); +// menu.setTitle("查询"); +// menu.setAuthority("cms:articleCategory:list"); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("cms:articleCategory:save"); +// menuService.save(menu); +// menu.setTitle("修改"); +// menu.setAuthority("cms:articleCategory:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("cms:articleCategory:remove"); +// menuService.save(menu); +// menu.setTitle("文档管理"); +// menu.setPath("/cms/docs/:id"); +// menu.setComponent("/cms/docs"); +// menu.setIcon("ReadOutlined"); +// menu.setAuthority(""); +// menu.setSortNumber(3); +// menu.setMenuType(0); +// menu.setParentId(contentParentId); +// menuService.save(menu); +// Integer docsParentId = menu.getMenuId(); +// menu.setParentId(docsParentId); +// menu.setMenuType(1); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setSortNumber(0); +// menu.setTitle("查询"); +// menu.setAuthority("cms:docs:list"); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("cms:docs:save"); +// menuService.save(menu); +// menu.setTitle("修改"); +// menu.setAuthority("cms:docs:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("cms:docs:remove"); +// menuService.save(menu); +// menu.setTitle("视频管理"); +// menu.setPath("/cms/video"); +// menu.setComponent("/cms/video"); +// menu.setIcon("YoutubeOutlined"); +// menu.setAuthority(""); +// menu.setSortNumber(4); +// menu.setMenuType(0); +// menu.setParentId(contentParentId); +// menuService.save(menu); +// Integer cmsVideoParentId = menu.getMenuId(); +// menu.setParentId(cmsVideoParentId); +// menu.setMenuType(1); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setSortNumber(0); +// menu.setTitle("列表"); +// menu.setAuthority("cms:file:list"); +// menuService.save(menu); +// menu.setTitle("上传"); +// menu.setAuthority("sys:file:upload"); +// menuService.save(menu); +// menu.setTitle("编辑"); +// menu.setAuthority("sys:file:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("sys:file:remove"); +// menuService.save(menu); +// menu.setTitle("视频播放"); +// menu.setIcon(""); +// menu.setPath("/cms/video/player"); +// menu.setComponent("/cms/video/player"); +// menu.setMenuType(0); +// menu.setHide(1); +// menu.setMeta("{\"active\": \"/cms/video\", \"tabUnique\": false}"); +// menuService.save(menu); +// menu.setTitle("文件下载"); +// menu.setPath("/cms/down"); +// menu.setComponent("/cms/down"); +// menu.setIcon("LinkOutlined"); +// menu.setAuthority(""); +// menu.setHide(0); +// menu.setSortNumber(5); +// menu.setMenuType(0); +// menu.setParentId(contentParentId); +// menuService.save(menu); +// // 8.营销管理 +// menu.setParentId(0); +// menu.setTitle("营销管理"); +// menu.setPath("/market"); +// menu.setIcon("CrownOutlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setSortNumber(8); +// menu.setMenuType(0); +// menuService.save(menu); +// Integer marketParentId = menu.getMenuId(); +// menu.setTitle("优惠券"); +// menu.setPath("/market/coupon"); +// menu.setComponent("/market/coupon"); +// menu.setIcon("TagsOutlined"); +// menu.setParentId(marketParentId); +// menu.setMenuType(0); +// menu.setSortNumber(0); +// menuService.save(menu); +// Integer marketCouponParentId = menu.getMenuId(); +// menu.setParentId(marketCouponParentId); +// menu.setMenuType(1); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setTitle("查询"); +// menu.setSortNumber(0); +// menu.setAuthority("cms:coupon:list"); +// menuService.save(menu); +// menu.setTitle("添加"); +// menu.setAuthority("cms:coupon:save"); +// menuService.save(menu); +// menu.setTitle("修改"); +// menu.setAuthority("cms:coupon:update"); +// menuService.save(menu); +// menu.setTitle("删除"); +// menu.setAuthority("cms:coupon:remove"); +// menuService.save(menu); +// menu.setTitle("会员充值"); +// menu.setPath("/market/recharge"); +// menu.setComponent("/market/recharge"); +// menu.setIcon("MoneyCollectOutlined"); +// menu.setParentId(marketParentId); +// menu.setMenuType(0); +// menu.setSortNumber(1); +// menuService.save(menu); +// menu.setTitle("积分管理"); +// menu.setPath("/market/points"); +// menu.setComponent("/market/points"); +// menu.setIcon("PayCircleOutlined"); +// menu.setParentId(marketParentId); +// menu.setMenuType(0); +// menu.setSortNumber(2); +// menuService.save(menu); +// // 9.应用中心 +// menu.setParentId(0); +// menu.setTitle("应用中心"); +// menu.setPath("/apps"); +// menu.setIcon("AppstoreAddOutlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setSortNumber(9); +// menu.setMenuType(0); +// menuService.save(menu); +// +// // 个人中心 +// menu.setParentId(0); +// menu.setTitle("个人中心"); +// menu.setPath("/user-center"); +// menu.setIcon("UserOutlined"); +// menu.setComponent(""); +// menu.setAuthority(""); +// menu.setMenuType(0); +// menu.setHide(1); +// menu.setSortNumber(99); +// menuService.save(menu); +// Integer userCenterParentId = menu.getMenuId(); +// menu.setTitle("个人资料"); +// menu.setPath("/user/profile"); +// menu.setComponent("/user/profile"); +// menu.setIcon("IdcardOutlined"); +// menu.setParentId(userCenterParentId); +// menu.setMenuType(0); +// menu.setSortNumber(0); +// menuService.save(menu); +// Integer userProfileParentId = menu.getMenuId(); +// menu.setParentId(userProfileParentId); +// menu.setMenuType(1); +// menu.setIcon(""); +// menu.setPath(""); +// menu.setComponent(""); +// menu.setTitle("修改资料"); +// menu.setSortNumber(0); +// menu.setAuthority("sys:auth:user"); +// menuService.save(menu); +// menu.setTitle("修改密码"); +// menu.setAuthority("sys:auth:password"); +// menuService.save(menu); +// menu.setTitle("上传头像"); +// menu.setAuthority("sys:file:upload"); +// menu.setTitle("预览头像"); +// menu.setAuthority("sys:file:list"); +// menu.setTitle("保存头像"); +// menu.setAuthority("sys:user:update"); +// menuService.save(menu); +// menu.setParentId(userCenterParentId); +// menu.setTitle("用户注册"); +// menu.setAuthority("sys:user:save"); +// menuService.save(menu); +// menu.setTitle("字典查询"); +// menu.setAuthority("sys:dict:list"); +// +// boolean resultMenu = menuService.save(menu); +// // 添加菜单ID到超级管理员所属角色ID +// if (resultMenu) { +// saveRedis(tenant); +// return success("创建成功"); +// } +// } +// } +// throw new BusinessException("创建失败"); +// } + + @PreAuthorize("hasAuthority('oa:tenant:update')") + @OperationLog + @ApiOperation("修改租户") + @PutMapping() + public ApiResult update(@RequestBody Tenant tenant) { + // 验证签名 + isCheckSign(); + saveRedis(tenant); + if (tenantService.updateById(tenant)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + // 缓存租户信息 + private void saveRedis(Tenant tenant) { + String key = "cache:tenant"; + String tenantId = tenant.getTenantId().toString(); + if (StrUtil.isEmpty(tenant.getTenantCode())) { + tenant.setTenantCode(CommonUtil.randomUUID16()); + } + String data = JSONUtil.toJSONString(tenant); + stringRedisTemplate.opsForHash().put(key,tenantId, data); + } + + @PreAuthorize("hasAuthority('oa:tenant:remove')") + @OperationLog + @ApiOperation("删除租户") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + // 验证签名 + isCheckSign(); + if (tenantService.removeById(id)) { + String key = "cache:tenant"; + stringRedisTemplate.opsForHash().delete(key,id.toString()); + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('oa:tenant:save')") + @OperationLog + @ApiOperation("批量添加租户") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + // 验证签名 + isCheckSign(); + if (tenantService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('oa:tenant:update')") + @OperationLog + @ApiOperation("批量修改租户") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + // 验证签名 + isCheckSign(); + if (batchParam.update(tenantService, "tenant_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('oa:tenant:remove')") + @OperationLog + @ApiOperation("批量删除租户") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + // 验证签名 + isCheckSign(); + if (tenantService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("租户角色权限初始化") + @GetMapping("/role-menu/{id}") + public ApiResult> initialization(@PathVariable("id") Integer roleId) { + // 验证签名 + isCheckSign(); + List menus = menuService.list(new LambdaQueryWrapper().orderByAsc(Menu::getSortNumber)); + List roleMenus = roleMenuService.list(new LambdaQueryWrapper() + .eq(RoleMenu::getRoleId, roleId)); + for (Menu menu : menus) { + menu.setChecked(roleMenus.stream().anyMatch((d) -> d.getMenuId().equals(menu.getMenuId()))); + } + List menuIds = menus.stream().map(Menu::getMenuId).collect(Collectors.toList()); + roleMenuService.remove(new LambdaUpdateWrapper().eq(RoleMenu::getRoleId, roleId)); + if (menuIds.size() > 0) { + List roleMenuList = new ArrayList<>(); + for (Integer menuId : menuIds) { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setRoleId(roleId); + roleMenu.setMenuId(menuId); + roleMenuList.add(roleMenu); + } + if (!roleMenuService.saveBatch(roleMenuList)) { + throw new BusinessException("保存失败"); + } + } + return success(menus); + } + +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenUserController.java b/src/main/java/com/gxwebsoft/open/controller/OpenUserController.java new file mode 100644 index 0000000..3d4045e --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenUserController.java @@ -0,0 +1,44 @@ +package com.gxwebsoft.open.controller; + +import com.gxwebsoft.common.core.utils.MyQrCodeUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.service.UserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.IOException; + +/** + * 我的资料 + * + * @author 科技小王子 + * @since 2023-04-24 21:47:57 + */ +@Api(tags = "我的资料") +@RestController +@RequestMapping("/api/open/user") +public class OpenUserController extends BaseController { + @Resource + private UserService userService; + + @ApiOperation("实时二维码") + @PostMapping("/myQrCode") + public ApiResult myQrCode(@RequestBody UserParam userParam) throws IOException { + // 验证签名 + isCheckSign(); + final String qrCode = MyQrCodeUtil.createQrCode(getLoginUserId(), userParam.getCodeContent()); + return success("操作成功",qrCode); + } + + @ApiOperation("获取代理用户信息") + @GetMapping("/agentUser/{id}") + public ApiResult agentUser(@PathVariable("id") Integer id){ + User user = userService.getById(id); + return success("操作成功",user); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenUserOrderController.java b/src/main/java/com/gxwebsoft/open/controller/OpenUserOrderController.java new file mode 100644 index 0000000..c6a6218 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenUserOrderController.java @@ -0,0 +1,87 @@ +package com.gxwebsoft.open.controller; + +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import java.util.List; + +/** + * 用户-我的订单 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Api(tags = "我的订单") +@RestController +@RequestMapping("/api/open/user-order") +public class OpenUserOrderController extends BaseController { + @Resource + private OrderService orderService; + + @ApiOperation("分页查询用户订单") + @GetMapping("/page") + public ApiResult> page(OrderParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + // 记录当前登录用户id、租户id + User user = getLoginUser(); + if (user != null) { + param.setUserId(user.getUserId()); + param.setTenantId(user.getTenantId()); + } + // 使用关联查询 + return success(orderService.pageRel(param)); + } + + @ApiOperation("查询全部用户订单") + @GetMapping() + public ApiResult> list(OrderParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + // 记录当前登录用户id、租户id + User user = getLoginUser(); + if (user != null) { + param.setUserId(user.getUserId()); + param.setTenantId(user.getTenantId()); + } + + // 使用关联查询 + return success(orderService.listRel(param)); + } + + @ApiOperation("测试") + @GetMapping("/test") + public ApiResult> test(OrderParam param) { + // 验证签名 + isCheckSign(); + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + // 记录当前登录用户id、租户id + User user = getLoginUser(); + if (user != null) { + param.setUserId(user.getUserId()); + param.setTenantId(user.getTenantId()); + } + // 使用关联查询 + return success(orderService.pageRel(param)); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenWxOfficialController.java b/src/main/java/com/gxwebsoft/open/controller/OpenWxOfficialController.java new file mode 100644 index 0000000..6e376ce --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenWxOfficialController.java @@ -0,0 +1,166 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.core.util.CharsetUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.WxOfficialUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.service.LoginRecordService; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.oa.service.NoticeService; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.param.UserOauthParam; +import com.gxwebsoft.shop.service.UserOauthService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.concurrent.TimeUnit; + +import static com.gxwebsoft.common.core.utils.CommonUtil.randomUsername; + +/** + * 微信公众号接口 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Api(tags = "微信公众号授权登录") +@RestController +@RequestMapping("/api/open/wx-official") +public class OpenWxOfficialController extends BaseController { + @Resource + private ConfigProperties configProperties; + @Resource + private WxOfficialUtil wxOfficialUtil; + @Resource + private UserService userService; + @Resource + private UserOauthService userOauthService; + @Resource + private LoginRecordService loginRecordService; + @Resource + private SettingService settingService; + + public OpenWxOfficialController() { + } + + @OperationLog + @ApiOperation("第一步:用户同意授权,获取code") + @GetMapping("/code") + public ApiResult code() throws UnsupportedEncodingException { + WxOfficialUtil client = wxOfficialUtil.client(getTenantId()); + String codeUrl = client.getCodeUrl(); + return success(codeUrl); + } + + @OperationLog + @Transactional(rollbackFor = Exception.class) + @ApiOperation("第二步:通过code换取网页授权access_token") + @GetMapping("/accessToken") + public String accessToken(String code, String state, HttpServletRequest request, HttpServletResponse resp) throws IOException { + if(StrUtil.equals(state,"STATE")){ + throw new BusinessException("租户ID不正确"); + } + + // 1.实例化 + WxOfficialUtil client = wxOfficialUtil.client(Integer.valueOf(state)); + + // 2.获取access_token + final String access_token = client.getAccessToken(code); + + // 准备数据 + final String unionid = client.unionid; + final String expires_in = client.expires_in; + final JSONObject cache = settingService.getCache("cache".concat(state).concat(":setting:setting")); + final String domain = "https://" + cache.getString("domain"); + + // 3.查询第三方用户信息表 + UserOauthParam userOauthParam = new UserOauthParam(); + userOauthParam.setUnionid(unionid); + userOauthParam.setTenantId(Integer.valueOf(state)); + System.out.println("userOauthParam = " + userOauthParam); + final UserOauth oauthUser = userOauthService.getByUnionId(userOauthParam); + System.out.println("oauthUser = " + oauthUser); + + // 4.1存在签发token + if(oauthUser != null){ + UserParam userParam = new UserParam(); + userParam.setUserId(oauthUser.getUserId()); + userParam.setTenantId(Integer.valueOf(state)); + System.out.println("userParam = " + userParam); + User user = userService.getByUnionId(userParam); + // 5.签发token + System.out.println("user = 签发token " + user); + String wx_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), Integer.valueOf(state)), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + resp.sendRedirect(domain + "/passport/wx-official-login?token=".concat(wx_token).concat("&username=").concat(user.getUsername())); + return "登录成功"; + } + // 4.2不存在则注册并登录签发token + final JSONObject userInfo = client.getUserInfo(access_token); + final String openid = userInfo.getString("openid"); + final String unionId = userInfo.getString("unionid"); + final String nickname = userInfo.getString("nickname"); + final String sex = userInfo.getString("sex"); + final String province = userInfo.getString("province"); + final String city = userInfo.getString("city"); + final String country = userInfo.getString("country"); + final String headimgurl = userInfo.getString("headimgurl"); + System.out.println("headimgurl = " + headimgurl); + System.out.println("unionId = " + unionId); + System.out.println("openid = " + openid); + System.out.println("nickname = " + nickname); + User user = new User(); + user.setNickname(nickname); + user.setType(0); + user.setUsername(randomUsername("wx_")); + user.setPassword(userService.encodePassword(CommonUtil.randomUUID16())); + user.setSex(sex); + user.setPlatform("WX-OFFICIAL"); + user.setProvince(province); + user.setCity(city); + user.setCountry(country); + user.setAvatar(headimgurl); + user.setTenantId(Integer.valueOf(state)); + userService.saveUser(user); + System.out.println("userLast = " + user); + UserOauth userOauth = new UserOauth(); + userOauth.setTenantId(Integer.valueOf(state)); + userOauth.setOauthType("WX-OFFICIAL"); + userOauth.setOauthId(openid); + userOauth.setUnionid(unionId); + userOauth.setUserId(user.getUserId()); + userOauthService.save(userOauth); + loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_LOGIN, null, Integer.valueOf(state), request); + // 5.签发token + String wx_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), Integer.valueOf(state)), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + resp.sendRedirect(domain + "/passport/wx-official-login?token=".concat(wx_token).concat("&username=").concat(user.getUsername())); + return "注册成功"; + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/OpenWxWorkController.java b/src/main/java/com/gxwebsoft/open/controller/OpenWxWorkController.java new file mode 100644 index 0000000..f504b17 --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/OpenWxWorkController.java @@ -0,0 +1,182 @@ +package com.gxwebsoft.open.controller; + +import cn.hutool.http.HttpUtil; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.security.JwtSubject; +import com.gxwebsoft.common.core.security.JwtUtil; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.utils.WxWorkUtil; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.LoginRecord; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.entity.UserRole; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.common.system.result.LoginResult; +import com.gxwebsoft.common.system.service.LoginRecordService; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.common.system.service.UserRoleService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.param.UserOauthParam; +import com.gxwebsoft.shop.service.UserOauthService; +import com.qq.weixin.mp.aes.AesException; +import com.qq.weixin.mp.aes.WXBizJsonMsgCrypt; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.HashMap; + +/** + * 企业微信接口 + * + * @author WebSoft + * @since 2022-11-19 13:54:27 + */ +@Api(tags = "企业微信验证") +@RestController +@RequestMapping("/api/open/wx-work") +public class OpenWxWorkController extends BaseController { + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private ConfigProperties configProperties; + @Resource + private WxWorkUtil workUtil; + @Resource + private UserService userService; + @Resource + private UserOauthService userOauthService; + @Resource + private LoginRecordService loginRecordService; + @Resource + private SettingService settingService; + @Resource + private UserRoleService userRoleService; + + @OperationLog + @ApiOperation("第一步:请求验证URL有效性") + @GetMapping() + public String msgSignature(HttpServletRequest request) throws AesException { + String sToken = "gFJXh4y2QAg5gm6U"; + String sCorpID = "wxa040285bc1c223ae"; + String sEncodingAESKey = "MRYqPeaVleIZDzgS2O8CoyyRwAYBOD9wQAztSfLMWaA"; + + WXBizJsonMsgCrypt wxcpt = new WXBizJsonMsgCrypt(sToken, sEncodingAESKey, sCorpID); + + // 解析出url上的参数值如下: + final String sVerifyMsgSig = request.getParameter("msg_signature"); + final String sVerifyTimeStamp = request.getParameter("timestamp"); + final String sVerifyNonce = request.getParameter("nonce"); + final String sVerifyEchoStr = request.getParameter("echostr"); + String sEchoStr; //需要返回的明文 + System.out.println("sVerifyMsgSig = " + sVerifyMsgSig); + System.out.println("sVerifyTimeStamp = " + sVerifyTimeStamp); + System.out.println("sVerifyNonce = " + sVerifyNonce); + System.out.println("sVerifyEchoStr = " + sVerifyEchoStr); + + try { + sEchoStr = wxcpt.VerifyURL(sVerifyMsgSig, sVerifyTimeStamp, + sVerifyNonce, sVerifyEchoStr); + System.out.println("verifyurl echostr: " + sEchoStr); + // 验证URL成功,将sEchoStr返回 + return sEchoStr; + } catch (Exception e) { + //验证URL失败,错误原因请查看异常 + e.printStackTrace(); + } + return "验证失败"; + } + + @ApiOperation("获取access_token并登录") + @GetMapping("/saveAccessToken") + public ApiResult saveAccessToken(HttpServletRequest request, HttpServletResponse resp) throws IOException { + System.out.println("request = " + request); + final String code = request.getParameter("code"); + final String state = request.getParameter("state"); + final Integer tenantId = Integer.valueOf(state); + System.out.println("code = " + code); + System.out.println("state = " + state); + // 1.实例化 + WxWorkUtil client = workUtil.client(tenantId); + // 2.获取access_token + String key = "cache"+ tenantId +":ww:access_token"; + String access_token = stringRedisTemplate.opsForValue().get(key); + System.out.println("access_token_cache = " + access_token); + if (access_token == null){ + client.getAccessToken(code); + } + // 3.获取用户信息 + client.getUserInfo(code,access_token); + + // 3.2 读取用户详细信息 + client.getUserProfile(client.userid,access_token); + + // 4.查询第三方用户信息表 + UserOauthParam userOauthParam = new UserOauthParam(); + userOauthParam.setOauthId(client.userid); + userOauthParam.setUnionid(client.userid); + userOauthParam.setTenantId(tenantId); + System.out.println("userOauthParam = " + userOauthParam); + final UserOauth oauthUser = userOauthService.getByUnionId(userOauthParam); + System.out.println("oauthUser = " + oauthUser); + + // 4.1存在签发token + if(oauthUser != null){ + UserParam userParam = new UserParam(); + userParam.setUserId(oauthUser.getUserId()); + userParam.setTenantId(tenantId); + System.out.println("userParam = " + userParam); + User user = userService.getByUnionId(userParam); + // 5.签发token + System.out.println("user = 签发token " + user); + String ww_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), tenantId), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + resp.sendRedirect("http://apps.gxwebsoft.com/baocan/#/?ww_token=" + ww_token + "&userId=" + user.getUserId()); + return success("登录成功",new LoginResult(ww_token, user)); + } + // 4.2不存在则注册并登录签发token + User user = new User(); + user.setNickname(client.name); + user.setUsername(client.userid); + user.setPhone(client.mobile); + user.setSex(client.gender); + user.setPosition(client.position); + user.setEmail(client.email); + user.setAlias(client.alias); + user.setPassword(userService.encodePassword(CommonUtil.randomUUID16())); + user.setPlatform("WX-WORK"); + user.setTenantId(tenantId); + userService.saveUser(user); + System.out.println("userLast = " + user); + // 添加默认角色 + UserRole userRole = new UserRole(); + userRole.setRoleId(241); + userRole.setUserId(user.getUserId()); + userRole.setTenantId(tenantId); + userRoleService.save(userRole); + // 添加第三方用户信息 + UserOauth userOauth = new UserOauth(); + userOauth.setTenantId(tenantId); + userOauth.setOauthType("WX-WORK"); + userOauth.setOauthId(client.userid); + userOauth.setUnionid(client.userid); + userOauth.setUserId(user.getUserId()); + userOauthService.save(userOauth); + loginRecordService.saveAsync(user.getUsername(), LoginRecord.TYPE_LOGIN, null, tenantId, request); + // 5.签发token + String ww_token = JwtUtil.buildToken(new JwtSubject(user.getUsername(), tenantId), + configProperties.getTokenExpireTime(), configProperties.getTokenKey()); + resp.sendRedirect("http://apps.gxwebsoft.com/baocan/#/?ww_token=" + ww_token + "&userId=" + user.getUserId()); + return success("注册成功",new LoginResult(ww_token, user)); + } +} diff --git a/src/main/java/com/gxwebsoft/open/controller/VerifyTxt.java b/src/main/java/com/gxwebsoft/open/controller/VerifyTxt.java new file mode 100644 index 0000000..b9ed14b --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/controller/VerifyTxt.java @@ -0,0 +1,19 @@ +package com.gxwebsoft.open.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@Api(tags = "域名所有权验证") +@RestController +@RequestMapping("/5zbYEPkyV4.txt") +public class VerifyTxt { + + @ApiOperation("域名所有权验证") + @GetMapping() + public String verify(){ + return "82e8e3cf87f99ba1e31d2c103133fcab"; + } +} diff --git a/src/main/java/com/gxwebsoft/open/entity/WxWork.java b/src/main/java/com/gxwebsoft/open/entity/WxWork.java new file mode 100644 index 0000000..fbc608c --- /dev/null +++ b/src/main/java/com/gxwebsoft/open/entity/WxWork.java @@ -0,0 +1,24 @@ +package com.gxwebsoft.open.entity; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * 企业微信登录传参 + * + * @author WebSoft + * @since 2022-11-16 11:13:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "企业微信登录传参", description = "企业微信登录传参") +public class WxWork implements Serializable { + private static final long serialVersionUID = 1L; + private String msg_signature; + private String timestamp; + private String nonce; + private String echostr; +} diff --git a/src/main/java/com/gxwebsoft/shop/config/ExpressConfig.java b/src/main/java/com/gxwebsoft/shop/config/ExpressConfig.java new file mode 100644 index 0000000..4ea8bd9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/config/ExpressConfig.java @@ -0,0 +1,25 @@ +package com.gxwebsoft.shop.config; + + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource("classpath:express.properties") +@ConfigurationProperties(prefix = "express") +@Data +public class ExpressConfig { + // 开发者ID + private Long devId; + // 开发者密钥 + private String devKey; + // 店铺ID + private String shopId; + // 加密签名 + private String sign; + // 顺丰IP地址 + private String serverHost; + +} diff --git a/src/main/java/com/gxwebsoft/shop/config/WxPayConfig.java b/src/main/java/com/gxwebsoft/shop/config/WxPayConfig.java new file mode 100644 index 0000000..92f69da --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/config/WxPayConfig.java @@ -0,0 +1,35 @@ +package com.gxwebsoft.shop.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +@Configuration +@PropertySource("classpath:wxpay.properties") +@ConfigurationProperties(prefix = "wxpay") +@Data +public class WxPayConfig { + + // 商户号 + private String mchId; + + // 证书序列号 + private String mchSerialNo; + + // 商户私钥文件 + private String privateKeyPath; + + // APIv3秘钥 + private String apiV3Key; + + // APPID + private String appId; + + // 微信服务器地址 + private String domain; + + // 接受结果通知地址 + private String notifyDomain; + +} diff --git a/src/main/java/com/gxwebsoft/shop/constants/OrderConstants.java b/src/main/java/com/gxwebsoft/shop/constants/OrderConstants.java new file mode 100644 index 0000000..9d89989 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/constants/OrderConstants.java @@ -0,0 +1,14 @@ +package com.gxwebsoft.shop.constants; + +public class OrderConstants { + // 订单来源 10普通订单 20砍价订单 30秒杀订单 + public static final Integer ORDER_SOURCE = 10; // 普通订单 + public static final Integer ORDER_SOURCE_BARGAIN = 20; // 砍价订单 + public static final Integer ORDER_SOURCE_SHARP= 30; // 秒杀订单 + + // 订单商品 + public static final Integer ORDER_GOODS_DELIVERY_STATUS10 = 10; // 未发货 + public static final Integer ORDER_GOODS_DELIVERY_STATUS20 = 20; // 已发货 + public static final Integer ORDER_GOODS_DELIVERY_STATUS30 = 30; // 部分发货 + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/CartController.java b/src/main/java/com/gxwebsoft/shop/controller/CartController.java new file mode 100644 index 0000000..668a75e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/CartController.java @@ -0,0 +1,148 @@ +package com.gxwebsoft.shop.controller; + +import cn.hutool.core.bean.BeanUtil; +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.Cart; +import com.gxwebsoft.shop.param.CartParam; +import com.gxwebsoft.shop.service.CartService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +/** + * 购物车记录表控制器 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Api(tags = "购物车记录表管理") +@RestController +@RequestMapping("/api/shop/cart") +public class CartController extends BaseController { + @Resource + private CartService cartService; + @Resource + private StringRedisTemplate stringRedisTemplate; + + @PreAuthorize("hasAuthority('shop:cart:list')") + @OperationLog + @ApiOperation("分页查询购物车记录表") + @GetMapping("/page") + public ApiResult> page(CartParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(cartService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(cartService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:cart:list')") + @OperationLog + @ApiOperation("查询全部购物车记录表") + @GetMapping() + public ApiResult> list(CartParam param) { +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(cartService.list(page.getOrderWrapper())); + // 使用关联查询 + + return success(cartService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:cart:list')") + @OperationLog + @ApiOperation("根据id查询购物车记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(cartService.getById(id)); + // 使用关联查询 + //return success(cartService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:cart:save')") + @OperationLog + @ApiOperation("添加购物车记录表") + @PostMapping() + public ApiResult save(@RequestBody Cart cart) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + // 存入redis + Map userMap = BeanUtil.beanToMap(loginUser); + String userMapKey = "oa:cart:".concat(loginUser.getUserId().toString()); + stringRedisTemplate.opsForHash().putAll(userMapKey,userMap); + stringRedisTemplate.expire(userMapKey,30, TimeUnit.MINUTES); + + if (loginUser != null) { + cart.setUserId(loginUser.getUserId()); + } + if (cartService.save(cart)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:cart:update')") + @OperationLog + @ApiOperation("修改购物车记录表") + @PutMapping() + public ApiResult update(@RequestBody Cart cart) { + if (cartService.updateById(cart)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:cart:remove')") + @OperationLog + @ApiOperation("删除购物车记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (cartService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:cart:save')") + @OperationLog + @ApiOperation("批量添加购物车记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (cartService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:cart:update')") + @OperationLog + @ApiOperation("批量修改购物车记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(cartService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:cart:remove')") + @OperationLog + @ApiOperation("批量删除购物车记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (cartService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/CategoryController.java b/src/main/java/com/gxwebsoft/shop/controller/CategoryController.java new file mode 100644 index 0000000..9b313db --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/CategoryController.java @@ -0,0 +1,141 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.CategoryService; +import com.gxwebsoft.shop.entity.Category; +import com.gxwebsoft.shop.param.CategoryParam; +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 2022-11-22 17:45:37 + */ +@Api(tags = "商品分类表管理") +@RestController +@RequestMapping("/api/shop/category") +public class CategoryController extends BaseController { + @Resource + private CategoryService categoryService; + + @PreAuthorize("hasAuthority('shop:category:list')") + @OperationLog + @ApiOperation("分页查询商品分类表") + @GetMapping("/page") + public ApiResult> page(CategoryParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); + page.setDefaultOrder("sort_number"); + return success(categoryService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(categoryService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:category:list')") + @OperationLog + @ApiOperation("查询全部商品分类表") + @GetMapping() + public ApiResult> list(CategoryParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); + page.setDefaultOrder("sort_number"); + return success(categoryService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(categoryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:category:list')") + @OperationLog + @ApiOperation("根据id查询商品分类表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(categoryService.getById(id)); + // 使用关联查询 + //return success(categoryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:category:save')") + @OperationLog + @ApiOperation("添加商品分类表") + @PostMapping() + public ApiResult save(@RequestBody Category category) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + category.setUserId(loginUser.getUserId()); + } + if (categoryService.save(category)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:category:update')") + @OperationLog + @ApiOperation("修改商品分类表") + @PutMapping() + public ApiResult update(@RequestBody Category category) { + if (categoryService.updateById(category)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:category:remove')") + @OperationLog + @ApiOperation("删除商品分类表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (categoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:category:save')") + @OperationLog + @ApiOperation("批量添加商品分类表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (categoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:category:update')") + @OperationLog + @ApiOperation("批量修改商品分类表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(categoryService, "category_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:category:remove')") + @OperationLog + @ApiOperation("批量删除商品分类表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (categoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/CommentController.java b/src/main/java/com/gxwebsoft/shop/controller/CommentController.java new file mode 100644 index 0000000..dbdcd33 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/CommentController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.CommentService; +import com.gxwebsoft.shop.entity.Comment; +import com.gxwebsoft.shop.param.CommentParam; +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 2022-11-23 21:18:56 + */ +@Api(tags = "商品评价记录表管理") +@RestController +@RequestMapping("/api/shop/comment") +public class CommentController extends BaseController { + @Resource + private CommentService commentService; + + @PreAuthorize("hasAuthority('shop:comment:list')") + @OperationLog + @ApiOperation("分页查询商品评价记录表") + @GetMapping("/page") + public ApiResult> page(CommentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(commentService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(commentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:comment:list')") + @OperationLog + @ApiOperation("查询全部商品评价记录表") + @GetMapping() + public ApiResult> list(CommentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(commentService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(commentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:comment:list')") + @OperationLog + @ApiOperation("根据id查询商品评价记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(commentService.getById(id)); + // 使用关联查询 + //return success(commentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:comment:save')") + @OperationLog + @ApiOperation("添加商品评价记录表") + @PostMapping() + public ApiResult save(@RequestBody Comment comment) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + comment.setUserId(loginUser.getUserId()); + } + if (commentService.save(comment)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:comment:update')") + @OperationLog + @ApiOperation("修改商品评价记录表") + @PutMapping() + public ApiResult update(@RequestBody Comment comment) { + if (commentService.updateById(comment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:comment:remove')") + @OperationLog + @ApiOperation("删除商品评价记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (commentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:comment:save')") + @OperationLog + @ApiOperation("批量添加商品评价记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (commentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:comment:update')") + @OperationLog + @ApiOperation("批量修改商品评价记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(commentService, "comment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:comment:remove')") + @OperationLog + @ApiOperation("批量删除商品评价记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (commentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/CouponController.java b/src/main/java/com/gxwebsoft/shop/controller/CouponController.java new file mode 100644 index 0000000..73b1780 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/CouponController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.CouponService; +import com.gxwebsoft.shop.entity.Coupon; +import com.gxwebsoft.shop.param.CouponParam; +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 2022-11-28 18:26:05 + */ +@Api(tags = "优惠券记录表管理") +@RestController +@RequestMapping("/api/shop/coupon") +public class CouponController extends BaseController { + @Resource + private CouponService couponService; + + @PreAuthorize("hasAuthority('shop:coupon:list')") + @OperationLog + @ApiOperation("分页查询优惠券记录表") + @GetMapping("/page") + public ApiResult> page(CouponParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(couponService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(couponService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:coupon:list')") + @OperationLog + @ApiOperation("查询全部优惠券记录表") + @GetMapping() + public ApiResult> list(CouponParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(couponService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(couponService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:coupon:list')") + @OperationLog + @ApiOperation("根据id查询优惠券记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(couponService.getById(id)); + // 使用关联查询 + //return success(couponService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:coupon:save')") + @OperationLog + @ApiOperation("添加优惠券记录表") + @PostMapping() + public ApiResult save(@RequestBody Coupon coupon) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + coupon.setUserId(loginUser.getUserId()); + } + if (couponService.save(coupon)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:coupon:update')") + @OperationLog + @ApiOperation("修改优惠券记录表") + @PutMapping() + public ApiResult update(@RequestBody Coupon coupon) { + if (couponService.updateById(coupon)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:coupon:remove')") + @OperationLog + @ApiOperation("删除优惠券记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (couponService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:coupon:save')") + @OperationLog + @ApiOperation("批量添加优惠券记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (couponService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:coupon:update')") + @OperationLog + @ApiOperation("批量修改优惠券记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(couponService, "coupon_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:coupon:remove')") + @OperationLog + @ApiOperation("批量删除优惠券记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (couponService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/ExpressController.java b/src/main/java/com/gxwebsoft/shop/controller/ExpressController.java new file mode 100644 index 0000000..da838d4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/ExpressController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.ExpressService; +import com.gxwebsoft.shop.entity.Express; +import com.gxwebsoft.shop.param.ExpressParam; +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 2022-11-22 00:21:07 + */ +@Api(tags = "物流公司记录表管理") +@RestController +@RequestMapping("/api/shop/express") +public class ExpressController extends BaseController { + @Resource + private ExpressService expressService; + + @PreAuthorize("hasAuthority('shop:express:list')") + @OperationLog + @ApiOperation("分页查询物流公司记录表") + @GetMapping("/page") + public ApiResult> page(ExpressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(expressService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(expressService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:express:list')") + @OperationLog + @ApiOperation("查询全部物流公司记录表") + @GetMapping() + public ApiResult> list(ExpressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(expressService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(expressService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:express:list')") + @OperationLog + @ApiOperation("根据id查询物流公司记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(expressService.getById(id)); + // 使用关联查询 + //return success(expressService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:express:save')") + @OperationLog + @ApiOperation("添加物流公司记录表") + @PostMapping() + public ApiResult save(@RequestBody Express express) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + express.setUserId(loginUser.getUserId()); + } + if (expressService.save(express)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:express:update')") + @OperationLog + @ApiOperation("修改物流公司记录表") + @PutMapping() + public ApiResult update(@RequestBody Express express) { + if (expressService.updateById(express)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:express:remove')") + @OperationLog + @ApiOperation("删除物流公司记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (expressService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:express:save')") + @OperationLog + @ApiOperation("批量添加物流公司记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (expressService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:express:update')") + @OperationLog + @ApiOperation("批量修改物流公司记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(expressService, "express_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:express:remove')") + @OperationLog + @ApiOperation("批量删除物流公司记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (expressService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java b/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java new file mode 100644 index 0000000..ffc1e16 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/GoodsController.java @@ -0,0 +1,138 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Goods; +import com.gxwebsoft.shop.param.GoodsParam; +import com.gxwebsoft.shop.service.GoodsService; +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-23 12:47:16 + */ +@Api(tags = "商品记录表管理") +@RestController +@RequestMapping("/api/shop/goods") +public class GoodsController extends BaseController { + @Resource + private GoodsService goodsService; + + @PreAuthorize("hasAuthority('shop:goods:list')") + @OperationLog + @ApiOperation("分页查询商品记录表") + @GetMapping("/page") + public ApiResult> page(GoodsParam param) { +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(goodsService.page(page, page.getWrapper())); + // 使用关联查询 + return success(goodsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:goods:list')") + @OperationLog + @ApiOperation("查询全部商品记录表") + @GetMapping() + public ApiResult> list(GoodsParam param) { +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(goodsService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(goodsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:goods:list')") + @OperationLog + @ApiOperation("根据id查询商品记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(goodsService.getById(id)); + // 使用关联查询 + //return success(goodsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:goods:save')") + @OperationLog + @ApiOperation("添加商品记录表") + @PostMapping() + public ApiResult save(@RequestBody Goods goods) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + goods.setUserId(loginUser.getUserId()); + } + if (goodsService.save(goods)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:goods:update')") + @OperationLog + @ApiOperation("修改商品记录表") + @PutMapping() + public ApiResult update(@RequestBody Goods goods) { + if (goodsService.updateById(goods)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:goods:remove')") + @OperationLog + @ApiOperation("删除商品记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (goodsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:goods:save')") + @OperationLog + @ApiOperation("批量添加商品记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (goodsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:goods:update')") + @OperationLog + @ApiOperation("批量修改商品记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(goodsService, "goods_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:goods:remove')") + @OperationLog + @ApiOperation("批量删除商品记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (goodsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/GoodsServiceController.java b/src/main/java/com/gxwebsoft/shop/controller/GoodsServiceController.java new file mode 100644 index 0000000..3a87d4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/GoodsServiceController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.GoodsServiceService; +import com.gxwebsoft.shop.entity.GoodsService; +import com.gxwebsoft.shop.param.GoodsServiceParam; +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 2022-11-23 21:57:50 + */ +@Api(tags = "商品服务与承诺记录表管理") +@RestController +@RequestMapping("/api/shop/goods-service") +public class GoodsServiceController extends BaseController { + @Resource + private GoodsServiceService goodsServiceService; + + @PreAuthorize("hasAuthority('shop:goodsService:list')") + @OperationLog + @ApiOperation("分页查询商品服务与承诺记录表") + @GetMapping("/page") + public ApiResult> page(GoodsServiceParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time asc"); + return success(goodsServiceService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(goodsServiceService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:goodsService:list')") + @OperationLog + @ApiOperation("查询全部商品服务与承诺记录表") + @GetMapping() + public ApiResult> list(GoodsServiceParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(goodsServiceService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(goodsServiceService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:goodsService:list')") + @OperationLog + @ApiOperation("根据id查询商品服务与承诺记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(goodsServiceService.getById(id)); + // 使用关联查询 + //return success(goodsServiceService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:goodsService:save')") + @OperationLog + @ApiOperation("添加商品服务与承诺记录表") + @PostMapping() + public ApiResult save(@RequestBody GoodsService goodsService) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + goodsService.setUserId(loginUser.getUserId()); + } + if (goodsServiceService.save(goodsService)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:goodsService:update')") + @OperationLog + @ApiOperation("修改商品服务与承诺记录表") + @PutMapping() + public ApiResult update(@RequestBody GoodsService goodsService) { + if (goodsServiceService.updateById(goodsService)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:goodsService:remove')") + @OperationLog + @ApiOperation("删除商品服务与承诺记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (goodsServiceService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:goodsService:save')") + @OperationLog + @ApiOperation("批量添加商品服务与承诺记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (goodsServiceService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:goodsService:update')") + @OperationLog + @ApiOperation("批量修改商品服务与承诺记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(goodsServiceService, "service_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:goodsService:remove')") + @OperationLog + @ApiOperation("批量删除商品服务与承诺记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (goodsServiceService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/MemberController.java b/src/main/java/com/gxwebsoft/shop/controller/MemberController.java new file mode 100644 index 0000000..ee4a847 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/MemberController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.MemberService; +import com.gxwebsoft.shop.entity.Member; +import com.gxwebsoft.shop.param.MemberParam; +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 2022-11-25 14:02:24 + */ +@Api(tags = "商城会员管理") +@RestController +@RequestMapping("/api/shop/member") +public class MemberController extends BaseController { + @Resource + private MemberService memberService; + + @PreAuthorize("hasAuthority('shop:member:list')") + @OperationLog + @ApiOperation("分页查询商城会员") + @GetMapping("/page") + public ApiResult> page(MemberParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(memberService.page(page, page.getWrapper())); + // 使用关联查询 + return success(memberService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:member:list')") + @OperationLog + @ApiOperation("查询全部商城会员") + @GetMapping() + public ApiResult> list(MemberParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); +// return success(memberService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(memberService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:member:list')") + @OperationLog + @ApiOperation("根据id查询商城会员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(memberService.getById(id)); + // 使用关联查询 + //return success(memberService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:member:save')") + @OperationLog + @ApiOperation("添加商城会员") + @PostMapping() + public ApiResult save(@RequestBody Member member) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + member.setUserId(loginUser.getUserId()); + } + if (memberService.save(member)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:member:update')") + @OperationLog + @ApiOperation("修改商城会员") + @PutMapping() + public ApiResult update(@RequestBody Member member) { + if (memberService.updateById(member)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:member:remove')") + @OperationLog + @ApiOperation("删除商城会员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (memberService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:member:save')") + @OperationLog + @ApiOperation("批量添加商城会员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (memberService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:member:update')") + @OperationLog + @ApiOperation("批量修改商城会员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(memberService, "member_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:member:remove')") + @OperationLog + @ApiOperation("批量删除商城会员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (memberService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/MerchantClerkController.java b/src/main/java/com/gxwebsoft/shop/controller/MerchantClerkController.java new file mode 100644 index 0000000..bb694b7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/MerchantClerkController.java @@ -0,0 +1,147 @@ +package com.gxwebsoft.shop.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.service.MerchantClerkService; +import com.gxwebsoft.shop.entity.MerchantClerk; +import com.gxwebsoft.shop.param.MerchantClerkParam; +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 2022-11-30 16:32:25 + */ +@Api(tags = "商家门店店员表管理") +@RestController +@RequestMapping("/api/shop/merchant-clerk") +public class MerchantClerkController extends BaseController { + @Resource + private MerchantClerkService merchantClerkService; + @Resource + private UserService userService; + + @PreAuthorize("hasAuthority('shop:merchantClerk:list')") + @OperationLog + @ApiOperation("分页查询商家门店店员表") + @GetMapping("/page") + public ApiResult> page(MerchantClerkParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(merchantClerkService.page(page, page.getWrapper())); + // 使用关联查询 + return success(merchantClerkService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:merchantClerk:list')") + @OperationLog + @ApiOperation("查询全部商家门店店员表") + @GetMapping() + public ApiResult> list(MerchantClerkParam param) { + PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(merchantClerkService.list(page.getOrderWrapper())); + // 使用关联查询 + return success(merchantClerkService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:merchantClerk:list')") + @OperationLog + @ApiOperation("根据id查询商家门店店员表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(merchantClerkService.getById(id)); + // 使用关联查询 + //return success(merchantClerkService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:merchantClerk:save')") + @OperationLog + @ApiOperation("添加商家门店店员表") + @PostMapping() + public ApiResult save(@RequestBody MerchantClerk merchantClerk) { + // 判断用户ID是否存在 + User user = userService.getById(merchantClerk.getUserId()); + if(user != null){ + // 防止重复 + if (merchantClerkService.count(new LambdaQueryWrapper() + .eq(MerchantClerk::getUserId, merchantClerk.getUserId())) > 0) { + return fail("该用户已被绑定"); + } + if (merchantClerkService.save(merchantClerk)) { + return success("添加成功"); + } + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantClerk:update')") + @OperationLog + @ApiOperation("修改商家门店店员表") + @PutMapping() + public ApiResult update(@RequestBody MerchantClerk merchantClerk) { + if (merchantClerkService.updateById(merchantClerk)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantClerk:remove')") + @OperationLog + @ApiOperation("删除商家门店店员表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (merchantClerkService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantClerk:save')") + @OperationLog + @ApiOperation("批量添加商家门店店员表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (merchantClerkService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantClerk:update')") + @OperationLog + @ApiOperation("批量修改商家门店店员表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(merchantClerkService, "clerk_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantClerk:remove')") + @OperationLog + @ApiOperation("批量删除商家门店店员表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (merchantClerkService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/MerchantController.java b/src/main/java/com/gxwebsoft/shop/controller/MerchantController.java new file mode 100644 index 0000000..2e62015 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/MerchantController.java @@ -0,0 +1,243 @@ +package com.gxwebsoft.shop.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.entity.MerchantWithdraw; +import com.gxwebsoft.shop.param.MerchantParam; +import com.gxwebsoft.shop.service.MerchantService; +import com.gxwebsoft.shop.service.MerchantWithdrawService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.List; + +import static com.gxwebsoft.common.core.constants.RedisConstants.MERCHANT_GEO_KEY; +import static com.gxwebsoft.common.core.constants.RedisConstants.MERCHANT_KEY; + +/** + * 商户管理控制器 + * + * @author 科技小王子 + * @since 2022-11-30 15:10:54 + */ +@Api(tags = "商户管理管理") +@RestController +@RequestMapping("/api/shop/merchant") +public class MerchantController extends BaseController { + @Resource + private MerchantService merchantService; + @Resource + private CacheClient cacheClient; + @Resource + private MerchantWithdrawService merchantWithdrawService; + + @PreAuthorize("hasAuthority('shop:merchant:list')") + @ApiOperation("分页查询商户管理") + @GetMapping("/page") + public ApiResult> page(MerchantParam param) { + // 使用关联查询 + return success(merchantService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:merchant:list')") + @ApiOperation("查询全部商户管理") + @GetMapping() + public ApiResult> list(MerchantParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + // 使用关联查询 + return success(merchantService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:merchant:list')") + @ApiOperation("根据id查询商户管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(merchantService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:merchant:save')") + @ApiOperation("添加商户管理") + @PostMapping() + public ApiResult save(@RequestBody Merchant merchant) { + if (merchantService.count(new LambdaQueryWrapper() + .eq(Merchant::getMerchantCode, merchant.getMerchantCode())) > 0) { + return fail("商户编号已存在"); + } + if (merchantService.save(merchant)) { + // 添加缓存 + String lngAndLat = merchant.getLngAndLat(); + String[] split = lngAndLat.split(","); + Double x = Double.parseDouble(split[0]); + Double y = Double.parseDouble(split[1]); + String id = merchant.getMerchantId().toString(); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.set(MERCHANT_KEY.concat(":").concat(merchant.getMerchantId().toString()),merchant); + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:merchant:update')") + @ApiOperation("修改商户管理") + @PutMapping() + public ApiResult update(@RequestBody Merchant merchant) { + // 超级管理员不能设为店主 + if(getLoginUser().getUserId().equals(merchant.getMerchantOwner())){ + return fail("超级管理员不能绑定为负责人!"); + } + if (merchantService.updateById(merchant)) { + // 添加缓存 + String lngAndLat = merchant.getLngAndLat(); + String[] split = lngAndLat.split(","); + Double x = Double.parseDouble(split[0]); + Double y = Double.parseDouble(split[1]); + String id = merchant.getMerchantId().toString(); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.set(MERCHANT_KEY.concat(":").concat(merchant.getMerchantId().toString()),merchant); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:merchant:remove')") + @ApiOperation("删除商户管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (merchantService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:merchant:save')") + @ApiOperation("批量添加商户管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (merchantService.saveBatch(list)) { + list.forEach(d -> { + // 添加缓存 + String lngAndLat = d.getLngAndLat(); + String[] split = lngAndLat.split(","); + Double x = Double.parseDouble(split[0]); + Double y = Double.parseDouble(split[1]); + String id = d.getMerchantId().toString(); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.geoAdd(MERCHANT_GEO_KEY,x,y,id); + cacheClient.set(MERCHANT_KEY.concat(":").concat(d.getMerchantId().toString()),d); + }); + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:merchant:update')") + @ApiOperation("批量修改商户管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(merchantService, "merchant_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:merchant:remove')") + @ApiOperation("批量删除商户管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (merchantService.removeByIds(ids)) { + // 删除缓存 + ids.forEach(id -> { + cacheClient.geoRemove(MERCHANT_GEO_KEY,id); + }); + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:merchant:list')") + @ApiOperation("根据定位查询附近的商户列表") + @PostMapping("/getListByGeo") + public ApiResult> getListByGeo(@RequestBody MerchantParam param) { + return success(merchantService.listByGeo(param)); + } + + @PreAuthorize("hasAuthority('shop:merchant:list')") + @ApiOperation("提现申请") + @PostMapping("/addWithdraw") + public ApiResult addWithdraw(@RequestBody Merchant merchant) { + // 提现金额是否不足 + if(merchant.getAmount().compareTo(merchant.getMoney()) > 0){ + return fail("可提现金额不足"); + } + // 提现金额不能等于0 + if(merchant.getAmount().compareTo(BigDecimal.ZERO) == 0){ + return fail("提现金额不正确"); + } + + // 保存提现账号 + final Merchant data = new Merchant(); + data.setMerchantId(merchant.getMerchantId()); + data.setAlipayName(merchant.getAlipayName()); + data.setAlipayAccount(merchant.getAlipayAccount()); + data.setBankName(merchant.getBankName()); + data.setBankAccount(merchant.getBankAccount()); + data.setBankCard(merchant.getBankCard()); + // 扣除提现金额 + data.setMoney(merchant.getMoney().subtract(merchant.getAmount())); + // 冻结金额 + data.setFreezeMoney(merchant.getFreezeMoney().add(merchant.getAmount())); + merchantService.updateById(data); + // 记录明细 + final MerchantWithdraw withdraw = new MerchantWithdraw(); + withdraw.setUserId(merchant.getUserId()); + withdraw.setMoney(merchant.getAmount().subtract(merchant.getAmount().multiply(new BigDecimal("0.04")))); + withdraw.setPayType(merchant.getPayType()); + withdraw.setAlipayName(merchant.getAlipayName()); + withdraw.setAlipayAccount(merchant.getAlipayAccount()); + withdraw.setBankName(merchant.getBankName()); + withdraw.setBankAccount(merchant.getBankAccount()); + withdraw.setBankCard(merchant.getBankCard()); + merchantWithdrawService.save(withdraw); + + return success("已收到您的提交申请",null); + } + + @PreAuthorize("hasAuthority('shop:merchant:update')") + @ApiOperation("冻结收益") + @PutMapping("/onFreezeMoney") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult onFreezeMoney(@RequestBody Merchant merchant) { + Merchant merchant1 = merchantService.getById(merchant.getMerchantId()); + merchant1.setMoney(merchant1.getMoney().subtract(merchant.getMoney())); + merchant1.setFreezeMoney(merchant1.getFreezeMoney().add(merchant.getMoney())); + if (merchantService.updateById(merchant1)) { + return success("操作成功"); + } + return fail("操作失败"); + } + + @PreAuthorize("hasAuthority('shop:merchant:update')") + @ApiOperation("冻结收益") + @PutMapping("/onUnFreezeMoney") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult onUnFreezeMoney(@RequestBody Merchant merchant) { + Merchant merchant1 = merchantService.getById(merchant.getMerchantId()); + merchant1.setMoney(merchant1.getMoney().add(merchant.getFreezeMoney())); + merchant1.setFreezeMoney(merchant1.getFreezeMoney().subtract(merchant.getFreezeMoney())); + if (merchantService.updateById(merchant1)) { + return success("操作成功"); + } + return fail("操作失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/MerchantWithdrawController.java b/src/main/java/com/gxwebsoft/shop/controller/MerchantWithdrawController.java new file mode 100644 index 0000000..045b69a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/MerchantWithdrawController.java @@ -0,0 +1,130 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.MerchantWithdraw; +import com.gxwebsoft.shop.param.MerchantWithdrawParam; +import com.gxwebsoft.shop.service.MerchantWithdrawService; +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-12-02 00:41:09 + */ +@Api(tags = "商户提现记录管理") +@RestController +@RequestMapping("/api/shop/merchant-withdraw") +public class MerchantWithdrawController extends BaseController { + @Resource + private MerchantWithdrawService merchantWithdrawService; + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:list')") + @OperationLog + @ApiOperation("分页查询商户提现记录") + @GetMapping("/page") + public ApiResult> page(MerchantWithdrawParam param) { + // 使用关联查询 + return success(merchantWithdrawService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:list')") + @OperationLog + @ApiOperation("查询全部商户提现记录") + @GetMapping() + public ApiResult> list(MerchantWithdrawParam param) { + return success(merchantWithdrawService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:list')") + @OperationLog + @ApiOperation("根据id查询商户提现记录") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(merchantWithdrawService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:save')") + @OperationLog + @ApiOperation("添加商户提现记录") + @PostMapping() + public ApiResult save(@RequestBody MerchantWithdraw merchantWithdraw) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + merchantWithdraw.setUserId(loginUser.getUserId()); + } + if (merchantWithdrawService.save(merchantWithdraw)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:update')") + @OperationLog + @ApiOperation("修改商户提现记录") + @PutMapping() + public ApiResult update(@RequestBody MerchantWithdraw merchantWithdraw) { + if (merchantWithdrawService.updateById(merchantWithdraw)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:remove')") + @OperationLog + @ApiOperation("删除商户提现记录") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (merchantWithdrawService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:save')") + @OperationLog + @ApiOperation("批量添加商户提现记录") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (merchantWithdrawService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:update')") + @OperationLog + @ApiOperation("批量修改商户提现记录") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(merchantWithdrawService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:merchantWithdraw:remove')") + @OperationLog + @ApiOperation("批量删除商户提现记录") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (merchantWithdrawService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderAddressController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderAddressController.java new file mode 100644 index 0000000..ff43f67 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderAddressController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.OrderAddressService; +import com.gxwebsoft.shop.entity.OrderAddress; +import com.gxwebsoft.shop.param.OrderAddressParam; +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 2022-12-02 21:21:10 + */ +@Api(tags = "订单收货地址记录表管理") +@RestController +@RequestMapping("/api/shop/order-address") +public class OrderAddressController extends BaseController { + @Resource + private OrderAddressService orderAddressService; + + @PreAuthorize("hasAuthority('shop:orderAddress:list')") + @OperationLog + @ApiOperation("分页查询订单收货地址记录表") + @GetMapping("/page") + public ApiResult> page(OrderAddressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(orderAddressService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(orderAddressService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderAddress:list')") + @OperationLog + @ApiOperation("查询全部订单收货地址记录表") + @GetMapping() + public ApiResult> list(OrderAddressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(orderAddressService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(orderAddressService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderAddress:list')") + @OperationLog + @ApiOperation("根据id查询订单收货地址记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(orderAddressService.getById(id)); + // 使用关联查询 + //return success(orderAddressService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:orderAddress:save')") + @OperationLog + @ApiOperation("添加订单收货地址记录表") + @PostMapping() + public ApiResult save(@RequestBody OrderAddress orderAddress) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + orderAddress.setUserId(loginUser.getUserId()); + orderAddress.setMerchantCode(getMerchantCode()); + } + if (orderAddressService.save(orderAddress)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderAddress:update')") + @OperationLog + @ApiOperation("修改订单收货地址记录表") + @PutMapping() + public ApiResult update(@RequestBody OrderAddress orderAddress) { + if (orderAddressService.updateById(orderAddress)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderAddress:remove')") + @OperationLog + @ApiOperation("删除订单收货地址记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (orderAddressService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:orderAddress:save')") + @OperationLog + @ApiOperation("批量添加订单收货地址记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (orderAddressService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderAddress:update')") + @OperationLog + @ApiOperation("批量修改订单收货地址记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(orderAddressService, "order_address_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderAddress:remove')") + @OperationLog + @ApiOperation("批量删除订单收货地址记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (orderAddressService.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 new file mode 100644 index 0000000..985e7ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderController.java @@ -0,0 +1,360 @@ +package com.gxwebsoft.shop.controller; + +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.gxwebsoft.apps.entity.BcAgent; +import com.gxwebsoft.apps.entity.EquipmentGoods; +import com.gxwebsoft.apps.entity.EquipmentOrderGoods; +import com.gxwebsoft.apps.param.BcAgentParam; +import com.gxwebsoft.apps.service.BcAgentService; +import com.gxwebsoft.apps.service.EquipmentGoodsService; +import com.gxwebsoft.apps.service.EquipmentOrderGoodsService; +import com.gxwebsoft.apps.service.EquipmentService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.UserReferee; +import com.gxwebsoft.shop.param.OrderGoodsParam; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import com.gxwebsoft.shop.service.UserRefereeService; +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 javax.imageio.ImageIO; +import java.awt.image.BufferedImage; +import java.io.IOException; +import java.net.URL; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.OrderConstants.ORDER_STATUS_DOING; +import static com.gxwebsoft.common.core.constants.OrderConstants.PAY_STATUS_SUCCESS; + +/** + * 订单记录表控制器 + * + * @author WebSoft + * @since 2022-11-16 11:25:58 + */ +@Api(tags = "订单记录表管理") +@RestController +@RequestMapping("/api/shop/order") +public class OrderController extends BaseController { + @Resource + private OrderService orderService; + @Resource + private EquipmentGoodsService equipmentGoodsService; + @Resource + private EquipmentService equipmentService; + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private EquipmentOrderGoodsService equipmentOrderGoodsService; + @Resource + private UserRefereeService userRefereeService; + @Resource + private UserService userService; + @Resource + private BcAgentService bcAgentService; + + @PreAuthorize("hasAuthority('shop:order:list')") + @OperationLog + @ApiOperation("分页查询订单记录表") + @GetMapping("/page") + public ApiResult> page(OrderParam param) { + // 搜索条件 + if (getMerchantCode() != null) { + param.setMerchantCode(getMerchantCode()); + } + // 云芯威项目查询关联设备 + if(getTenantId().equals(6)){ + // 查询订单的关联商品 + List list = orderService.listRel(param); + // 查询订单的设备 + for (Order order : list) { + final OrderGoodsParam orderGoodsParam = new OrderGoodsParam(); + orderGoodsParam.setOrderId(order.getOrderId()); + order.setGoodsList(orderGoodsService.listRel(orderGoodsParam)); + order.setEquipmentGoods(equipmentOrderGoodsService.getOne(new LambdaQueryWrapper().eq(EquipmentOrderGoods::getOrderId,order.getOrderId()))); + order.setEquipment(equipmentService.getById(order.getEquipmentId())); + } + PageParam page = new PageParam<>(param); + return success(new PageResult<>(list, page.getTotal())); + } + // 贵港自然资源报餐 + if(getTenantId().equals(10048) && getAppId() != null){ + param.setUserId(getLoginUserId()); + final Boolean agent = param.getAgent(); + if (agent != null) { + final BcAgentParam bcAgentParam = new BcAgentParam(); + bcAgentParam.setParentId(getLoginUserId()); + bcAgentParam.setLimit(100L); + final PageResult result = bcAgentService.pageRel(bcAgentParam); + final Set collect = result.getList().stream().map(BcAgent::getUserId).collect(Collectors.toSet()); + param.setUserId(null); + param.setUserIds(collect); + } + return success(orderService.pageRel(param)); + } + + // 使用关联查询 + return success(orderService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:order:list')") + @OperationLog + @ApiOperation("查询全部订单记录表") + @GetMapping() + public ApiResult> list(OrderParam param) { + // 使用关联查询 + return success(orderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:order:list')") + @OperationLog + @ApiOperation("按订单集查询") + @PostMapping("/listByIds") + public ApiResult> listByIds(@RequestBody List orderIds) { + System.out.println("按订单集查询 = " + orderIds); + if(orderIds.size() > 0){ + return success(orderService.listByIds(orderIds)); + } + return fail("订单不存在",null); + + +// +// +// Integer userId = getLoginUserId(); +// // 代报餐情况(未完成) +// final Order order = orderService.getById(orderIds.get(0)); +// // 订单不存在 +// if (order == null) { +// return fail("订单不存在",null); +// } +// +// if (!order.getUserId().equals(userId)) { +// userId = order.getUserId(); +// final List list1 = orderService.list(new LambdaQueryWrapper().in(Order::getOrderId,orderIds).eq(Order::getUserId, userId).eq(Order::getPayStatus,PAY_STATUS_NO_PAY)); +// final Set collect = list1.stream().map(Order::getOrderId).collect(Collectors.toSet()); +// return success(orderService.listByIds(collect)); +// } +// +// final List list1 = orderService.list(new LambdaQueryWrapper().eq(Order::getUserId, userId).eq(Order::getPayStatus,PAY_STATUS_NO_PAY)); +// final List collect = list1.stream().map(Order::getOrderId).collect(Collectors.toList()); +// if (CollectionUtils.isEmpty(collect)) { +// return fail("订单不存在2",null); +// } +// // 返回待支付订单 +// return success(orderService.listByIds(collect)); + } + + @PreAuthorize("hasAuthority('shop:order:list')") + @OperationLog + @ApiOperation("临时报餐订单") + @PostMapping("/getByTemporary") + public ApiResult> getByTemporary(@RequestBody OrderParam order) { + final List list = orderService.listRel(order); + + // 是否查询订单商品 + if(order.getShowGoodsList()){ + list.forEach(d->{ + final OrderGoodsParam ogp = new OrderGoodsParam(); + ogp.setOrderId(d.getOrderId()); + ogp.setTemporary(1); + d.setGoodsList(orderGoodsService.listRel(ogp)); + }); + } + // 返回待支付订单 + return success(list); + } + + @PreAuthorize("hasAuthority('shop:order:list')") + @OperationLog + @ApiOperation("根据id查询订单记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + Order order = orderService.getByIdRel(id); + // 云芯威关联设备查询 + if (!order.getGoodsId().equals(0) || !order.getEquipmentId().equals(0)) { + order.setEquipmentGoods(equipmentOrderGoodsService.getOne(new LambdaQueryWrapper().eq(EquipmentOrderGoods::getOrderId,order.getOrderId()))); + order.setEquipment(equipmentService.getById(order.getEquipmentId())); + } + return success(order); + } + + @PreAuthorize("hasAuthority('shop:order:save')") + @OperationLog + @ApiOperation("添加订单记录表") + @PostMapping() + public ApiResult save(@RequestBody Order order) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + order.setUserId(loginUser.getUserId()); + } + if (orderService.save(order)) { + // 云芯威BMS + if (order.getTenantId().equals(6)) { + final EquipmentGoods eg = equipmentGoodsService.getById(order.getOrderSourceId()); + eg.setOrderId(order.getOrderId()); + // 添加订单商品 + final EquipmentOrderGoods oeg = new EquipmentOrderGoods(); + oeg.setOrderId(order.getOrderId()); + oeg.setGoodsName(eg.getGoodsName()); + oeg.setEquipmentCategory(eg.getEquipmentCategory()); + oeg.setImage(eg.getImage()); + oeg.setCategoryId(eg.getCategoryId()); + oeg.setBatteryModel(eg.getBatteryModel()); + oeg.setSellingPoint(eg.getSellingPoint()); + oeg.setStockTotal(eg.getStockTotal()); + oeg.setContent(eg.getContent()); + oeg.setBatteryPrice(eg.getBatteryPrice()); + oeg.setBatteryRent(eg.getBatteryRent()); + oeg.setBatteryInsurance(eg.getBatteryInsurance()); + oeg.setBatteryDeposit(eg.getBatteryDeposit()); + oeg.setDownPayment(eg.getDownPayment()); + oeg.setPeriods(eg.getPeriods()); + oeg.setRepayment(eg.getRepayment()); + oeg.setServiceCharges(eg.getServiceCharges()); + oeg.setPeriodsType(eg.getPeriodsType()); + oeg.setUserId(eg.getUserId()); + oeg.setComments(eg.getComments()); + oeg.setStatus(eg.getStatus()); + oeg.setMerchantCode(eg.getMerchantCode()); + 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){ + order.setWeek(DateUtil.dayOfWeek(order.getDeliveryTime()) - 1); + } + return success("添加成功",order); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:order:update')") + @OperationLog + @ApiOperation("修改订单记录表") + @PutMapping() + public ApiResult update(@RequestBody Order order) { + if (orderService.updateById(order)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:order:remove')") + @OperationLog + @ApiOperation("删除订单记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (orderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:order:save')") + @OperationLog + @ApiOperation("批量添加订单记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (orderService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:order:update')") + @OperationLog + @ApiOperation("批量修改订单记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(orderService, "order_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:order:remove')") + @OperationLog + @ApiOperation("批量删除订单记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (orderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("支付成功") + @PostMapping("/setPayStatus") + public ApiResult setPayStatus(@RequestBody Order order){ + if (orderService.updateById(order)) { + return success("设置成功"); + } + return fail("设置失败"); + } + + @PreAuthorize("hasAuthority('shop:order:list')") + @OperationLog + @ApiOperation("生成核销付款码(二维码)") + @GetMapping("/generateQrCode") + public ApiResult generateQrCode(OrderParam param) throws IOException { + // 查询当天的报餐信息 + param.setUserId(getLoginUserId()); + param.setDeliveryTime(DateUtil.beginOfDay(DateUtil.date()).toString()); + param.setOrderStatus(ORDER_STATUS_DOING); + param.setPayStatus(PAY_STATUS_SUCCESS); + param.setDeleted(0); + final List list = orderService.listRel(param); + if(list.size() == 0){ + return fail("今日无报餐记录"); + } + final Order order = list.get(0); + // LOGO URL地址 + String logoUrl = "https://file.wsdns.cn/20230430/6fa31aca3b0d47af98a149cf2dd26a4f.jpeg"; + // 二维码生成图片保存路径 + String filePath = "/www/wwwroot/file.ws/file/qrcode/" + getLoginUserId() + "/payQrCode.jpg"; + // 二维码访问路径 + String qrcodeUrl = "https://file.gxwebsoft.com/qrcode/" + getLoginUserId() + "/payQrCode.jpg" + "?v=" + DateUtil.current(); + // 二维码内容 + final String orderNo = order.getOrderNo().toString(); + // 将URL转为BufferedImage + BufferedImage bufferedImage = ImageIO.read(new URL(logoUrl)); + // 生成二维码 + QrConfig config = new QrConfig(300, 300); + // 设置边距,既二维码和背景之间的边距 + config.setMargin(1); + // 附带小logo + config.setImg(bufferedImage); + QrCodeUtil.generate(orderNo, config, FileUtil.file(filePath)); + return success("请求成功",qrcodeUrl); + } +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderGoodsController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderGoodsController.java new file mode 100644 index 0000000..890f75d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderGoodsController.java @@ -0,0 +1,133 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.OrderGoodsParam; +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 2022-12-09 17:15:31 + */ +@Api(tags = "订单商品记录表管理") +@RestController +@RequestMapping("/api/shop/order-goods") +public class OrderGoodsController extends BaseController { + @Resource + private OrderGoodsService orderGoodsService; + + @PreAuthorize("hasAuthority('shop:orderGoods:list')") + @OperationLog + @ApiOperation("分页查询订单商品记录表") + @GetMapping("/page") + public ApiResult> page(OrderGoodsParam param) { + // 使用关联查询 + return success(orderGoodsService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:list')") + @OperationLog + @ApiOperation("查询全部订单商品记录表") + @GetMapping() + public ApiResult> list(OrderGoodsParam param) { + // 使用关联查询 + return success(orderGoodsService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:list')") + @OperationLog + @ApiOperation("根据id查询订单商品记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(orderGoodsService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:save')") + @OperationLog + @ApiOperation("添加订单商品记录表") + @PostMapping() + public ApiResult save(@RequestBody OrderGoods orderGoods) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + orderGoods.setUserId(loginUser.getUserId()); + orderGoods.setMerchantCode(getMerchantCode()); + } + if (orderGoodsService.save(orderGoods)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:update')") + @OperationLog + @ApiOperation("修改订单商品记录表") + @PutMapping() + public ApiResult update(@RequestBody OrderGoods orderGoods) { + if (orderGoodsService.updateById(orderGoods)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:remove')") + @OperationLog + @ApiOperation("删除订单商品记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (orderGoodsService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:save')") + @OperationLog + @ApiOperation("批量添加订单商品记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (orderGoodsService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:update')") + @OperationLog + @ApiOperation("批量修改订单商品记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(orderGoodsService, "order_goods_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderGoods:remove')") + @OperationLog + @ApiOperation("批量删除订单商品记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (orderGoodsService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderRefundAddressController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderRefundAddressController.java new file mode 100644 index 0000000..aa72ff0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderRefundAddressController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.OrderRefundAddressService; +import com.gxwebsoft.shop.entity.OrderRefundAddress; +import com.gxwebsoft.shop.param.OrderRefundAddressParam; +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-05-18 13:09:51 + */ +@Api(tags = "售后单退货地址记录表管理") +@RestController +@RequestMapping("/api/shop/order-refund-address") +public class OrderRefundAddressController extends BaseController { + @Resource + private OrderRefundAddressService orderRefundAddressService; + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:list')") + @OperationLog + @ApiOperation("分页查询售后单退货地址记录表") + @GetMapping("/page") + public ApiResult> page(OrderRefundAddressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(orderRefundAddressService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(orderRefundAddressService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:list')") + @OperationLog + @ApiOperation("查询全部售后单退货地址记录表") + @GetMapping() + public ApiResult> list(OrderRefundAddressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(orderRefundAddressService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(orderRefundAddressService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:list')") + @OperationLog + @ApiOperation("根据id查询售后单退货地址记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(orderRefundAddressService.getById(id)); + // 使用关联查询 + //return success(orderRefundAddressService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:save')") + @OperationLog + @ApiOperation("添加售后单退货地址记录表") + @PostMapping() + public ApiResult save(@RequestBody OrderRefundAddress orderRefundAddress) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + orderRefundAddress.setUserId(loginUser.getUserId()); + } + if (orderRefundAddressService.save(orderRefundAddress)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:update')") + @OperationLog + @ApiOperation("修改售后单退货地址记录表") + @PutMapping() + public ApiResult update(@RequestBody OrderRefundAddress orderRefundAddress) { + if (orderRefundAddressService.updateById(orderRefundAddress)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:remove')") + @OperationLog + @ApiOperation("删除售后单退货地址记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (orderRefundAddressService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:save')") + @OperationLog + @ApiOperation("批量添加售后单退货地址记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (orderRefundAddressService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:update')") + @OperationLog + @ApiOperation("批量修改售后单退货地址记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(orderRefundAddressService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefundAddress:remove')") + @OperationLog + @ApiOperation("批量删除售后单退货地址记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (orderRefundAddressService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderRefundController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderRefundController.java new file mode 100644 index 0000000..fc66a55 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderRefundController.java @@ -0,0 +1,151 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.apps.service.EquipmentService; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.service.OrderRefundService; +import com.gxwebsoft.shop.entity.OrderRefund; +import com.gxwebsoft.shop.param.OrderRefundParam; +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 com.gxwebsoft.shop.service.OrderService; +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; + +import static com.gxwebsoft.common.core.constants.OrderConstants.RECEIPT_STATUS_RETURN; + +/** + * 售后单记录表控制器 + * + * @author 科技小王子 + * @since 2023-05-18 13:09:51 + */ +@Api(tags = "售后单记录表管理") +@RestController +@RequestMapping("/api/shop/order-refund") +public class OrderRefundController extends BaseController { + @Resource + private OrderRefundService orderRefundService; + @Resource + private OrderService orderService; + @Resource + private EquipmentService equipmentService; + + @PreAuthorize("hasAuthority('shop:orderRefund:list')") + @OperationLog + @ApiOperation("分页查询售后单记录表") + @GetMapping("/page") + public ApiResult> page(OrderRefundParam param) { + // 使用关联查询 + return success(orderRefundService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderRefund:list')") + @OperationLog + @ApiOperation("查询全部售后单记录表") + @GetMapping() + public ApiResult> list(OrderRefundParam param) { + // 使用关联查询 + return success(orderRefundService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderRefund:list')") + @OperationLog + @ApiOperation("根据id查询售后单记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(orderRefundService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:orderRefund:save')") + @OperationLog + @ApiOperation("添加售后单记录表") + @PostMapping() + public ApiResult save(@RequestBody OrderRefund orderRefund) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + orderRefund.setUserId(loginUser.getUserId()); + } + if (orderRefundService.save(orderRefund)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefund:update')") + @OperationLog + @ApiOperation("修改售后单记录表") + @PutMapping() + public ApiResult update(@RequestBody OrderRefund orderRefund) { + if (orderRefundService.updateById(orderRefund)) { + if(orderRefund.getTenantId().equals(6)){ + final Integer orderId = orderRefund.getOrderId(); + final Order order = orderService.getById(orderId); + System.out.println("order = " + order); + order.setReceiptStatus(RECEIPT_STATUS_RETURN); + final Equipment equipment = equipmentService.getById(order.getEquipmentId()); + equipment.setUserId(0); + equipmentService.updateById(equipment); + } + return success("操作成功"); + } + return fail("退租失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefund:remove')") + @OperationLog + @ApiOperation("删除售后单记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (orderRefundService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefund:save')") + @OperationLog + @ApiOperation("批量添加售后单记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (orderRefundService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefund:update')") + @OperationLog + @ApiOperation("批量修改售后单记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(orderRefundService, "order_refund_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRefund:remove')") + @OperationLog + @ApiOperation("批量删除售后单记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (orderRefundService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/OrderRenewController.java b/src/main/java/com/gxwebsoft/shop/controller/OrderRenewController.java new file mode 100644 index 0000000..b1372b8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/OrderRenewController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.OrderRenewService; +import com.gxwebsoft.shop.entity.OrderRenew; +import com.gxwebsoft.shop.param.OrderRenewParam; +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-04-13 10:34:35 + */ +@Api(tags = "续费订单记录表管理") +@RestController +@RequestMapping("/api/shop/order-renew") +public class OrderRenewController extends BaseController { + @Resource + private OrderRenewService orderRenewService; + + @PreAuthorize("hasAuthority('shop:orderRenew:list')") + @OperationLog + @ApiOperation("分页查询续费订单记录表") + @GetMapping("/page") + public ApiResult> page(OrderRenewParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(orderRenewService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(orderRenewService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderRenew:list')") + @OperationLog + @ApiOperation("查询全部续费订单记录表") + @GetMapping() + public ApiResult> list(OrderRenewParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(orderRenewService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(orderRenewService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:orderRenew:list')") + @OperationLog + @ApiOperation("根据id查询续费订单记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(orderRenewService.getById(id)); + // 使用关联查询 + //return success(orderRenewService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:orderRenew:save')") + @OperationLog + @ApiOperation("添加续费订单记录表") + @PostMapping() + public ApiResult save(@RequestBody OrderRenew orderRenew) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + orderRenew.setUserId(loginUser.getUserId()); + orderRenew.setMerchantCode(getMerchantCode()); + } + if (orderRenewService.save(orderRenew)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRenew:update')") + @OperationLog + @ApiOperation("修改续费订单记录表") + @PutMapping() + public ApiResult update(@RequestBody OrderRenew orderRenew) { + if (orderRenewService.updateById(orderRenew)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRenew:remove')") + @OperationLog + @ApiOperation("删除续费订单记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (orderRenewService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRenew:save')") + @OperationLog + @ApiOperation("批量添加续费订单记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (orderRenewService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRenew:update')") + @OperationLog + @ApiOperation("批量修改续费订单记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(orderRenewService, "order_renew_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:orderRenew:remove')") + @OperationLog + @ApiOperation("批量删除续费订单记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (orderRenewService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/PaymentController.java b/src/main/java/com/gxwebsoft/shop/controller/PaymentController.java new file mode 100644 index 0000000..8721f97 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/PaymentController.java @@ -0,0 +1,539 @@ +package com.gxwebsoft.shop.controller; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayConstants; +import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.internal.util.AlipayEncrypt; +import com.alipay.api.internal.util.AlipaySignature; +import com.alipay.api.request.AlipayTradeCreateRequest; +import com.alipay.api.request.AlipayTradeQueryRequest; +import com.alipay.api.response.AlipayTradeCreateResponse; +import com.alipay.api.response.AlipayTradeQueryResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.apps.entity.BcTemporary; +import com.gxwebsoft.apps.param.BcTemporaryParam; +import com.gxwebsoft.apps.service.BcTemporaryService; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.config.ConfigProperties; +import com.gxwebsoft.common.core.exception.BusinessException; +import com.gxwebsoft.common.core.utils.AlipayConfigUtil; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.OperationRecordService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.Payment; +import com.gxwebsoft.shop.entity.UserBalanceLog; +import com.gxwebsoft.shop.param.PaymentParam; +import com.gxwebsoft.shop.service.OrderService; +import com.gxwebsoft.shop.service.PaymentService; +import com.gxwebsoft.shop.service.UserBalanceLogService; +import com.gxwebsoft.shop.service.UserOauthService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiModelProperty; +import io.swagger.annotations.ApiOperation; +import org.springframework.core.env.Environment; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_USE; +import static com.gxwebsoft.common.core.constants.OrderConstants.*; + +/** + * 商城支付方式记录表控制器 + * + * @author 科技小王子 + * @since 2022-12-15 19:11:07 + */ +@Api(tags = "商城支付方式记录表管理") +@RestController +@RequestMapping("/api/shop/payment") +public class PaymentController extends BaseController { + @Resource + private PaymentService paymentService; + @Resource + private OrderService orderService; + @Resource + private Environment config; + @Resource + private ConfigProperties pathConfig; + @Resource + private OperationRecordService operationRecordService; + @Resource + private UserOauthService userOauthService; + @Resource + private AlipayConfigUtil alipayConfig; + @Resource + private UserService userService; + @Resource + private UserBalanceLogService userBalanceLogService; + @Resource + private BcTemporaryService bcTemporaryService; + + @PreAuthorize("hasAuthority('shop:payment:list')") + @ApiOperation("分页查询商城支付方式记录表") + @GetMapping("/page") + public ApiResult> page(PaymentParam param) { + PageParam page = new PageParam<>(param); + return success(paymentService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(paymentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:payment:list')") + @ApiOperation("查询全部商城支付方式记录表") + @GetMapping() + public ApiResult> list(PaymentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(paymentService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(paymentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:payment:list')") + @ApiOperation("根据id查询商城支付方式记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(paymentService.getById(id)); + // 使用关联查询 + //return success(paymentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:payment:save')") + @ApiOperation("添加商城支付方式记录表") + @PostMapping() + public ApiResult save(@RequestBody Payment payment) { + if (paymentService.count(new LambdaQueryWrapper() + .eq(Payment::getMethod, payment.getMethod())) > 0) { + return fail("该支付方式已存在"); + } + if (paymentService.save(payment)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:payment:update')") + @OperationLog + @ApiOperation("修改商城支付方式记录表") + @PutMapping() + public ApiResult update(@RequestBody Payment payment) { + if (paymentService.updateById(payment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:payment:remove')") + @OperationLog + @ApiOperation("删除商城支付方式记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (paymentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:payment:save')") + @OperationLog + @ApiOperation("批量添加商城支付方式记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (paymentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:payment:update')") + @OperationLog + @ApiOperation("批量修改商城支付方式记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(paymentService, "payment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:payment:remove')") + @OperationLog + @ApiOperation("批量删除商城支付方式记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (paymentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @ApiOperation("支付宝手机号码") + @PostMapping("/getPhoneNumber") + public ApiResult getPhoneNumber(@RequestBody Map params) { + final String encryptedData = params.get("encryptedData"); + final String tenantId = params.get("tenantId"); + // 支付宝配置信息 + JSONObject config = alipayConfig.payment(Integer.valueOf(tenantId)); + + //1. 获取验签和解密所需要的参数 + JSONObject jsonObject =JSONObject.parseObject(encryptedData); + String content = jsonObject.getString("response"); + String sign = jsonObject.getString("sign"); + String signType = "RSA2"; + String charset = "UTF-8"; + String encryptType = "AES"; + String alipayCertPublicKey = pathConfig.getUploadPath() + "file" + config.getString("alipayCertPublicKey"); + boolean isDataEncrypted = !content.startsWith("{"); + boolean signVerified = false; + //2. 验签 + String signContent = content; + String signVeriKey = ""; // 支付宝公钥 + String decryptKey = config.getString("decryptKey"); // 加解密密钥 +// System.out.println("decryptKey = " + decryptKey); +// System.out.println(content); +// System.out.println(sign); +// System.out.println(alipayCertPublicKey); +// System.out.println(charset); +// System.out.println(signType); +// System.out.println(isDataEncrypted); + if (isDataEncrypted) { + signContent = "\"" + signContent + "\""; + } try { + //验签方法 + signVerified = AlipaySignature.rsaCertCheck(signContent, sign, alipayCertPublicKey, charset, signType); + } catch (AlipayApiException e) { + // 验签异常, 日志 + } if (!signVerified) { + //验签不通过(异常或者报文被篡改),终止流程(不需要做解密) + return fail("验签失败"); + } + //3. 解密 + String plainData = null; + if (isDataEncrypted) { + try { + plainData = AlipayEncrypt.decryptContent(content, encryptType, decryptKey, charset); + } catch (AlipayApiException e) { + //解密异常, 记录日志 + return fail("解密异常"); + }} else { + plainData = content; + } + return success("获取成功",plainData); + } + + @ApiModelProperty("支付宝小程序支付") + @GetMapping("/mp-alipay/{id}") + public ApiResult mpAlipay(@PathVariable("id") Integer id) throws AlipayApiException { + // 验证签名 + isCheckSign(); + // 订单数据 + Order order = orderService.getByIdRel(id); + // 实例化客户端 + DefaultAlipayClient alipayClient = alipayConfig.alipayClient(order.getTenantId()); + try { + AlipayTradeCreateRequest request = new AlipayTradeCreateRequest(); + // 配置公共请求参数 + request.setNotifyUrl(pathConfig.getServerUrl() + "/shop/payment/mp-alipay/notify"); +// request.setNotifyUrl("https://454k72r798.goho.co/api/shop/payment/mp-alipay/notify"); + request.setReturnUrl(null); + // 配置业务参数 + JSONObject bizContent = new JSONObject(); + System.out.println("bizContent = " + order); + bizContent.put("out_trade_no", order.getOrderNo()); + bizContent.put("total_amount", order.getPayPrice()); + bizContent.put("subject", order.getMerchantName()); + // 拿不到手机号码?? + bizContent.put("buyer_id", userOauthService.getOauthIdByUserId(order.getUserId(), "MP-ALIPAY")); + request.setBizContent(bizContent.toString()); + //SDK 已经封装掉了公共参数,这里只需要传入业务参数。 + AlipayTradeCreateResponse response = alipayClient.certificateExecute(request); + String trade_no = response.getTradeNo();// 获取返回的tradeNO。 + return success("支付成功", trade_no); + } catch (AlipayApiException e) { + e.printStackTrace(); + throw new RuntimeException(); + } + } + + @ApiModelProperty("异步通知") + @OperationLog + @PostMapping("/mp-alipay/notify") + public String alipayNotify(@RequestParam Map params) throws AlipayApiException { + System.out.println("异步处理>>>>"); + System.out.println("params = " + params); + String outTradeNo = params.get("out_trade_no"); + Order order = orderService.getByOutTradeNo(outTradeNo); + if(order == null){ + throw new BusinessException("订单不存在"); + } + final JSONObject config = alipayConfig.payment(order.getTenantId()); + // 生成环境证书路径 + String alipayCertPublicKey = pathConfig.getUploadPath() + "file" + config.getString("alipayCertPublicKey"); + // TODO 验签成功后,按照支付结果异步通知中的描述,对支付结果中的业务内容进行二次校验,校验成功后在response中返回success并继续商户自身业务处理,校验失败返回failure + boolean flag = AlipaySignature.rsaCertCheckV1(params, alipayCertPublicKey, AlipayConstants.CHARSET_UTF8, AlipayConstants.SIGN_TYPE_RSA2); + System.out.println("flag>>>>>>>>>>>>>>>>>>>>>>>"); + System.out.println(flag); + // 处理订单业务 + if (flag) { + final String tradeStatus = params.get("trade_status"); + final String receipt_amount = params.get("receipt_amount"); + final String payPrice = order.getPayPrice().toString(); + final String trade_no = params.get("trade_no"); + final String subject = params.get("subject"); + + // 1. 验证appId是否一致 + final String app_id = params.get("app_id"); + if(!config.getString("alipayAppId").equals(app_id)){ + System.out.println("支付宝appId不一致 = " + app_id); + throw new BusinessException("支付宝appId不一致"); + } + // 2. 订单金额 + if(!payPrice.equals(receipt_amount)){ + System.out.println("订单金额是不一致 = " + receipt_amount); + throw new BusinessException("订单金额是不一致"); + } + // 3. 判断交易状态 + if(!"TRADE_SUCCESS".equals(tradeStatus)){ + System.out.println("支付失败 = " + tradeStatus); + throw new BusinessException("支付失败"); + } + // 4. 修改支付状态 + order.setPayStatus(PAY_STATUS_SUCCESS); + order.setPayMethod(PAY_METHOD_ALIPAY); + order.setReceiptAmount(new BigDecimal(receipt_amount)); + order.setPayTime(DateUtil.date()); + order.setTradeId(trade_no); + order.setSubject(subject); + System.out.println("order2 = " + order); + final boolean b = orderService.updateByIdRel(order); + System.out.println("bsss = " + b); + return "success"; + } + // TODO 验签失败则记录异常日志,并在response中返回failure. + return "failure"; + } + + @OperationLog + @ApiModelProperty("余额支付") + @GetMapping("/balance/{id}") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult balance(@PathVariable("id") Integer id) throws AlipayApiException { + // 1. 验证签名 + isCheckSign(); + // 订单数据 + Order order = orderService.getByIdRel(id); + // 当前登录用户id + User user = new User(); + // 代付款情况 + if(!order.getUserId().equals(getLoginUserId())){ + user = userService.getById(order.getUserId()); + }else{ + user = getLoginUser(); + } + final Integer userId = user.getUserId(); + final BigDecimal balance = user.getBalance(); + final BigDecimal payPrice = order.getPayPrice(); + if(balance.compareTo(payPrice) < 0){ + return fail("余额不足 = " + balance.compareTo(payPrice)); + } + // 2. 扣除余额操作 + BigDecimal subtract = balance.subtract(payPrice); + user.setBalance(subtract); + userService.updateById(user); + // 3. 记录余额明细 + UserBalanceLog userBalanceLog = new UserBalanceLog(); + userBalanceLog.setUserId(userId); + userBalanceLog.setScene(BALANCE_USE); + userBalanceLog.setMoney(payPrice); + userBalanceLog.setBalance(subtract); + userBalanceLog.setComments(order.getOrderNo().toString()); + userBalanceLog.setMerchantCode(order.getMerchantCode()); + userBalanceLogService.save(userBalanceLog); + // 4. 修改支付状态 + order.setPayStatus(PAY_STATUS_SUCCESS); + order.setPayMethod(PAY_METHOD_BALANCE); + order.setReceiptAmount(payPrice); + order.setPayTime(DateUtil.date()); + order.setSubject(order.getMerchantName()); + orderService.updateByIdRel(order); + // 5. 续租订单 + if(order.getRentOrderId() > 0){ + // 主订单 + Order parentOrder = orderService.getById(order.getRentOrderId()); + // 更新过期时间延长一个月 + Date expirationTime = parentOrder.getExpirationTime(); + DateTime nextMonthTime = DateUtil.offsetMonth(expirationTime, 1); + parentOrder.setExpirationTime(nextMonthTime); + orderService.updateById(parentOrder); + // 保存续费订单状态 + order.setDeliveryStatus(DELIVERY_STATUS_YES); + order.setReceiptStatus(RECEIPT_STATUS_YES); + order.setOrderStatus(ORDER_STATUS_COMPLETED); + order.setStartTime(expirationTime); + order.setExpirationTime(nextMonthTime); + orderService.updateById(order); + } + // 6. 是否是临时报餐 + final BcTemporaryParam bcTemporaryParam = new BcTemporaryParam(); + bcTemporaryParam.setUserId(getLoginUserId()); + bcTemporaryParam.setApplyStatus(1); + final List bcTemporaries = bcTemporaryService.listRel(bcTemporaryParam); + bcTemporaries.forEach(b -> { + b.setStatus(1); + bcTemporaryService.updateById(b); + }); + return success("支付成功",user); + } + + @OperationLog + @ApiModelProperty("余额支付批量") + @PostMapping("/balanceBatch") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult balanceBatch(@RequestBody List orderIds) throws AlipayApiException { + // 1. 验证签名 + isCheckSign(); + // 订单数据 + final List list = orderService.listByIds(orderIds); + final StringBuilder sb = new StringBuilder(); + + list.forEach(d -> { + // 当前登录用户id + User user = new User(); + // 代付款情况 + if(!d.getUserId().equals(getLoginUserId())){ + user = userService.getById(d.getUserId()); + }else{ + user = getLoginUser(); + } + final Integer userId = user.getUserId(); + final BigDecimal balance = user.getBalance(); + final BigDecimal payPrice = d.getPayPrice(); + if(balance.compareTo(payPrice) < 0){ + sb.append("下单失败:").append(user.getNickname()).append("余额不足"); + throw new BusinessException("余额不足"); + } + // 2. 扣除余额操作 + BigDecimal subtract = balance.subtract(payPrice); + user.setBalance(subtract); + userService.updateById(user); + // 3. 记录余额明细 + UserBalanceLog userBalanceLog = new UserBalanceLog(); + userBalanceLog.setUserId(userId); + userBalanceLog.setScene(BALANCE_USE); + userBalanceLog.setMoney(payPrice); + userBalanceLog.setBalance(subtract); + userBalanceLog.setComments(d.getOrderNo().toString()); + userBalanceLog.setMerchantCode(d.getMerchantCode()); + userBalanceLogService.save(userBalanceLog); + // 4. 修改支付状态 + d.setPayStatus(PAY_STATUS_SUCCESS); + d.setPayMethod(PAY_METHOD_BALANCE); + d.setReceiptAmount(payPrice); + d.setPayTime(DateUtil.date()); + d.setSubject(d.getMerchantName()); + orderService.updateByIdRel(d); + // 5. 续租订单 + if(d.getRentOrderId() > 0){ + // 主订单 + Order parentOrder = orderService.getById(d.getRentOrderId()); + // 更新过期时间延长一个月 + Date expirationTime = parentOrder.getExpirationTime(); + DateTime nextMonthTime = DateUtil.offsetMonth(expirationTime, 1); + parentOrder.setExpirationTime(nextMonthTime); + orderService.updateById(parentOrder); + // 保存续费订单状态 + d.setDeliveryStatus(DELIVERY_STATUS_YES); + d.setReceiptStatus(RECEIPT_STATUS_YES); + d.setOrderStatus(ORDER_STATUS_COMPLETED); + d.setStartTime(expirationTime); + d.setExpirationTime(nextMonthTime); + orderService.updateById(d); + } + // 6. 是否是临时报餐 + final BcTemporaryParam bcTemporaryParam = new BcTemporaryParam(); + bcTemporaryParam.setUserId(getLoginUserId()); + bcTemporaryParam.setApplyStatus(1); + final List bcTemporaries = bcTemporaryService.listRel(bcTemporaryParam); + bcTemporaries.forEach(b -> { + b.setStatus(1); + bcTemporaryService.updateById(b); + }); + }); + return success("支付成功",sb); + } + + @ApiModelProperty("统一收单交易查询") + @GetMapping("/mp-alipay/query/{id}") + public ApiResult query(@PathVariable("id") Integer id) throws AlipayApiException { + // 验证签名 + isCheckSign(); + // 订单数据 + Order order = orderService.getByIdRel(id); + // 实例化客户端 + DefaultAlipayClient alipayClient = alipayConfig.alipayClient(order.getTenantId()); + AlipayTradeQueryRequest request = new AlipayTradeQueryRequest(); + JSONObject bizContent = new JSONObject(); + bizContent.put("out_trade_no", order.getOrderNo()); + request.setBizContent(bizContent.toString()); + AlipayTradeQueryResponse response = alipayClient.certificateExecute(request); + if(response.isSuccess()){ + System.out.println("调用成功"); + orderService.paySuccess(response); + } else { + System.out.println("调用失败"); + } + return success("调用成功",response); + } + + @ApiModelProperty("测试") + @GetMapping("/mp-alipay/test") + public String test() { + System.out.println("开始>>>>>"); + Order order = orderService.getByOutTradeNo("2023213225911618"); + System.out.println("order = " + order); + order.setPayPrice(new BigDecimal("0.11")); + order.setTotalPrice(new BigDecimal("0.11")); + order.setPayStatus(PAY_STATUS_SUCCESS); + final boolean b = orderService.updateByIdRel(order); + System.out.println("b = " + b); + +// params.put("gmt_create", "2022-12-16 21:32:33"); +// params.put("charset", "UTF-8"); +// params.put("seller_email", "zhu115289@163.com"); +// params.put("subject", "测试商品"); +// params.put("buyer_id", "2088202959044205"); +// params.put("invoice_amount", "0.01"); +// params.put("notify_id", "2022121601222213308044201435873270"); +// params.put("fund_bill_list", ""); +// params.put("notify_type", "trade_status_sync"); +// params.put("trade_status", "TRADE_SUCCESS"); +// params.put("receipt_amount", "0.01"); +// params.put("buyer_pay_amount", "0.01"); +// params.put("app_id", "2021003156628508"); +// params.put("seller_id", "2088431805524422"); +// params.put("gmt_payment", "2022-12-16 21:33:07"); +// params.put("notify_time", "2022-12-16 21:33:09"); +// params.put("version", "1.0"); +// params.put("out_trade_no", "20221116205303366"); +// params.put("total_amount", "0.01"); +// params.put("trade_no", "2022121622001444201411215463"); +// params.put("auth_app_id", "2021003156628508"); +// params.put("buyer_logon_id", "ip1***@163.com"); +// params.put("point_amount", "0.00"); +// // 处理订单业务 +// orderService.paySuccess(params); + return "success"; + } +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/PaymentTemplateController.java b/src/main/java/com/gxwebsoft/shop/controller/PaymentTemplateController.java new file mode 100644 index 0000000..a62c597 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/PaymentTemplateController.java @@ -0,0 +1,134 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.PaymentTemplateService; +import com.gxwebsoft.shop.entity.PaymentTemplate; +import com.gxwebsoft.shop.param.PaymentTemplateParam; +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 2022-12-09 13:59:38 + */ +@Api(tags = "商城支付模板记录表管理") +@RestController +@RequestMapping("/api/shop/payment-template") +public class PaymentTemplateController extends BaseController { + @Resource + private PaymentTemplateService paymentTemplateService; + + @PreAuthorize("hasAuthority('shop:paymentTemplate:list')") + @OperationLog + @ApiOperation("分页查询商城支付模板记录表") + @GetMapping("/page") + public ApiResult> page(PaymentTemplateParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(paymentTemplateService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(paymentTemplateService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:paymentTemplate:list')") + @OperationLog + @ApiOperation("查询全部商城支付模板记录表") + @GetMapping() + public ApiResult> list(PaymentTemplateParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(paymentTemplateService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(paymentTemplateService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:paymentTemplate:list')") + @OperationLog + @ApiOperation("根据id查询商城支付模板记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(paymentTemplateService.getById(id)); + // 使用关联查询 + //return success(paymentTemplateService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:paymentTemplate:save')") + @OperationLog + @ApiOperation("添加商城支付模板记录表") + @PostMapping() + public ApiResult save(@RequestBody PaymentTemplate paymentTemplate) { + if (paymentTemplateService.save(paymentTemplate)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTemplate:update')") + @OperationLog + @ApiOperation("修改商城支付模板记录表") + @PutMapping() + public ApiResult update(@RequestBody PaymentTemplate paymentTemplate) { + if (paymentTemplateService.updateById(paymentTemplate)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTemplate:remove')") + @OperationLog + @ApiOperation("删除商城支付模板记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (paymentTemplateService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTemplate:save')") + @OperationLog + @ApiOperation("批量添加商城支付模板记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (paymentTemplateService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTemplate:update')") + @OperationLog + @ApiOperation("批量修改商城支付模板记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(paymentTemplateService, "template_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTemplate:remove')") + @OperationLog + @ApiOperation("批量删除商城支付模板记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (paymentTemplateService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/PaymentTradeController.java b/src/main/java/com/gxwebsoft/shop/controller/PaymentTradeController.java new file mode 100644 index 0000000..b262031 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/PaymentTradeController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.PaymentTradeService; +import com.gxwebsoft.shop.entity.PaymentTrade; +import com.gxwebsoft.shop.param.PaymentTradeParam; +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 2022-12-09 13:59:38 + */ +@Api(tags = "第三方支付交易记录表管理") +@RestController +@RequestMapping("/api/shop/payment-trade") +public class PaymentTradeController extends BaseController { + @Resource + private PaymentTradeService paymentTradeService; + + @PreAuthorize("hasAuthority('shop:paymentTrade:list')") + @OperationLog + @ApiOperation("分页查询第三方支付交易记录表") + @GetMapping("/page") + public ApiResult> page(PaymentTradeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(paymentTradeService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(paymentTradeService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:paymentTrade:list')") + @OperationLog + @ApiOperation("查询全部第三方支付交易记录表") + @GetMapping() + public ApiResult> list(PaymentTradeParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(paymentTradeService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(paymentTradeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:paymentTrade:list')") + @OperationLog + @ApiOperation("根据id查询第三方支付交易记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(paymentTradeService.getById(id)); + // 使用关联查询 + //return success(paymentTradeService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:paymentTrade:save')") + @OperationLog + @ApiOperation("添加第三方支付交易记录表") + @PostMapping() + public ApiResult save(@RequestBody PaymentTrade paymentTrade) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + paymentTrade.setUserId(loginUser.getUserId()); + paymentTrade.setMerchantCode(getMerchantCode()); + } + if (paymentTradeService.save(paymentTrade)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTrade:update')") + @OperationLog + @ApiOperation("修改第三方支付交易记录表") + @PutMapping() + public ApiResult update(@RequestBody PaymentTrade paymentTrade) { + if (paymentTradeService.updateById(paymentTrade)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTrade:remove')") + @OperationLog + @ApiOperation("删除第三方支付交易记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (paymentTradeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTrade:save')") + @OperationLog + @ApiOperation("批量添加第三方支付交易记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (paymentTradeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTrade:update')") + @OperationLog + @ApiOperation("批量修改第三方支付交易记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(paymentTradeService, "trade_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:paymentTrade:remove')") + @OperationLog + @ApiOperation("批量删除第三方支付交易记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (paymentTradeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/RechargeOrderController.java b/src/main/java/com/gxwebsoft/shop/controller/RechargeOrderController.java new file mode 100644 index 0000000..dd4ae2f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/RechargeOrderController.java @@ -0,0 +1,200 @@ +package com.gxwebsoft.shop.controller; + +import cn.hutool.core.util.IdUtil; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.RechargeOrder; +import com.gxwebsoft.shop.entity.UserBalanceLog; +import com.gxwebsoft.shop.param.RechargeOrderParam; +import com.gxwebsoft.shop.service.RechargeOrderService; +import com.gxwebsoft.shop.service.UserBalanceLogService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_ADMIN; + +/** + * 会员充值订单表控制器 + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +@Api(tags = "会员充值订单表管理") +@RestController +@RequestMapping("/api/shop/recharge-order") +public class RechargeOrderController extends BaseController { + @Resource + private RechargeOrderService rechargeOrderService; + @Resource + private UserService userService; + @Resource + private UserBalanceLogService userBalanceLogService; + + @PreAuthorize("hasAuthority('shop:rechargeOrder:save')") + @OperationLog + @ApiOperation("会员充值") + @PostMapping("/recharge") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult recharge(@RequestBody RechargeOrder rechargeOrder) { + // 充值 + User user = userService.getById(rechargeOrder.getUserId()); + BigDecimal balance = user.getBalance().add(rechargeOrder.getPayPrice()); + user.setBalance(balance); + userService.updateById(user); + // 保存充值记录 + rechargeOrder.setOrderNo(IdUtil.getSnowflakeNextId()); + rechargeOrder.setBalance(balance); + if (rechargeOrderService.save(rechargeOrder)) { + // 记录余额明细 + UserBalanceLog userBalanceLog = new UserBalanceLog(); + userBalanceLog.setUserId(rechargeOrder.getUserId()); + userBalanceLog.setScene(BALANCE_ADMIN); + userBalanceLog.setMoney(rechargeOrder.getPayPrice()); + userBalanceLog.setBalance(balance); + userBalanceLog.setComments("操作人:" + getLoginUser().getNickname()); + userBalanceLog.setRemark(rechargeOrder.getComments()); + userBalanceLog.setMerchantCode(rechargeOrder.getMerchantCode()); + userBalanceLogService.save(userBalanceLog); + return success("充值成功", user); + } + return fail("充值失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:list')") + @OperationLog + @ApiOperation("分页查询会员充值订单表") + @GetMapping("/page") + public ApiResult> page(RechargeOrderParam param) { + // 使用关联查询 + return success(rechargeOrderService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:list')") + @OperationLog + @ApiOperation("查询全部会员充值订单表") + @GetMapping() + public ApiResult> list(RechargeOrderParam param) { + // 使用关联查询 + return success(rechargeOrderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:list')") + @OperationLog + @ApiOperation("根据id查询会员充值订单表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(rechargeOrderService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:save')") + @OperationLog + @ApiOperation("添加会员充值订单表") + @PostMapping() + public ApiResult save(@RequestBody RechargeOrder rechargeOrder) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + rechargeOrder.setUserId(loginUser.getUserId()); + rechargeOrder.setMerchantCode(getMerchantCode()); + } + if (rechargeOrderService.save(rechargeOrder)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:update')") + @OperationLog + @ApiOperation("修改会员充值订单表") + @PutMapping() + public ApiResult update(@RequestBody RechargeOrder rechargeOrder) { + if (rechargeOrderService.updateById(rechargeOrder)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:remove')") + @OperationLog + @ApiOperation("删除会员充值订单表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (rechargeOrderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:save')") + @OperationLog + @ApiOperation("批量充值") + @PostMapping("/batchRecharge") + @Transactional(rollbackFor = {Exception.class}) + public ApiResult batchRecharge(@RequestBody List list) { + if (rechargeOrderService.saveBatch(list)) { + String nickname = getLoginUser().getNickname(); + ArrayList users = new ArrayList<>(list.size()); + ArrayList logs = new ArrayList<>(list.size()); + + list.forEach(d -> { + User user = userService.getByIdRel(d.getUserId()); + BigDecimal balance = user.getBalance().add(d.getPayPrice()); + user.setBalance(balance); + users.add(user); + UserBalanceLog userBalanceLog = new UserBalanceLog(); + userBalanceLog.setUserId(d.getUserId()); + userBalanceLog.setScene(BALANCE_ADMIN); + userBalanceLog.setMoney(d.getPayPrice()); + userBalanceLog.setBalance(balance); + userBalanceLog.setComments("操作人:" + nickname); + userBalanceLog.setRemark(d.getComments()); + userBalanceLog.setMerchantCode(d.getMerchantCode()); + logs.add(userBalanceLog); + }); + + // 批量充值 + userService.updateBatchById(users); + // 记录余额明细 + userBalanceLogService.saveBatch(logs); + return success("充值成功"); + } + return fail("充值失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:update')") + @OperationLog + @ApiOperation("批量修改会员充值订单表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(rechargeOrderService, "order_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrder:remove')") + @OperationLog + @ApiOperation("批量删除会员充值订单表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (rechargeOrderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/RechargeOrderPlanController.java b/src/main/java/com/gxwebsoft/shop/controller/RechargeOrderPlanController.java new file mode 100644 index 0000000..a069bac --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/RechargeOrderPlanController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.RechargeOrderPlanService; +import com.gxwebsoft.shop.entity.RechargeOrderPlan; +import com.gxwebsoft.shop.param.RechargeOrderPlanParam; +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-04-20 20:36:24 + */ +@Api(tags = "会员充值订单套餐快照表管理") +@RestController +@RequestMapping("/api/shop/recharge-order-plan") +public class RechargeOrderPlanController extends BaseController { + @Resource + private RechargeOrderPlanService rechargeOrderPlanService; + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:list')") + @OperationLog + @ApiOperation("分页查询会员充值订单套餐快照表") + @GetMapping("/page") + public ApiResult> page(RechargeOrderPlanParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(rechargeOrderPlanService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(rechargeOrderPlanService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:list')") + @OperationLog + @ApiOperation("查询全部会员充值订单套餐快照表") + @GetMapping() + public ApiResult> list(RechargeOrderPlanParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(rechargeOrderPlanService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(rechargeOrderPlanService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:list')") + @OperationLog + @ApiOperation("根据id查询会员充值订单套餐快照表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(rechargeOrderPlanService.getById(id)); + // 使用关联查询 + //return success(rechargeOrderPlanService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:save')") + @OperationLog + @ApiOperation("添加会员充值订单套餐快照表") + @PostMapping() + public ApiResult save(@RequestBody RechargeOrderPlan rechargeOrderPlan) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + rechargeOrderPlan.setUserId(loginUser.getUserId()); + rechargeOrderPlan.setMerchantCode(getMerchantCode()); + } + if (rechargeOrderPlanService.save(rechargeOrderPlan)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:update')") + @OperationLog + @ApiOperation("修改会员充值订单套餐快照表") + @PutMapping() + public ApiResult update(@RequestBody RechargeOrderPlan rechargeOrderPlan) { + if (rechargeOrderPlanService.updateById(rechargeOrderPlan)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:remove')") + @OperationLog + @ApiOperation("删除会员充值订单套餐快照表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (rechargeOrderPlanService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:save')") + @OperationLog + @ApiOperation("批量添加会员充值订单套餐快照表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (rechargeOrderPlanService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:update')") + @OperationLog + @ApiOperation("批量修改会员充值订单套餐快照表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(rechargeOrderPlanService, "order_plan_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargeOrderPlan:remove')") + @OperationLog + @ApiOperation("批量删除会员充值订单套餐快照表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (rechargeOrderPlanService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/RechargePlanController.java b/src/main/java/com/gxwebsoft/shop/controller/RechargePlanController.java new file mode 100644 index 0000000..ff9f941 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/RechargePlanController.java @@ -0,0 +1,140 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.RechargePlanService; +import com.gxwebsoft.shop.entity.RechargePlan; +import com.gxwebsoft.shop.param.RechargePlanParam; +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-04-20 20:36:24 + */ +@Api(tags = "会员充值套餐表管理") +@RestController +@RequestMapping("/api/shop/recharge-plan") +public class RechargePlanController extends BaseController { + @Resource + private RechargePlanService rechargePlanService; + + @PreAuthorize("hasAuthority('shop:rechargePlan:list')") + @OperationLog + @ApiOperation("分页查询会员充值套餐表") + @GetMapping("/page") + public ApiResult> page(RechargePlanParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(rechargePlanService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(rechargePlanService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:rechargePlan:list')") + @OperationLog + @ApiOperation("查询全部会员充值套餐表") + @GetMapping() + public ApiResult> list(RechargePlanParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(rechargePlanService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(rechargePlanService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:rechargePlan:list')") + @OperationLog + @ApiOperation("根据id查询会员充值套餐表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(rechargePlanService.getById(id)); + // 使用关联查询 + //return success(rechargePlanService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:rechargePlan:save')") + @OperationLog + @ApiOperation("添加会员充值套餐表") + @PostMapping() + public ApiResult save(@RequestBody RechargePlan rechargePlan) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + rechargePlan.setUserId(loginUser.getUserId()); + rechargePlan.setMerchantCode(getMerchantCode()); + } + if (rechargePlanService.save(rechargePlan)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargePlan:update')") + @OperationLog + @ApiOperation("修改会员充值套餐表") + @PutMapping() + public ApiResult update(@RequestBody RechargePlan rechargePlan) { + if (rechargePlanService.updateById(rechargePlan)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargePlan:remove')") + @OperationLog + @ApiOperation("删除会员充值套餐表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (rechargePlanService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargePlan:save')") + @OperationLog + @ApiOperation("批量添加会员充值套餐表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (rechargePlanService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargePlan:update')") + @OperationLog + @ApiOperation("批量修改会员充值套餐表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(rechargePlanService, "plan_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:rechargePlan:remove')") + @OperationLog + @ApiOperation("批量删除会员充值套餐表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (rechargePlanService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/SfExpressController.java b/src/main/java/com/gxwebsoft/shop/controller/SfExpressController.java new file mode 100644 index 0000000..65fd49f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/SfExpressController.java @@ -0,0 +1,21 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.config.ExpressConfig; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +public class SfExpressController extends BaseController { + + @Resource + ExpressConfig expressConfig; + + public ApiResult createOrder(){ + String sign = ""; + String serverHost = expressConfig.getServerHost().concat("/open/api/external/createorder?sign=").concat(sign); + return success("成功",serverHost); + } +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/TestController.java b/src/main/java/com/gxwebsoft/shop/controller/TestController.java new file mode 100644 index 0000000..fc3c8d0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/TestController.java @@ -0,0 +1,24 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.constants.RedisConstants; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@Api(tags = "测试控制器") +@RequestMapping("/api/shop/test") +public class TestController extends BaseController { + + @GetMapping() + @OperationLog + @ApiOperation("测试方法") + public ApiResult test(){ + return null; + } +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserAddressController.java b/src/main/java/com/gxwebsoft/shop/controller/UserAddressController.java new file mode 100644 index 0000000..71b88e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserAddressController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.UserAddressService; +import com.gxwebsoft.shop.entity.UserAddress; +import com.gxwebsoft.shop.param.UserAddressParam; +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 2022-11-25 19:04:43 + */ +@Api(tags = "用户收货地址表管理") +@RestController +@RequestMapping("/api/shop/user-address") +public class UserAddressController extends BaseController { + @Resource + private UserAddressService userAddressService; + + @PreAuthorize("hasAuthority('shop:userAddress:list')") + @OperationLog + @ApiOperation("分页查询用户收货地址表") + @GetMapping("/page") + public ApiResult> page(UserAddressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userAddressService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(userAddressService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userAddress:list')") + @OperationLog + @ApiOperation("查询全部用户收货地址表") + @GetMapping() + public ApiResult> list(UserAddressParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userAddressService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(userAddressService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userAddress:list')") + @OperationLog + @ApiOperation("根据id查询用户收货地址表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userAddressService.getById(id)); + // 使用关联查询 + //return success(userAddressService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userAddress:save')") + @OperationLog + @ApiOperation("添加用户收货地址表") + @PostMapping() + public ApiResult save(@RequestBody UserAddress userAddress) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userAddress.setUserId(loginUser.getUserId()); + } + if (userAddressService.save(userAddress)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userAddress:update')") + @OperationLog + @ApiOperation("修改用户收货地址表") + @PutMapping() + public ApiResult update(@RequestBody UserAddress userAddress) { + if (userAddressService.updateById(userAddress)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userAddress:remove')") + @OperationLog + @ApiOperation("删除用户收货地址表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userAddressService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userAddress:save')") + @OperationLog + @ApiOperation("批量添加用户收货地址表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userAddressService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userAddress:update')") + @OperationLog + @ApiOperation("批量修改用户收货地址表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userAddressService, "address_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userAddress:remove')") + @OperationLog + @ApiOperation("批量删除用户收货地址表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userAddressService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserBalanceLogController.java b/src/main/java/com/gxwebsoft/shop/controller/UserBalanceLogController.java new file mode 100644 index 0000000..d828832 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserBalanceLogController.java @@ -0,0 +1,137 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.UserBalanceLogService; +import com.gxwebsoft.shop.entity.UserBalanceLog; +import com.gxwebsoft.shop.param.UserBalanceLogParam; +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-04-21 15:59:09 + */ +@Api(tags = "用户余额变动明细表管理") +@RestController +@RequestMapping("/api/shop/user-balance-log") +public class UserBalanceLogController extends BaseController { + @Resource + private UserBalanceLogService userBalanceLogService; + + @PreAuthorize("hasAuthority('shop:userBalanceLog:list')") + @OperationLog + @ApiOperation("分页查询用户余额变动明细表") + @GetMapping("/page") + public ApiResult> page(UserBalanceLogParam param) { + // 使用关联查询 + return success(userBalanceLogService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userBalanceLog:list')") + @OperationLog + @ApiOperation("查询全部用户余额变动明细表") + @GetMapping() + public ApiResult> list(UserBalanceLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userBalanceLogService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(userBalanceLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userBalanceLog:list')") + @OperationLog + @ApiOperation("根据id查询用户余额变动明细表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userBalanceLogService.getById(id)); + // 使用关联查询 + //return success(userBalanceLogService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userBalanceLog:save')") + @OperationLog + @ApiOperation("添加用户余额变动明细表") + @PostMapping() + public ApiResult save(@RequestBody UserBalanceLog userBalanceLog) { + // 记录当前登录用户id、租户id、商户编号 + User loginUser = getLoginUser(); + if (loginUser != null) { + userBalanceLog.setUserId(loginUser.getUserId()); + userBalanceLog.setMerchantCode(getMerchantCode()); + } + if (userBalanceLogService.save(userBalanceLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userBalanceLog:update')") + @OperationLog + @ApiOperation("修改用户余额变动明细表") + @PutMapping() + public ApiResult update(@RequestBody UserBalanceLog userBalanceLog) { + if (userBalanceLogService.updateById(userBalanceLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userBalanceLog:remove')") + @OperationLog + @ApiOperation("删除用户余额变动明细表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userBalanceLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userBalanceLog:save')") + @OperationLog + @ApiOperation("批量添加用户余额变动明细表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userBalanceLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userBalanceLog:update')") + @OperationLog + @ApiOperation("批量修改用户余额变动明细表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userBalanceLogService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userBalanceLog:remove')") + @OperationLog + @ApiOperation("批量删除用户余额变动明细表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userBalanceLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserCommentController.java b/src/main/java/com/gxwebsoft/shop/controller/UserCommentController.java new file mode 100644 index 0000000..b2dc4bc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserCommentController.java @@ -0,0 +1,136 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.UserComment; +import com.gxwebsoft.shop.param.UserCommentParam; +import com.gxwebsoft.shop.service.UserCommentService; +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-07-06 13:55:16 + */ +@Api(tags = "用户评价记录表管理") +@RestController +@RequestMapping("/api/shop/user-comment") +public class UserCommentController extends BaseController { + @Resource + private UserCommentService userCommentService; + @Resource + private UserService userService; + + @OperationLog + @ApiOperation("分页查询用户评价记录表") + @GetMapping("/page") + public ApiResult> page(UserCommentParam param) { + User loginUser = getLoginUser(); + // 使用关联查询 + if(loginUser != null){ + param.setLoginUserId(getLoginUserId()); + } + return success(userCommentService.pageRel(param)); + } + + @OperationLog + @ApiOperation("查询全部用户评价记录表") + @GetMapping() + public ApiResult> list(UserCommentParam param) { + // 使用关联查询 + return success(userCommentService.listRel(param)); + } + + @OperationLog + @ApiOperation("根据id查询用户评价记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userCommentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userComment:save')") + @OperationLog + @ApiOperation("添加用户评价记录表") + @PostMapping() + public ApiResult save(@RequestBody UserComment userComment) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userComment.setUserId(loginUser.getUserId()); + } + if (userCommentService.save(userComment)) { + // 追加评论数 + final User toUser = userService.getById(userComment.getToUserId()); + toUser.setCommentNumbers(toUser.getCommentNumbers() + 1); + userService.updateById(toUser); + return success("发表成功",toUser); + } + return fail("发表失败"); + } + + @PreAuthorize("hasAuthority('shop:userComment:update')") + @OperationLog + @ApiOperation("修改用户评价记录表") + @PutMapping() + public ApiResult update(@RequestBody UserComment userComment) { + if (userCommentService.updateById(userComment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userComment:remove')") + @OperationLog + @ApiOperation("删除用户评价记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userCommentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userComment:save')") + @OperationLog + @ApiOperation("批量添加用户评价记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userCommentService.saveBatch(list)) { + return success("发表成功"); + } + return fail("发表失败"); + } + + @PreAuthorize("hasAuthority('shop:userComment:update')") + @OperationLog + @ApiOperation("批量修改用户评价记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userCommentService, "comment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userComment:remove')") + @OperationLog + @ApiOperation("批量删除用户评价记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userCommentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserCouponController.java b/src/main/java/com/gxwebsoft/shop/controller/UserCouponController.java new file mode 100644 index 0000000..a4cd739 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserCouponController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.UserCouponService; +import com.gxwebsoft.shop.entity.UserCoupon; +import com.gxwebsoft.shop.param.UserCouponParam; +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 2022-11-25 19:04:43 + */ +@Api(tags = "用户优惠券记录表管理") +@RestController +@RequestMapping("/api/shop/user-coupon") +public class UserCouponController extends BaseController { + @Resource + private UserCouponService userCouponService; + + @PreAuthorize("hasAuthority('shop:userCoupon:list')") + @OperationLog + @ApiOperation("分页查询用户优惠券记录表") + @GetMapping("/page") + public ApiResult> page(UserCouponParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userCouponService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(userCouponService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userCoupon:list')") + @OperationLog + @ApiOperation("查询全部用户优惠券记录表") + @GetMapping() + public ApiResult> list(UserCouponParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userCouponService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(userCouponService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userCoupon:list')") + @OperationLog + @ApiOperation("根据id查询用户优惠券记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userCouponService.getById(id)); + // 使用关联查询 + //return success(userCouponService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userCoupon:save')") + @OperationLog + @ApiOperation("添加用户优惠券记录表") + @PostMapping() + public ApiResult save(@RequestBody UserCoupon userCoupon) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userCoupon.setUserId(loginUser.getUserId()); + } + if (userCouponService.save(userCoupon)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userCoupon:update')") + @OperationLog + @ApiOperation("修改用户优惠券记录表") + @PutMapping() + public ApiResult update(@RequestBody UserCoupon userCoupon) { + if (userCouponService.updateById(userCoupon)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userCoupon:remove')") + @OperationLog + @ApiOperation("删除用户优惠券记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userCouponService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userCoupon:save')") + @OperationLog + @ApiOperation("批量添加用户优惠券记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userCouponService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userCoupon:update')") + @OperationLog + @ApiOperation("批量修改用户优惠券记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userCouponService, "user_coupon_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userCoupon:remove')") + @OperationLog + @ApiOperation("批量删除用户优惠券记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userCouponService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserFeedbackController.java b/src/main/java/com/gxwebsoft/shop/controller/UserFeedbackController.java new file mode 100644 index 0000000..ba670eb --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserFeedbackController.java @@ -0,0 +1,132 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.UserFeedbackService; +import com.gxwebsoft.shop.entity.UserFeedback; +import com.gxwebsoft.shop.param.UserFeedbackParam; +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-07-16 22:24:55 + */ +@Api(tags = "意见反馈记录表管理") +@RestController +@RequestMapping("/api/shop/user-feedback") +public class UserFeedbackController extends BaseController { + @Resource + private UserFeedbackService userFeedbackService; + + @PreAuthorize("hasAuthority('shop:userFeedback:list')") + @OperationLog + @ApiOperation("分页查询意见反馈记录表") + @GetMapping("/page") + public ApiResult> page(UserFeedbackParam param) { + // 使用关联查询 + return success(userFeedbackService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userFeedback:list')") + @OperationLog + @ApiOperation("查询全部意见反馈记录表") + @GetMapping() + public ApiResult> list(UserFeedbackParam param) { + // 使用关联查询 + return success(userFeedbackService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userFeedback:list')") + @OperationLog + @ApiOperation("根据id查询意见反馈记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userFeedbackService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userFeedback:save')") + @OperationLog + @ApiOperation("添加意见反馈记录表") + @PostMapping() + public ApiResult save(@RequestBody UserFeedback userFeedback) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userFeedback.setUserId(loginUser.getUserId()); + } + if (userFeedbackService.save(userFeedback)) { + return success("已收到您的宝贵意见"); + } + return fail("提交失败"); + } + + @PreAuthorize("hasAuthority('shop:userFeedback:update')") + @OperationLog + @ApiOperation("修改意见反馈记录表") + @PutMapping() + public ApiResult update(@RequestBody UserFeedback userFeedback) { + if (userFeedbackService.updateById(userFeedback)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userFeedback:remove')") + @OperationLog + @ApiOperation("删除意见反馈记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userFeedbackService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userFeedback:save')") + @OperationLog + @ApiOperation("批量添加意见反馈记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userFeedbackService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userFeedback:update')") + @OperationLog + @ApiOperation("批量修改意见反馈记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userFeedbackService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userFeedback:remove')") + @OperationLog + @ApiOperation("批量删除意见反馈记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userFeedbackService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserFollowController.java b/src/main/java/com/gxwebsoft/shop/controller/UserFollowController.java new file mode 100644 index 0000000..e5b7c0d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserFollowController.java @@ -0,0 +1,180 @@ +package com.gxwebsoft.shop.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.UserFollow; +import com.gxwebsoft.shop.param.UserFollowParam; +import com.gxwebsoft.shop.service.UserFollowService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 关注记录表控制器 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Api(tags = "关注记录表管理") +@RestController +@RequestMapping("/api/shop/user-follow") +public class UserFollowController extends BaseController { + @Resource + private UserService userService; + @Resource + private UserFollowService userFollowService; + @Resource + private StringRedisTemplate stringRedisTemplate; + + private static final String SPLIT = ":"; + private static final String PREFIX_ENTITY_LIKE = "follow:user"; + private static final String PREFIX_USER_LIKE = "like:user"; + private static final String PREFIX_FOLLOWEE = "followee"; + private static final String PREFIX_FOLLOWER = "follower"; + + @PreAuthorize("hasAuthority('shop:userFollow:list')") + @OperationLog + @ApiOperation("分页查询关注记录表") + @GetMapping("/page") + public ApiResult> page(UserFollowParam param) { + // 使用关联查询 + return success(userFollowService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userFollow:list')") + @OperationLog + @ApiOperation("查询全部关注记录表") + @GetMapping() + public ApiResult> list(UserFollowParam param) { + User loginUser = getLoginUser(); + if (loginUser != null) { + param.setLoginUserId(getLoginUserId()); + } + return success(userFollowService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userFollow:list')") + @OperationLog + @ApiOperation("根据id查询关注记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userFollowService.getById(id)); + // 使用关联查询 + //return success(userFollowService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userFollow:save')") + @Transactional(rollbackFor = {Exception.class}) + @ApiOperation("添加关注记录表") + @PostMapping() + public ApiResult save(@RequestBody UserFollow userFollow) { + User loginUser = getLoginUser(); + if (loginUser != null) { + User toUser = userService.getById(userFollow.getShopId()); + final Integer userId = loginUser.getUserId(); + userFollow.setUserId(userId); + // 取消关注 + if(userFollowService.count(new LambdaQueryWrapper().eq(UserFollow::getShopId,userFollow.getShopId()).eq(UserFollow::getUserId,userId)) > 0){ + userFollowService.remove(new LambdaQueryWrapper().eq(UserFollow::getShopId,userFollow.getShopId()).eq(UserFollow::getUserId,userId)); + // 从Redis集合中移除 + stringRedisTemplate.opsForZSet().remove(getFollowKey(userFollow.getShopId()),userId.toString()); + // 更新粉丝数 + if(toUser.getFans() > 0){ + toUser.setFans(toUser.getFans() - 1); + } + userService.updateById(toUser); + // 更新关注数 + if(loginUser.getFollowers() > 0){ + loginUser.setFollowers(loginUser.getFollowers() - 1); + } + userService.updateById(loginUser); + return success("已取消关注"); + } + userFollowService.save(userFollow); + // 更新粉丝数 + toUser.setFans(toUser.getFans() + 1); + userService.updateById(toUser); + // 更新关注数 + loginUser.setFollowers(toUser.getFollowers() + 1); + userService.updateById(loginUser); + // 放入redis的set集合 + stringRedisTemplate.opsForZSet().add(getFollowKey(userFollow.getShopId()),userId.toString(),1); + return success("关注成功"); + } + return fail("操作失败"); + } + + @PreAuthorize("hasAuthority('shop:userFollow:update')") + @OperationLog + @ApiOperation("修改关注记录表") + @PutMapping() + public ApiResult update(@RequestBody UserFollow userFollow) { + if (userFollowService.updateById(userFollow)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userFollow:remove')") + @OperationLog + @ApiOperation("删除关注记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userFollowService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userFollow:save')") + @OperationLog + @ApiOperation("批量添加关注记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userFollowService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userFollow:update')") + @OperationLog + @ApiOperation("批量修改关注记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userFollowService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userFollow:remove')") + @OperationLog + @ApiOperation("批量删除关注记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userFollowService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + /** + * 某个用户的关注数 + * @return like:entity:[entityId] ->set(userId) + */ + public static String getFollowKey(Integer userId) { + return PREFIX_ENTITY_LIKE + SPLIT + userId; + } + + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserGradeController.java b/src/main/java/com/gxwebsoft/shop/controller/UserGradeController.java new file mode 100644 index 0000000..134518e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserGradeController.java @@ -0,0 +1,125 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.UserGrade; +import com.gxwebsoft.shop.param.UserGradeParam; +import com.gxwebsoft.shop.service.UserGradeService; +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-06-20 16:33:06 + */ +@Api(tags = "用户会员等级表管理") +@RestController +@RequestMapping("/api/shop/user-grade") +public class UserGradeController extends BaseController { + @Resource + private UserGradeService userGradeService; + + @PreAuthorize("hasAuthority('shop:userGrade:list')") + @OperationLog + @ApiOperation("分页查询用户会员等级表") + @GetMapping("/page") + public ApiResult> page(UserGradeParam param) { + // 使用关联查询 + return success(userGradeService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userGrade:list')") + @OperationLog + @ApiOperation("查询全部用户会员等级表") + @GetMapping() + public ApiResult> list(UserGradeParam param) { + // 使用关联查询 + return success(userGradeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userGrade:list')") + @OperationLog + @ApiOperation("根据id查询用户会员等级表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userGradeService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userGrade:save')") + @OperationLog + @ApiOperation("添加用户会员等级表") + @PostMapping() + public ApiResult save(@RequestBody UserGrade userGrade) { + if (userGradeService.save(userGrade)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userGrade:update')") + @OperationLog + @ApiOperation("修改用户会员等级表") + @PutMapping() + public ApiResult update(@RequestBody UserGrade userGrade) { + if (userGradeService.updateById(userGrade)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userGrade:remove')") + @OperationLog + @ApiOperation("删除用户会员等级表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userGradeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userGrade:save')") + @OperationLog + @ApiOperation("批量添加用户会员等级表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userGradeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userGrade:update')") + @OperationLog + @ApiOperation("批量修改用户会员等级表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userGradeService, "grade_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userGrade:remove')") + @OperationLog + @ApiOperation("批量删除用户会员等级表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userGradeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserGradeLogController.java b/src/main/java/com/gxwebsoft/shop/controller/UserGradeLogController.java new file mode 100644 index 0000000..d4b0450 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserGradeLogController.java @@ -0,0 +1,122 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.shop.entity.UserGradeLog; +import com.gxwebsoft.shop.param.UserGradeLogParam; +import com.gxwebsoft.shop.service.UserGradeLogService; +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-06-20 16:33:06 + */ +@Api(tags = "用户会员等级变更记录表管理") +@RestController +@RequestMapping("/api/shop/user-grade-log") +public class UserGradeLogController extends BaseController { + @Resource + private UserGradeLogService userGradeLogService; + + @PreAuthorize("hasAuthority('shop:userGradeLog:list')") + @OperationLog + @ApiOperation("分页查询用户会员等级变更记录表") + @GetMapping("/page") + public ApiResult> page(UserGradeLogParam param) { + // 使用关联查询 + return success(userGradeLogService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userGradeLog:list')") + @OperationLog + @ApiOperation("查询全部用户会员等级变更记录表") + @GetMapping() + public ApiResult> list(UserGradeLogParam param) { + // 使用关联查询 + return success(userGradeLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userGradeLog:list')") + @OperationLog + @ApiOperation("根据id查询用户会员等级变更记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userGradeLogService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userGradeLog:save')") + @OperationLog + @ApiOperation("添加用户会员等级变更记录表") + @PostMapping() + public ApiResult save(@RequestBody UserGradeLog userGradeLog) { + if (userGradeLogService.save(userGradeLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userGradeLog:update')") + @OperationLog + @ApiOperation("修改用户会员等级变更记录表") + @PutMapping() + public ApiResult update(@RequestBody UserGradeLog userGradeLog) { + if (userGradeLogService.updateById(userGradeLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userGradeLog:remove')") + @OperationLog + @ApiOperation("删除用户会员等级变更记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userGradeLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userGradeLog:save')") + @OperationLog + @ApiOperation("批量添加用户会员等级变更记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userGradeLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userGradeLog:update')") + @OperationLog + @ApiOperation("批量修改用户会员等级变更记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userGradeLogService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userGradeLog:remove')") + @OperationLog + @ApiOperation("批量删除用户会员等级变更记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userGradeLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserLikeController.java b/src/main/java/com/gxwebsoft/shop/controller/UserLikeController.java new file mode 100644 index 0000000..7f7a872 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserLikeController.java @@ -0,0 +1,185 @@ +package com.gxwebsoft.shop.controller; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.socketio.cache.ClientCache; +import com.gxwebsoft.shop.entity.UserLike; +import com.gxwebsoft.shop.param.UserLikeParam; +import com.gxwebsoft.shop.service.UserLikeService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 点赞记录表控制器 + * + * @author 科技小王子 + * @since 2023-07-06 17:51:04 + */ +@Api(tags = "点赞记录表管理") +@RestController +@RequestMapping("/api/shop/user-like") +public class UserLikeController extends BaseController { + @Resource + private UserLikeService userLikeService; + @Resource + private UserService userService; + + @Resource + private ClientCache clientCache; + + @PreAuthorize("hasAuthority('shop:userLike:list')") + @OperationLog + @ApiOperation("分页查询点赞记录表") + @GetMapping("/page") + public ApiResult> page(UserLikeParam param) { + User loginUser = getLoginUser(); + if(loginUser != null){ + param.setLoginUserId(getLoginUserId()); + } + + PageResult result = userLikeService.pageRel(param); + // 标记已读 + if(param.getToUserId() != null && param.getToUserId().equals(loginUser.getUserId())){ + Set logIds = result.getList().stream().map(UserLike::getLogId).collect(Collectors.toSet()); + if(!CollectionUtils.isEmpty(logIds)){ + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() + .in(UserLike::getLogId, logIds) + .set(UserLike::getStatus, 1); + userLikeService.getBaseMapper().update(null, updateWrapper); + } + } + // 使用关联查询 + return success(result); + } + + @PreAuthorize("hasAuthority('shop:userLike:list')") + @OperationLog + @ApiOperation("查询全部点赞记录表") + @GetMapping() + public ApiResult> list(UserLikeParam param) { + // 使用关联查询 + return success(userLikeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userLike:list')") + @OperationLog + @ApiOperation("根据id查询点赞记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userLikeService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userLike:save')") + @Transactional(rollbackFor = {Exception.class}) + @ApiOperation("添加点赞记录表") + @PostMapping() + public ApiResult save(@RequestBody UserLike userLike) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userLike.setUserId(loginUser.getUserId()); + final UserLikeParam param = new UserLikeParam(); + param.setUserId(loginUser.getUserId()); + param.setToUserId(userLike.getToUserId()); + final List userLikes = userLikeService.listRel(param); + System.out.println("userLikes = " + userLikes.size()); + + // 点赞操作 + if (userLikes.size() == 0) { + final UserLike add = new UserLike(); + add.setUserId(loginUser.getUserId()); + add.setToUserId(userLike.getToUserId()); + userLikeService.save(add); + // 更新点赞数量 + final User modify = userService.getById(userLike.getToUserId()); + modify.setLikes(modify.getLikes() + 1); + userService.updateById(modify); + clientCache.sendUserEvent(userLike.getToUserId() + "","likeme", 1); + return success("已喜欢", modify.getLikes()); + } + + // 取消点赞 + final UserLike like = userLikes.get(0); + userLikeService.removeById(like.getLogId()); + // 更新点赞数量 + final User modify = userService.getById(userLike.getToUserId()); + modify.setLikes(modify.getLikes() - 1); + userService.updateById(modify); + clientCache.sendUserEvent(userLike.getToUserId() + "","likeme", -1); + return success("取消喜欢",modify.getLikes()); + } + return fail("操作失败"); + } + + @PreAuthorize("hasAuthority('shop:userLike:update')") + @OperationLog + @ApiOperation("修改点赞记录表") + @PutMapping() + public ApiResult update(@RequestBody UserLike userLike) { + if (userLikeService.updateById(userLike)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userLike:remove')") + @OperationLog + @ApiOperation("删除点赞记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userLikeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userLike:save')") + @OperationLog + @ApiOperation("批量添加点赞记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userLikeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userLike:update')") + @OperationLog + @ApiOperation("批量修改点赞记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userLikeService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userLike:remove')") + @OperationLog + @ApiOperation("批量删除点赞记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userLikeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserLookController.java b/src/main/java/com/gxwebsoft/shop/controller/UserLookController.java new file mode 100644 index 0000000..2665bd5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserLookController.java @@ -0,0 +1,161 @@ +package com.gxwebsoft.shop.controller; + +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.love.socketio.cache.ClientCache; +import com.gxwebsoft.shop.entity.UserLook; +import com.gxwebsoft.shop.param.UserLookParam; +import com.gxwebsoft.shop.service.UserLookService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 访客记录表控制器 + * + * @author 科技小王子 + * @since 2023-07-13 23:10:38 + */ +@Api(tags = "访客记录表管理") +@RestController +@RequestMapping("/api/shop/user-look") +public class UserLookController extends BaseController { + @Resource + private UserLookService userLookService; + + @Resource + private ClientCache clientCache; + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("分页查询访客记录表") + @GetMapping("/page") + public ApiResult> page(UserLookParam param) { + User loginUser = getLoginUser(); + if(loginUser != null){ + param.setLoginUserId(getLoginUserId()); + } + PageResult result = userLookService.pageRel(param); + // 标记已读 + if(param.getToUserId() != null && param.getToUserId().equals(loginUser.getUserId())){ + Set logIds = result.getList().stream().map(UserLook::getLogId).collect(Collectors.toSet()); + if(!CollectionUtils.isEmpty(logIds)){ + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper() + .in(UserLook::getLogId, logIds) + .set(UserLook::getStatus, 1); + userLookService.getBaseMapper().update(null, updateWrapper); + + } + + } + // 使用关联查询 + return success(result); + } + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("查询全部访客记录表") + @GetMapping() + public ApiResult> list(UserLookParam param) { + // 使用关联查询 + return success(userLookService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("根据id查询访客记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userLookService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("添加访客记录表") + @PostMapping() + public ApiResult save(@RequestBody UserLook userLook) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userLook.setUserId(loginUser.getUserId()); + } + if(loginUser.getUserId().equals(userLook.getToUserId())){ + return success("无事发生"); + } + if (userLookService.save(userLook)) { + clientCache.sendUserEvent(userLook.getToUserId() + "","look", 1); + return success("添加成功"); + + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("修改访客记录表") + @PutMapping() + public ApiResult update(@RequestBody UserLook userLook) { + if (userLookService.updateById(userLook)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("删除访客记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userLookService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("批量添加访客记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userLookService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("批量修改访客记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userLookService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userLook:list')") + @OperationLog + @ApiOperation("批量删除访客记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userLookService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserOauthController.java b/src/main/java/com/gxwebsoft/shop/controller/UserOauthController.java new file mode 100644 index 0000000..3fe907e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserOauthController.java @@ -0,0 +1,127 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.UserOauthService; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.param.UserOauthParam; +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 2022-12-15 08:33:13 + */ +@Api(tags = "第三方用户信息表管理") +@RestController +@RequestMapping("/api/shop/user-oauth") +public class UserOauthController extends BaseController { + @Resource + private UserOauthService userOauthService; + + @PreAuthorize("hasAuthority('shop:userOauth:list')") + @OperationLog + @ApiOperation("分页查询第三方用户信息表") + @GetMapping("/page") + public ApiResult> page(UserOauthParam param) { + // 使用关联查询 + return success(userOauthService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userOauth:list')") + @OperationLog + @ApiOperation("查询全部第三方用户信息表") + @GetMapping() + public ApiResult> list(UserOauthParam param) { + // 使用关联查询 + return success(userOauthService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userOauth:list')") + @OperationLog + @ApiOperation("根据id查询第三方用户信息表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(userOauthService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userOauth:save')") + @OperationLog + @ApiOperation("添加第三方用户信息表") + @PostMapping() + public ApiResult save(@RequestBody UserOauth userOauth) { + if (userOauthService.save(userOauth)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userOauth:update')") + @OperationLog + @ApiOperation("修改第三方用户信息表") + @PutMapping() + public ApiResult update(@RequestBody UserOauth userOauth) { + if (userOauthService.updateById(userOauth)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userOauth:remove')") + @OperationLog + @ApiOperation("删除第三方用户信息表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userOauthService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userOauth:save')") + @OperationLog + @ApiOperation("批量添加第三方用户信息表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userOauthService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userOauth:update')") + @OperationLog + @ApiOperation("批量修改第三方用户信息表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userOauthService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userOauth:remove')") + @OperationLog + @ApiOperation("批量删除第三方用户信息表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userOauthService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserPointsLogController.java b/src/main/java/com/gxwebsoft/shop/controller/UserPointsLogController.java new file mode 100644 index 0000000..be25851 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserPointsLogController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.service.UserPointsLogService; +import com.gxwebsoft.shop.entity.UserPointsLog; +import com.gxwebsoft.shop.param.UserPointsLogParam; +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 2022-11-25 19:04:43 + */ +@Api(tags = "用户积分变动明细表管理") +@RestController +@RequestMapping("/api/shop/user-points-log") +public class UserPointsLogController extends BaseController { + @Resource + private UserPointsLogService userPointsLogService; + + @PreAuthorize("hasAuthority('shop:userPointsLog:list')") + @OperationLog + @ApiOperation("分页查询用户积分变动明细表") + @GetMapping("/page") + public ApiResult> page(UserPointsLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userPointsLogService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(userPointsLogService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userPointsLog:list')") + @OperationLog + @ApiOperation("查询全部用户积分变动明细表") + @GetMapping() + public ApiResult> list(UserPointsLogParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(userPointsLogService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(userPointsLogService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userPointsLog:list')") + @OperationLog + @ApiOperation("根据id查询用户积分变动明细表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(userPointsLogService.getById(id)); + // 使用关联查询 + //return success(userPointsLogService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userPointsLog:save')") + @OperationLog + @ApiOperation("添加用户积分变动明细表") + @PostMapping() + public ApiResult save(@RequestBody UserPointsLog userPointsLog) { + // 记录当前登录用户id、租户id + User loginUser = getLoginUser(); + if (loginUser != null) { + userPointsLog.setUserId(loginUser.getUserId()); + } + if (userPointsLogService.save(userPointsLog)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userPointsLog:update')") + @OperationLog + @ApiOperation("修改用户积分变动明细表") + @PutMapping() + public ApiResult update(@RequestBody UserPointsLog userPointsLog) { + if (userPointsLogService.updateById(userPointsLog)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userPointsLog:remove')") + @OperationLog + @ApiOperation("删除用户积分变动明细表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userPointsLogService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userPointsLog:save')") + @OperationLog + @ApiOperation("批量添加用户积分变动明细表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userPointsLogService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userPointsLog:update')") + @OperationLog + @ApiOperation("批量修改用户积分变动明细表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userPointsLogService, "log_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userPointsLog:remove')") + @OperationLog + @ApiOperation("批量删除用户积分变动明细表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userPointsLogService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/UserRefereeController.java b/src/main/java/com/gxwebsoft/shop/controller/UserRefereeController.java new file mode 100644 index 0000000..87ccdc1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/UserRefereeController.java @@ -0,0 +1,150 @@ +package com.gxwebsoft.shop.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.UserReferee; +import com.gxwebsoft.shop.param.UserRefereeParam; +import com.gxwebsoft.shop.service.UserRefereeService; +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-04-28 14:07:29 + */ +@Api(tags = "用户推荐关系表管理") +@RestController +@RequestMapping("/api/shop/user-referee") +public class UserRefereeController extends BaseController { + @Resource + private UserRefereeService userRefereeService; + + @PreAuthorize("hasAuthority('shop:userReferee:list')") + @OperationLog + @ApiOperation("分页查询用户推荐关系表") + @GetMapping("/page") + public ApiResult> page(UserRefereeParam param) { +// PageParam page = new PageParam<>(param); +// page.setDefaultOrder("create_time desc"); +// return success(userRefereeService.page(page, page.getWrapper())); + // 使用关联查询 + return success(userRefereeService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userReferee:list')") + @OperationLog + @ApiOperation("查询全部用户推荐关系表") + @GetMapping() + public ApiResult> list(UserRefereeParam param) { + // 贵港自然资源局定制 + if(getTenantId().equals(10048)){ + final List userRefereeList = userRefereeService.listRel(param); + final User user = getLoginUser(); + final UserReferee userReferee = new UserReferee(); + userReferee.setNickname(user.getNickname()); + userRefereeList.add(userReferee); + return success(userRefereeList); + } + // 使用关联查询 + return success(userRefereeService.listRel(param)); + } + + @PreAuthorize("hasAuthority('shop:userReferee:list')") + @OperationLog + @ApiOperation("根据id查询用户推荐关系表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { +// return success(userRefereeService.getById(id)); + // 使用关联查询 + return success(userRefereeService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('shop:userReferee:save')") + @OperationLog + @ApiOperation("添加用户推荐关系表") + @PostMapping() + public ApiResult save(@RequestBody UserReferee userReferee) { +// if(userReferee.getDealerId().equals(userReferee.getUserId())){ +// return fail("不能邀请自己"); +// } + final int count = userRefereeService.count(new LambdaQueryWrapper() + .eq(UserReferee::getUserId, userReferee.getUserId()) + .eq(UserReferee::getDealerId,userReferee.getDealerId()) + ); + if(count > 0){ + return fail("关系已存在"); + } + if (userRefereeService.save(userReferee)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userReferee:update')") + @OperationLog + @ApiOperation("修改用户推荐关系表") + @PutMapping() + public ApiResult update(@RequestBody UserReferee userReferee) { + if (userRefereeService.updateById(userReferee)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userReferee:remove')") + @OperationLog + @ApiOperation("删除用户推荐关系表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (userRefereeService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('shop:userReferee:save')") + @OperationLog + @ApiOperation("批量添加用户推荐关系表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (userRefereeService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('shop:userReferee:update')") + @OperationLog + @ApiOperation("批量修改用户推荐关系表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(userRefereeService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('shop:userReferee:remove')") + @OperationLog + @ApiOperation("批量删除用户推荐关系表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (userRefereeService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/controller/WxPayController.java b/src/main/java/com/gxwebsoft/shop/controller/WxPayController.java new file mode 100644 index 0000000..32f0f1f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/controller/WxPayController.java @@ -0,0 +1,25 @@ +package com.gxwebsoft.shop.controller; + +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.shop.service.OrderService; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/api/shop/wx-pay") +@Api(tags = "微信支付API") +public class WxPayController extends BaseController +{ + @Resource + private OrderService orderService; + + public ApiResult nativePay(@PathVariable String orderId){ + return success("支付成功"); + } +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Cart.java b/src/main/java/com/gxwebsoft/shop/entity/Cart.java new file mode 100644 index 0000000..a7c507f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Cart.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 购物车记录表 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Cart对象", description = "购物车记录表") +@TableName("shop_cart") +public class Cart implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "商品sku唯一标识") + private String goodsSkuId; + + @ApiModelProperty(value = "商品数量") + private Integer goodsNum; + + @ApiModelProperty(value = "商品价格") + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @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/entity/Category.java b/src/main/java/com/gxwebsoft/shop/entity/Category.java new file mode 100644 index 0000000..7e4c3a8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Category.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.shop.entity; + +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 2022-11-22 17:45:37 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Category对象", description = "商品分类表") +@TableName("shop_category") +public class Category implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品分类ID") + @TableId(value = "category_id", type = IdType.AUTO) + private Integer categoryId; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "上级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "分类索引图") + private String image; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属商户") + private String merchantCode; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Comment.java b/src/main/java/com/gxwebsoft/shop/entity/Comment.java new file mode 100644 index 0000000..8722f2d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Comment.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.shop.entity; + +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 2022-11-23 21:18:56 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Comment对象", description = "商品评价记录表") +@TableName("shop_comment") +public class Comment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评价ID") + @TableId(value = "comment_id", type = IdType.AUTO) + private Integer commentId; + + @ApiModelProperty(value = "评分 (10好评 20中评 30差评)") + private Integer score; + + @ApiModelProperty(value = "评价内容") + private String content; + + @ApiModelProperty(value = "是否为图片评价") + private Integer isPicture; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "订单商品ID") + private Integer orderGoodsId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Coupon.java b/src/main/java/com/gxwebsoft/shop/entity/Coupon.java new file mode 100644 index 0000000..e9cf655 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Coupon.java @@ -0,0 +1,104 @@ +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 2022-11-28 18:26:05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Coupon对象", description = "优惠券记录表") +@TableName("shop_coupon") +public class Coupon implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "优惠券ID") + @TableId(value = "coupon_id", type = IdType.AUTO) + private Integer couponId; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券类型(10满减券 20折扣券)") + private Integer couponType; + + @ApiModelProperty(value = "满减券-减免金额") + private BigDecimal reducePrice; + + @ApiModelProperty(value = "折扣券-折扣率(0-100)") + private Integer discount; + + @ApiModelProperty(value = "最低消费金额") + private BigDecimal minPrice; + + @ApiModelProperty(value = "到期类型(10领取后生效 20固定时间)") + private Integer expireType; + + @ApiModelProperty(value = "领取后生效-有效天数") + private Integer expireDay; + + @ApiModelProperty(value = "固定时间-开始时间") + private Integer startTime; + + @ApiModelProperty(value = "固定时间-结束时间") + private Integer endTime; + + @ApiModelProperty(value = "适用范围(10全部商品 20指定商品 30排除商品)") + private Integer applyRange; + + @ApiModelProperty(value = "适用范围配置(json格式)") + private String applyRangeConfig; + + @ApiModelProperty(value = "发放总数量(-1为不限制)") + private Integer totalNum; + + @ApiModelProperty(value = "已领取数量") + private Integer receiveNum; + + @ApiModelProperty(value = "优惠券描述") + private String describe; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Express.java b/src/main/java/com/gxwebsoft/shop/entity/Express.java new file mode 100644 index 0000000..76e0bdf --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Express.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.shop.entity; + +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 2022-11-22 00:21:07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Express对象", description = "物流公司记录表") +@TableName("shop_express") +public class Express implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "物流公司ID") + @TableId(value = "express_id", type = IdType.AUTO) + private Integer expressId; + + @ApiModelProperty(value = "物流公司名称") + private String expressName; + + @ApiModelProperty(value = "物流公司编码 (快递100)") + private String kuaidi100Code; + + @ApiModelProperty(value = "物流公司编码 (快递鸟)") + private String kdniaoCode; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Goods.java b/src/main/java/com/gxwebsoft/shop/entity/Goods.java new file mode 100644 index 0000000..690a73a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Goods.java @@ -0,0 +1,195 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 商品记录表 + * + * @author 科技小王子 + * @since 2022-11-23 12:47:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Goods对象", description = "商品记录表") +@TableName("shop_goods") +public class Goods implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品ID") + @TableId(value = "goods_id", type = IdType.AUTO) + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品编码") + private String goodsCode; + + @ApiModelProperty(value = "商品规格(10单规格 20多规格)") + private Integer goodsType; + + @ApiModelProperty(value = "商品分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "分类名称") + @TableField(exist = false) + private String categoryName; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "上传的文件") + private String files; + + @ApiModelProperty(value = "主图视频路径") + private String videoUrl; + + @ApiModelProperty(value = "商品卖点") + private String sellingPoint; + + @ApiModelProperty(value = "商品规格(10单规格 20多规格)") + private Integer specType; + + @ApiModelProperty(value = "商品价格(最低)") + private BigDecimal goodsPriceMin; + + @ApiModelProperty(value = "商品价格(最高)") + private BigDecimal goodsPriceMax; + + @ApiModelProperty(value = "划线价格(最低)") + private BigDecimal linePriceMin; + + @ApiModelProperty(value = "划线价格(最高)") + private BigDecimal linePriceMax; + + @ApiModelProperty(value = "库存总量(包含所有sku)") + private Integer stockTotal; + + @ApiModelProperty(value = "库存计算方式(10下单减库存 20付款减库存)") + private Integer deductStockType; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "初始销量") + private Integer salesInitial; + + @ApiModelProperty(value = "实际销量") + private Integer salesActual; + + @ApiModelProperty(value = "配送方式") + private Integer deliveryType; + + @ApiModelProperty(value = "配送模板ID") + private Integer deliveryId; + + @ApiModelProperty(value = "是否开启积分赠送(1开启 0关闭)") + private Integer isPointsGift; + + @ApiModelProperty(value = "是否允许使用积分抵扣(1允许 0不允许)") + private Integer isPointsDiscount; + + @ApiModelProperty(value = "积分抵扣设置(0默认抵扣 1单独设置抵扣)") + private Integer isAlonePointsDiscount; + + @ApiModelProperty(value = "单独设置积分抵扣的配置") + private String pointsDiscountConfig; + + @ApiModelProperty(value = "是否开启会员折扣(1开启 0关闭)") + private Integer isEnableGrade; + + @ApiModelProperty(value = "会员折扣设置(0默认等级折扣 1单独设置折扣)") + private Integer isAloneGrade; + + @ApiModelProperty(value = "单独设置折扣的配置") + private String aloneGradeEquity; + + @ApiModelProperty(value = "是否推荐") + private Integer isHot; + + @ApiModelProperty(value = "规格单位") + private String unit; + + @ApiModelProperty(value = "餐段") + private String period; + + @ApiModelProperty(value = "档口") + private Integer gear; + + @ApiModelProperty(value = "商品重量") + private Double goodsWeight; + + @ApiModelProperty(value = "商品优惠属性: 0无 1限时特惠 2特惠专区") + private Integer attribute; + + @ApiModelProperty(value = "是否开启单独分销(0关闭 1开启)") + private Integer isIndDealer; + + @ApiModelProperty(value = "是否开启限购") + private Integer purchaseLimit; + + @ApiModelProperty(value = "分销佣金类型(10百分比 20固定金额)") + private Integer dealerMoneyType; + + @ApiModelProperty(value = "分销佣金(一级)") + private BigDecimal firstMoney; + + @ApiModelProperty(value = "分销佣金(二级)") + private BigDecimal secondMoney; + + @ApiModelProperty(value = "分销佣金(三级)") + private BigDecimal thirdMoney; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 = "商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "购物车购买数量") + @TableField(exist = false) + private Integer totalNum; + + @ApiModelProperty(value = "已预定份数") + @TableField(exist = false) + private Integer deliveryTimes; + + @ApiModelProperty(value = "未领取份数") + @TableField(exist = false) + private Integer noDeliveryTimes; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/GoodsService.java b/src/main/java/com/gxwebsoft/shop/entity/GoodsService.java new file mode 100644 index 0000000..6dcf75b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/GoodsService.java @@ -0,0 +1,71 @@ +package com.gxwebsoft.shop.entity; + +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 java.util.List; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商品服务与承诺记录表 + * + * @author 科技小王子 + * @since 2022-11-23 21:57:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "GoodsService对象", description = "商品服务与承诺记录表") +@TableName("shop_goods_service") +public class GoodsService implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品服务ID") + @TableId(value = "service_id", type = IdType.AUTO) + private Integer serviceId; + + @ApiModelProperty(value = "服务名称") + private String name; + + @ApiModelProperty(value = "概述") + private String summary; + + @ApiModelProperty(value = "是否默认(新增商品时)") + private Integer isDefault; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Member.java b/src/main/java/com/gxwebsoft/shop/entity/Member.java new file mode 100644 index 0000000..7dc3ec2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Member.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import com.gxwebsoft.common.system.entity.User; +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) +@ApiModel(value = "Member对象", description = "商城会员") +@TableName("shop_member") +public class Member implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "member_id", type = IdType.AUTO) + private Integer memberId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty("登录账号") + @TableField(exist = false) + private String username; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty("用户信息") + @TableField(exist = false) + private User user; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Merchant.java b/src/main/java/com/gxwebsoft/shop/entity/Merchant.java new file mode 100644 index 0000000..b7402ee --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Merchant.java @@ -0,0 +1,216 @@ +package com.gxwebsoft.shop.entity; + +import cn.hutool.core.util.NumberUtil; +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 商户管理 + * + * @author 科技小王子 + * @since 2022-11-30 15:10:54 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Merchant对象", description = "商户管理") +@TableName("shop_merchant") +public class Merchant implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商户ID") + @TableId(value = "merchant_id", type = IdType.AUTO) + private Integer merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "商户类型") + private String merchantType; + + @ApiModelProperty(value = "当前可提现金额") + private BigDecimal money; + + @ApiModelProperty(value = "已冻结金额") + private BigDecimal freezeMoney; + + @ApiModelProperty(value = "累积提现金额") + private BigDecimal totalMoney; + + @ApiModelProperty(value = "今日收益") + private BigDecimal todayMoney; + + @ApiModelProperty(value = "本月收益") + private BigDecimal monthMoney; + + @ApiModelProperty(value = "推荐收益比率") + private BigDecimal firstRatio; + + @ApiModelProperty(value = "本月收益") + private BigDecimal secondRatio; + + @ApiModelProperty(value = "门店收益") + private BigDecimal shopRatio; + + @ApiModelProperty(value = "区县收益") + private BigDecimal regionRatio; + + @ApiModelProperty(value = "市级收益") + private BigDecimal cityRatio; + + @ApiModelProperty(value = "省级收益") + private BigDecimal provinceRatio; + + @ApiModelProperty(value = "线上会员收益") + private BigDecimal onlineRatio; + + @ApiModelProperty(value = "线下会员收益") + private BigDecimal offlineRatio; + + @ApiModelProperty(value = "服务费") + private BigDecimal serverRatio; + + @ApiModelProperty(value = "商户logo") + private String logo; + + @ApiModelProperty(value = "商户背景图片") + private String background; + + @ApiModelProperty(value = "营业时间") + private String merchantHours; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "商户详情") + private String content; + + @ApiModelProperty(value = "商户坐标经纬度") + private String lngAndLat; + + @ApiModelProperty(value = "geohash") + private String geohash; + + @ApiModelProperty(value = "商户简介") + private String summary; + + @ApiModelProperty(value = "打款方式 (10微信 20支付宝 30银行卡)") + private Integer payType; + + @ApiModelProperty(value = "支付宝姓名") + private String alipayName; + + @ApiModelProperty(value = "支付宝账号") + private String alipayAccount; + + @ApiModelProperty(value = "开户行名称") + private String bankName; + + @ApiModelProperty(value = "银行开户名") + private String bankAccount; + + @ApiModelProperty(value = "银行卡号") + private String bankCard; + + @ApiModelProperty(value = "是否可编辑 0 商户可编辑 1 管理员可编辑") + private Integer isEdit; + + @ApiModelProperty(value = "是否支持自提核销(0否 1支持)") + private Integer isCheck; + + @ApiModelProperty(value = "店主") + private Integer merchantOwner; + + @ApiModelProperty(value = "门店联系电话") + private String merchantPhone; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 = "客户ID") + private Integer customerId; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty("登录账号") + @TableField(exist = false) + private String username; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty("用户等级") + @TableField(exist = false) + private Integer gradeId; + + @ApiModelProperty("用户等级") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty(value = "联系电话") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "距离") + @TableField(exist = false) + private Double distance; + + @ApiModelProperty(value = "店铺ID") + @TableField(exist = false) + private Long shopId; + + @ApiModelProperty(value = "哗啦啦店铺信息") + @TableField(exist = false) + private Object shopInfo; + + @ApiModelProperty(value = "提现金额") + @TableField(exist = false) + private BigDecimal amount; + + public Long getShopId(){ + if(NumberUtil.isLong(this.merchantCode)){ + return Long.parseLong(merchantCode); + } + return null; + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/MerchantClerk.java b/src/main/java/com/gxwebsoft/shop/entity/MerchantClerk.java new file mode 100644 index 0000000..e215fc6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/MerchantClerk.java @@ -0,0 +1,57 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 商家门店店员表 + * + * @author 科技小王子 + * @since 2022-11-30 16:32:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "MerchantClerk对象", description = "商家门店店员表") +@TableName("shop_merchant_clerk") +public class MerchantClerk implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商户人员ID") + @TableId(value = "clerk_id", type = IdType.AUTO) + private Integer clerkId; + + @ApiModelProperty(value = "关联商户编号") + private String merchantCode; + + @ApiModelProperty(value = "关联商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否为商户主") + private Integer isOwner; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty("用户信息") + @TableField(exist = false) + private User user; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/MerchantWithdraw.java b/src/main/java/com/gxwebsoft/shop/entity/MerchantWithdraw.java new file mode 100644 index 0000000..4da10c1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/MerchantWithdraw.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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 2022-12-02 00:41:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "MerchantWithdraw对象", description = "商户提现记录") +@TableName("shop_merchant_withdraw") +public class MerchantWithdraw implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "提现单号") + private String withdrawCode; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "提现金额") + private BigDecimal money; + + @ApiModelProperty(value = "打款方式 (10微信 20支付宝 30银行卡)") + private Integer payType; + + @ApiModelProperty(value = "支付宝姓名") + private String alipayName; + + @ApiModelProperty(value = "支付宝账号") + private String alipayAccount; + + @ApiModelProperty(value = "开户行名称") + private String bankName; + + @ApiModelProperty(value = "银行开户名") + private String bankAccount; + + @ApiModelProperty(value = "银行卡号") + private String bankCard; + + @ApiModelProperty(value = "申请状态 (10待审核 20审核通过 30驳回 40已打款)") + private Integer applyStatus; + + @ApiModelProperty(value = "驳回原因") + private String rejectReason; + + @ApiModelProperty(value = "来源客户端(APP、H5、小程序等)") + private String platform; + + @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; + + @ApiModelProperty(value = "商户名称") + @TableField(exist = false) + private String merchantName; + + @ApiModelProperty(value = "评论者昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "评论者头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "真实姓名") + @TableField(exist = false) + private String realName; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/Order.java b/src/main/java/com/gxwebsoft/shop/entity/Order.java new file mode 100644 index 0000000..77e2914 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Order.java @@ -0,0 +1,261 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.gxwebsoft.apps.entity.Equipment; +import com.gxwebsoft.apps.entity.EquipmentOrderGoods; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +/** + * 订单记录表 + * + * @author WebSoft + * @since 2022-11-16 11:25:58 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Order对象", description = "订单记录表") +@TableName("shop_order") +public class Order implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单ID") + @TableId(value = "order_id", type = IdType.AUTO) + private Integer orderId; + + @ApiModelProperty(value = "订单标题") + private String subject; + + @ApiModelProperty(value = "订单号") + private Long orderNo; + + @ApiModelProperty(value = "商品总金额(不含优惠折扣)") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "订单金额(含优惠折扣)") + private BigDecimal orderPrice; + + @ApiModelProperty(value = "优惠券ID") + private Integer couponId; + + @ApiModelProperty(value = "优惠券抵扣金额") + private BigDecimal couponMoney; + + @ApiModelProperty(value = "积分抵扣金额") + private BigDecimal pointsMoney; + + @ApiModelProperty(value = "积分抵扣数量") + private Integer pointsNum; + + @ApiModelProperty(value = "实际付款金额(包含运费)") + private BigDecimal payPrice; + + @ApiModelProperty(value = "第三方支付实收金额") + private BigDecimal receiptAmount; + + @ApiModelProperty(value = "后台修改的订单金额(差价)") + private BigDecimal updatePrice; + + @ApiModelProperty(value = "买家留言") + private String buyerRemark; + + @ApiModelProperty(value = "支付方式(废弃)") + private Integer payType; + + @ApiModelProperty(value = "支付方式(余额/微信/支付宝)") + private String payMethod; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + private Integer payStatus; + + @ApiModelProperty(value = "付款时间") + private Date payTime; + + @ApiModelProperty(value = "服务开始时间") + private Date startTime; + + @ApiModelProperty(value = "服务到期时间") + private Date expirationTime; + + @ApiModelProperty(value = "购买月份数量") + private Integer month; + + @ApiModelProperty(value = "0星期日 1星期一 2星期二 3星期三 4星期四 5星期五 6星期六") + private Integer week; + + @ApiModelProperty(value = "第三方交易记录ID") + private String tradeId; + + @ApiModelProperty(value = "配送方式(10快递配送 20门店自提)") + private Integer deliveryType; + + @ApiModelProperty(value = "自提门店ID") + private Integer extractShopId; + + @ApiModelProperty(value = "核销店员ID") + private Integer extractClerkId; + + @ApiModelProperty(value = "运费金额") + private BigDecimal expressPrice; + + @ApiModelProperty(value = "物流公司ID (废弃)") + private Integer expressId; + + @ApiModelProperty(value = "物流单号 (废弃)") + private String expressNo; + + @ApiModelProperty(value = "发货状态(10未发货 20已发货 30部分发货)") + private Integer deliveryStatus; + + @ApiModelProperty(value = "发货时间") + private Date deliveryTime; + + @ApiModelProperty(value = "收货状态(10未收货 20已收货)") + private Integer receiptStatus; + + @ApiModelProperty(value = "收货时间") + private Date receiptTime; + + @ApiModelProperty(value = "订单状态(10进行中 20取消 21待取消 30已完成)") + private Integer orderStatus; + + @ApiModelProperty(value = "赠送的积分数量") + private Integer pointsBonus; + + @ApiModelProperty(value = "商家备注") + private String merchantRemark; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + private Integer isSettled; + + @ApiModelProperty(value = "最后结算时间") + private Date settledTime; + + @ApiModelProperty(value = "续租订单的关联单号") + private Integer rentOrderId; + + @ApiModelProperty(value = "微信支付交易号(废弃)") + private String transactionId; + + @ApiModelProperty(value = "是否已评价(0否 1是)") + private Integer isComment; + + @ApiModelProperty(value = "订单来源(10普通订单 20砍价订单 30秒杀订单)") + private Integer orderSource; + + @ApiModelProperty(value = "来源记录ID") + private Integer orderSourceId; + + @ApiModelProperty(value = "来源记录的参数 (json格式)") + private String orderSourceData; + + @ApiModelProperty(value = "电池租金") + private BigDecimal batteryRent; + + @ApiModelProperty(value = "电池押金") + private BigDecimal batteryDeposit; + + @ApiModelProperty(value = "保险") + private BigDecimal batteryInsurance; + + @ApiModelProperty(value = "来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "是否续费订单") + private Integer isRenew; + + @ApiModelProperty(value = "是否临时报餐") + private Integer isTemporary; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "设备ID") + private Integer equipmentId; + + @ApiModelProperty(value = "商户编号") + private String merchantCode; + + @ApiModelProperty(value = "商户名称") + @TableField(exist = false) + private String merchantName; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty("账号") + @TableField(exist = false) + private String username; + + @ApiModelProperty("用户别名") + @TableField(exist = false) + private String alias; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "联系电话") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "所属部门") + @TableField(exist = false) + private Integer organizationId; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String organizationName; + + @ApiModelProperty("商品列表") + @TableField(exist = false) + private List goodsList; + + @ApiModelProperty("管理电池商品") + @TableField(exist = false) + private EquipmentOrderGoods equipmentGoods; + + @ApiModelProperty("设备") + @TableField(exist = false) + private Equipment equipment; + + @ApiModelProperty("推荐人ID") + @TableField(exist = false) + private Integer dealerId; +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/OrderAddress.java b/src/main/java/com/gxwebsoft/shop/entity/OrderAddress.java new file mode 100644 index 0000000..68f1202 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/OrderAddress.java @@ -0,0 +1,81 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 订单收货地址记录表 + * + * @author 科技小王子 + * @since 2022-12-02 21:21:10 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OrderAddress对象", description = "订单收货地址记录表") +@TableName("shop_order_address") +public class OrderAddress implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "地址ID") + @TableId(value = "order_address_id", type = IdType.AUTO) + private Integer orderAddressId; + + @ApiModelProperty(value = "收货人姓名") + private String name; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "省份ID") + private Integer provinceId; + + @ApiModelProperty(value = "城市ID") + private Integer cityId; + + @ApiModelProperty(value = "区/县ID") + private Integer regionId; + + @ApiModelProperty(value = "详细地址") + private String detail; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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/entity/OrderGoods.java b/src/main/java/com/gxwebsoft/shop/entity/OrderGoods.java new file mode 100644 index 0000000..6163cd9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/OrderGoods.java @@ -0,0 +1,200 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 订单商品记录表 + * + * @author 科技小王子 + * @since 2022-12-09 17:15:31 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OrderGoods对象", description = "订单商品记录表") +@TableName("shop_order_goods") +public class OrderGoods implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单商品ID") + @TableId(value = "order_goods_id", type = IdType.AUTO) + private Integer orderGoodsId; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品分类ID") + private Integer categoryId; + + @ApiModelProperty(value = "分类名称") + @TableField(exist = false) + private String categoryName; + + @ApiModelProperty(value = "商品封面图") + private String imageUrl; + + @ApiModelProperty(value = "商品封面图ID") + private Integer imageId; + + @ApiModelProperty(value = "库存计算方式(10下单减库存 20付款减库存)") + private Integer deductStockType; + + @ApiModelProperty(value = "规格类型(10单规格 20多规格)") + private Integer specType; + + @ApiModelProperty(value = "商品sku唯一标识") + private String goodsSkuId; + + @ApiModelProperty(value = "SKU的规格属性(json格式)") + private String goodsProps; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "商品编码") + private String goodsNo; + + @ApiModelProperty(value = "商品价格(单价)") + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "商品划线价") + private BigDecimal linePrice; + + @ApiModelProperty(value = "商品重量(Kg)") + private Double goodsWeight; + + @ApiModelProperty(value = "是否存在会员等级折扣") + private Integer isUserGrade; + + @ApiModelProperty(value = "会员折扣比例(0-10)") + private Integer gradeRatio; + + @ApiModelProperty(value = "会员折扣的商品单价") + private BigDecimal gradeGoodsPrice; + + @ApiModelProperty(value = "会员折扣的总额差") + private BigDecimal gradeTotalMoney; + + @ApiModelProperty(value = "优惠券折扣金额") + private BigDecimal couponMoney; + + @ApiModelProperty(value = "积分金额") + private BigDecimal pointsMoney; + + @ApiModelProperty(value = "积分抵扣数量") + private Integer pointsNum; + + @ApiModelProperty(value = "赠送的积分数量") + private Integer pointsBonus; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + @TableField(exist = false) + private Integer payStatus; + + @ApiModelProperty(value = "购买数量") + private Integer totalNum; + + @ApiModelProperty(value = "商品总价(数量×单价)") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "实际付款价(折扣和优惠后)") + private BigDecimal totalPayPrice; + + @ApiModelProperty(value = "发货状态(10未发货 20已发货 30部分发货)") + private Integer deliveryStatus; + + @ApiModelProperty(value = "发货时间") + @TableField(exist = false) + private Date deliveryTime; + + @ApiModelProperty(value = "0星期日 1星期一 2星期二 3星期三 4星期四 5星期五 6星期六") + @TableField(exist = false) + private Integer week; + + @ApiModelProperty(value = "已发货数量") + private Integer deliveryNum; + + @ApiModelProperty(value = "所属档口") + private Integer gear; + + @ApiModelProperty(value = "是否临时报餐") + private Integer temporary; + + @ApiModelProperty(value = "是否开启单独分销(0关闭 1开启)") + private Integer isIndDealer; + + @ApiModelProperty(value = "分销佣金类型(10百分比 20固定金额)") + private Integer dealerMoneyType; + + @ApiModelProperty(value = "分销佣金(一级)") + private BigDecimal firstMoney; + + @ApiModelProperty(value = "分销佣金(二级)") + private BigDecimal secondMoney; + + @ApiModelProperty(value = "分销佣金(三级)") + private BigDecimal thirdMoney; + + @ApiModelProperty(value = "是否已评价(0否 1是)") + private Integer isComment; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "来源记录ID") + private Integer goodsSourceId; + + @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; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "订单状态") + @TableField(exist = false) + private Integer orderStatus; + + @ApiModelProperty("是否允许取消") + @TableField(exist = false) + private Boolean isCancel; + + @ApiModelProperty("导出数据") + @TableField(exist = false) + private Object exportData; +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/OrderRefund.java b/src/main/java/com/gxwebsoft/shop/entity/OrderRefund.java new file mode 100644 index 0000000..67400a9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/OrderRefund.java @@ -0,0 +1,117 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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-05-18 13:09:51 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OrderRefund对象", description = "售后单记录表") +@TableName("shop_order_refund") +public class OrderRefund implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "售后单ID") + @TableId(value = "order_refund_id", type = IdType.AUTO) + private Integer orderRefundId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "订单商品ID") + private Integer orderGoodsId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "售后类型(10退货退款 20换货)") + private Integer type; + + @ApiModelProperty(value = "用户申请原因(说明)") + private String applyDesc; + + @ApiModelProperty(value = "商家审核状态(0待审核 10已同意 20已拒绝)") + private Integer auditStatus; + + @ApiModelProperty(value = "商家拒绝原因(说明)") + private String refuseDesc; + + @ApiModelProperty(value = "实际退款金额") + private BigDecimal refundMoney; + + @ApiModelProperty(value = "用户是否发货(0未发货 1已发货)") + private Integer isUserSend; + + @ApiModelProperty(value = "用户发货时间") + private Integer sendTime; + + @ApiModelProperty(value = "用户发货物流公司ID") + private String expressId; + + @ApiModelProperty(value = "用户发货物流单号") + private String expressNo; + + @ApiModelProperty(value = "商家收货状态(0未收货 1已收货)") + private Integer isReceipt; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "设备编号") + @TableField(exist = false) + private String equipmentCode; + + @ApiModelProperty(value = "商户名称") + @TableField(exist = false) + private String merchantName; + + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/OrderRefundAddress.java b/src/main/java/com/gxwebsoft/shop/entity/OrderRefundAddress.java new file mode 100644 index 0000000..2bff36d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/OrderRefundAddress.java @@ -0,0 +1,82 @@ +package com.gxwebsoft.shop.entity; + +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-05-18 13:09:51 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OrderRefundAddress对象", description = "售后单退货地址记录表") +@TableName("shop_order_refund_address") +public class OrderRefundAddress implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "售后单ID") + private Integer orderRefundId; + + @ApiModelProperty(value = "收货人姓名") + private String name; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "所在省份ID") + private Integer provinceId; + + @ApiModelProperty(value = "所在城市ID") + private Integer cityId; + + @ApiModelProperty(value = "所在区/县ID") + private Integer regionId; + + @ApiModelProperty(value = "详细地址") + private String detail; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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/entity/OrderRenew.java b/src/main/java/com/gxwebsoft/shop/entity/OrderRenew.java new file mode 100644 index 0000000..450572b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/OrderRenew.java @@ -0,0 +1,77 @@ +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-04-13 10:34:35 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "OrderRenew对象", description = "续费订单记录表") +@TableName("shop_order_renew") +public class OrderRenew implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "续费单ID") + @TableId(value = "order_renew_id", type = IdType.AUTO) + private Integer orderRenewId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "订单商品ID") + private Integer orderGoodsId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "类型(10续费订单)") + private Integer type; + + @ApiModelProperty(value = "实际续费金额") + private BigDecimal renewMoney; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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/entity/Payment.java b/src/main/java/com/gxwebsoft/shop/entity/Payment.java new file mode 100644 index 0000000..3e21235 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/Payment.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 商城支付方式记录表 + * + * @author 科技小王子 + * @since 2022-12-15 19:11:07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Payment对象", description = "商城支付方式记录表") +@TableName("shop_payment") +public class Payment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "支付方式ID") + @TableId(value = "payment_id", type = IdType.AUTO) + private Integer paymentId; + + @ApiModelProperty(value = "支付方式(微信、支付宝、余额)") + private String method; + + @ApiModelProperty(value = "编码") + private String paymentCode; + + @ApiModelProperty(value = "支付配置(json格式)") + private String config; + + @ApiModelProperty(value = "是否为默认支付方式") + private Integer isDefault; + + @ApiModelProperty(value = "是否启用") + private Integer isEnable; + + @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/entity/PaymentTemplate.java b/src/main/java/com/gxwebsoft/shop/entity/PaymentTemplate.java new file mode 100644 index 0000000..64a9eb3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/PaymentTemplate.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 商城支付模板记录表 + * + * @author 科技小王子 + * @since 2022-12-09 13:59:38 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "PaymentTemplate对象", description = "商城支付模板记录表") +@TableName("shop_payment_template") +public class PaymentTemplate implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "支付模板ID") + @TableId(value = "template_id", type = IdType.AUTO) + private Integer templateId; + + @ApiModelProperty(value = "支付模板名称") + private String name; + + @ApiModelProperty(value = "支付方式(微信、支付宝、余额)") + private String method; + + @ApiModelProperty(value = "支付配置(json格式)") + private String config; + + @ApiModelProperty(value = "管理员备注") + private String remarks; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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/entity/PaymentTrade.java b/src/main/java/com/gxwebsoft/shop/entity/PaymentTrade.java new file mode 100644 index 0000000..729eead --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/PaymentTrade.java @@ -0,0 +1,91 @@ +package com.gxwebsoft.shop.entity; + +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 2022-12-09 13:59:38 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "PaymentTrade对象", description = "第三方支付交易记录表") +@TableName("shop_payment_trade") +public class PaymentTrade implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "交易记录ID") + @TableId(value = "trade_id", type = IdType.AUTO) + private Integer tradeId; + + @ApiModelProperty(value = "交易订单号(全局唯一)") + private String outTradeNo; + + @ApiModelProperty(value = "发起客户端(H5、小程序、APP)") + private String client; + + @ApiModelProperty(value = "支付方式(微信、支付宝)") + private String payMethod; + + @ApiModelProperty(value = "订单类型(10商城订单 100余额充值订单)") + private Integer orderType; + + @ApiModelProperty(value = "订单ID(商城订单、充值订单)") + private Integer orderId; + + @ApiModelProperty(value = "商城订单号(商城订单、充值订单)") + private String orderNo; + + @ApiModelProperty(value = "第三方交易流水号") + private String tradeNo; + + @ApiModelProperty(value = "预支付交易会话ID(微信支付)") + private String prepayId; + + @ApiModelProperty(value = "交易状态") + private Integer tradeState; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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/entity/RechargeOrder.java b/src/main/java/com/gxwebsoft/shop/entity/RechargeOrder.java new file mode 100644 index 0000000..3cb2268 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/RechargeOrder.java @@ -0,0 +1,112 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 会员充值订单表 + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "RechargeOrder对象", description = "会员充值订单表") +@TableName("shop_recharge_order") +public class RechargeOrder implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单ID") + @TableId(value = "order_id", type = IdType.AUTO) + private Integer orderId; + + @ApiModelProperty(value = "订单号") + private Long orderNo; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "部门ID") + private Integer organizationId; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String organizationName; + + @ApiModelProperty(value = "充值方式(10自定义金额 20套餐充值)") + private Integer rechargeType; + + @ApiModelProperty(value = "充值套餐ID") + private Integer planId; + + @ApiModelProperty(value = "用户支付金额") + private BigDecimal payPrice; + + @ApiModelProperty(value = "赠送金额") + private BigDecimal giftMoney; + + @ApiModelProperty(value = "实际到账金额") + private BigDecimal actualMoney; + + @ApiModelProperty(value = "用户余额") + private BigDecimal balance; + + @ApiModelProperty(value = "支付方式(微信/支付宝)") + private String payMethod; + + @ApiModelProperty(value = "支付状态(10待支付 20已支付)") + private Integer payStatus; + + @ApiModelProperty(value = "付款时间") + private Integer payTime; + + @ApiModelProperty(value = "第三方交易记录ID") + private Integer tradeId; + + @ApiModelProperty(value = "来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/RechargeOrderPlan.java b/src/main/java/com/gxwebsoft/shop/entity/RechargeOrderPlan.java new file mode 100644 index 0000000..f042503 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/RechargeOrderPlan.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-04-20 20:36:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "RechargeOrderPlan对象", description = "会员充值订单套餐快照表") +@TableName("shop_recharge_order_plan") +public class RechargeOrderPlan implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "order_plan_id", type = IdType.AUTO) + private Integer orderPlanId; + + @ApiModelProperty(value = "订单ID") + private Integer orderId; + + @ApiModelProperty(value = "主键ID") + private Integer planId; + + @ApiModelProperty(value = "方案名称") + private String planName; + + @ApiModelProperty(value = "充值金额") + private BigDecimal money; + + @ApiModelProperty(value = "赠送金额") + private BigDecimal giftMoney; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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/entity/RechargePlan.java b/src/main/java/com/gxwebsoft/shop/entity/RechargePlan.java new file mode 100644 index 0000000..b1992f2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/RechargePlan.java @@ -0,0 +1,74 @@ +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-04-20 20:36:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "RechargePlan对象", description = "会员充值套餐表") +@TableName("shop_recharge_plan") +public class RechargePlan implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "plan_id", type = IdType.AUTO) + private Integer planId; + + @ApiModelProperty(value = "套餐名称") + private String planName; + + @ApiModelProperty(value = "充值金额") + private BigDecimal money; + + @ApiModelProperty(value = "赠送金额") + private BigDecimal giftMoney; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + private Integer shopId; + + @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/entity/UserAddress.java b/src/main/java/com/gxwebsoft/shop/entity/UserAddress.java new file mode 100644 index 0000000..184b276 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserAddress.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.shop.entity; + +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 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserAddress对象", description = "用户收货地址表") +@TableName("shop_user_address") +public class UserAddress implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "address_id", type = IdType.AUTO) + private Integer addressId; + + @ApiModelProperty(value = "收货人姓名") + private String name; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "省份ID") + private Integer provinceId; + + @ApiModelProperty(value = "城市ID") + private Integer cityId; + + @ApiModelProperty(value = "区/县ID") + private Integer regionId; + + @ApiModelProperty(value = "详细地址") + private String detail; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserBalanceLog.java b/src/main/java/com/gxwebsoft/shop/entity/UserBalanceLog.java new file mode 100644 index 0000000..792e3cd --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserBalanceLog.java @@ -0,0 +1,81 @@ +package com.gxwebsoft.shop.entity; + +import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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-04-21 15:59:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserBalanceLog对象", description = "用户余额变动明细表") +@TableName("shop_user_balance_log") +public class UserBalanceLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "余额变动场景(10用户充值 20用户消费 30管理员操作 40订单退款)") + 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; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserComment.java b/src/main/java/com/gxwebsoft/shop/entity/UserComment.java new file mode 100644 index 0000000..3938ece --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserComment.java @@ -0,0 +1,144 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 用户评价记录表 + * + * @author 科技小王子 + * @since 2023-07-06 13:55:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserComment对象", description = "用户评价记录表") +@TableName("shop_user_comment") +public class UserComment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评价ID") + @TableId(value = "comment_id", type = IdType.AUTO) + private Integer commentId; + + @ApiModelProperty(value = "评分 (10好评 20中评 30差评)") + private Integer score; + + @ApiModelProperty(value = "评价内容") + private String content; + + @ApiModelProperty(value = "是否为图片评价") + private Integer isPicture; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "被评论者ID") + private Integer toUserId; + + @ApiModelProperty(value = "回复的评论ID") + private Integer replyCommentId; + + @ApiModelProperty(value = "回复者ID") + private Integer replyUserId; + + @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; + + @ApiModelProperty(value = "评论者昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "评论者头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "评论者粉丝数") + @TableField(exist = false) + private Integer fans; + + @ApiModelProperty(value = "是否已点赞") + @TableField(exist = false) + private Integer liked; + + @ApiModelProperty(value = "评论者获赞数") + @TableField(exist = false) + private Boolean likes; + + @ApiModelProperty(value = "评论者所在省份") + @TableField(exist = false) + private String province; + + @ApiModelProperty(value = "评论者所在城市") + @TableField(exist = false) + private String city; + + @ApiModelProperty(value = "被评论者昵称") + @TableField(exist = false) + private String toUserNickname; + + @ApiModelProperty(value = "被评论者头像") + @TableField(exist = false) + private String toUserAvatar; + + @ApiModelProperty(value = "被评论者粉丝数") + @TableField(exist = false) + private Integer toUserFans; + + @ApiModelProperty(value = "被评论者所在省份") + @TableField(exist = false) + private String toUserProvince; + + @ApiModelProperty(value = "被评论者所在城市") + @TableField(exist = false) + private String toUserCity; + + @ApiModelProperty(value = "被评论者获赞数") + @TableField(exist = false) + private Integer toUserLikes; + + @ApiModelProperty(value = "回复者昵称") + @TableField(exist = false) + private String replyNickname; + + @ApiModelProperty(value = "回复者头像") + @TableField(exist = false) + private String replyAvatar; + + @ApiModelProperty(value = "回复者粉丝数") + @TableField(exist = false) + private Integer replyFans; + + @ApiModelProperty(value = "子评论列表") + @TableField(exist = false) + private List children; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserCoupon.java b/src/main/java/com/gxwebsoft/shop/entity/UserCoupon.java new file mode 100644 index 0000000..cf5ed0d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserCoupon.java @@ -0,0 +1,100 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 用户优惠券记录表 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserCoupon对象", description = "用户优惠券记录表") +@TableName("shop_user_coupon") +public class UserCoupon implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "user_coupon_id", type = IdType.AUTO) + private Integer userCouponId; + + @ApiModelProperty(value = "优惠券ID") + private Integer couponId; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券类型(10满减券 20折扣券)") + private Integer couponType; + + @ApiModelProperty(value = "满减券-减免金额") + private BigDecimal reducePrice; + + @ApiModelProperty(value = "折扣券-折扣率(0-100)") + private Integer discount; + + @ApiModelProperty(value = "最低消费金额") + private BigDecimal minPrice; + + @ApiModelProperty(value = "到期类型(10领取后生效 20固定时间)") + private Integer expireType; + + @ApiModelProperty(value = "领取后生效-有效天数") + private Integer expireDay; + + @ApiModelProperty(value = "有效期开始时间") + private Integer startTime; + + @ApiModelProperty(value = "有效期结束时间") + private Integer endTime; + + @ApiModelProperty(value = "适用范围(10全部商品 20指定商品)") + private Integer applyRange; + + @ApiModelProperty(value = "适用范围配置(json格式)") + private String applyRangeConfig; + + @ApiModelProperty(value = "是否过期(0未过期 1已过期)") + private Integer isExpire; + + @ApiModelProperty(value = "是否已使用(0未使用 1已使用)") + private Integer isUse; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserFeedback.java b/src/main/java/com/gxwebsoft/shop/entity/UserFeedback.java new file mode 100644 index 0000000..78ec9b9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserFeedback.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; + +import java.time.LocalDateTime; +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-07-16 22:24:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserFeedback对象", description = "意见反馈记录表") +@TableName("shop_user_feedback") +public class UserFeedback implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "类型") + private String type; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "反馈图片") + private String images; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserFollow.java b/src/main/java/com/gxwebsoft/shop/entity/UserFollow.java new file mode 100644 index 0000000..8472f49 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserFollow.java @@ -0,0 +1,91 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 关注记录表 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserFollow对象", description = "关注记录表") +@TableName("shop_user_follow") +public class UserFollow implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "关注人") + @TableField(exist = false) + private User formUser; + + @ApiModelProperty(value = "被关注人") + @TableField(exist = false) + private User toUser; + + @ApiModelProperty(value = "商铺ID") + private Integer shopId; + + @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是") + 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 String nickname; + + @ApiModelProperty(value = "关注人头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "被关注人昵称") + @TableField(exist = false) + private String shopNickname; + + @ApiModelProperty(value = "被关注人头像") + @TableField(exist = false) + private String shopAvatar; + + @ApiModelProperty(value = "是否相互关注") + @TableField(exist = false) + private Boolean eachFollow; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserGrade.java b/src/main/java/com/gxwebsoft/shop/entity/UserGrade.java new file mode 100644 index 0000000..e6a501d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserGrade.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户会员等级表 + * + * @author 科技小王子 + * @since 2023-06-20 16:33:06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserGrade对象", description = "用户会员等级表") +@TableName("shop_user_grade") +public class UserGrade implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "等级ID") + @TableId(value = "grade_id", type = IdType.AUTO) + private Integer gradeId; + + @ApiModelProperty(value = "等级名称") + private String name; + + @ApiModelProperty(value = "等级权重(1-9999)") + private Integer weight; + + @ApiModelProperty(value = "升级条件") + private String upgrade; + + @ApiModelProperty(value = "等级权益(折扣率0-100)") + private String equity; + + @ApiModelProperty(value = "佣金比率") + private String commission; + + @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/entity/UserGradeLog.java b/src/main/java/com/gxwebsoft/shop/entity/UserGradeLog.java new file mode 100644 index 0000000..b6adcb5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserGradeLog.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户会员等级变更记录表 + * + * @author 科技小王子 + * @since 2023-06-20 16:33:06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserGradeLog对象", description = "用户会员等级变更记录表") +@TableName("shop_user_grade_log") +public class UserGradeLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "变更前的等级ID") + private Integer oldGradeId; + + @ApiModelProperty(value = "变更后的等级ID") + private Integer newGradeId; + + @ApiModelProperty(value = "变更类型(10后台管理员设置 20自动升级)") + private Integer changeType; + + @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/entity/UserLike.java b/src/main/java/com/gxwebsoft/shop/entity/UserLike.java new file mode 100644 index 0000000..80f88f7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserLike.java @@ -0,0 +1,78 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 点赞记录表 + * + * @author 科技小王子 + * @since 2023-07-06 17:51:04 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserLike对象", description = "点赞记录表") +@TableName("shop_user_like") +public class UserLike implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "点赞对象ID") + private Integer toUserId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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是") + private Integer deleted; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + + @ApiModelProperty(value = "评论者昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "评论者头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "被评论者昵称") + @TableField(exist = false) + private String toUserNickname; + + @ApiModelProperty(value = "被评论者头像") + @TableField(exist = false) + private String toUserAvatar; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserLook.java b/src/main/java/com/gxwebsoft/shop/entity/UserLook.java new file mode 100644 index 0000000..1a67ea1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserLook.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 访客记录表 + * + * @author 科技小王子 + * @since 2023-07-13 23:10:38 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserLook对象", description = "访客记录表") +@TableName("shop_user_look") +public class UserLook implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "点赞对象ID") + private Integer toUserId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + private Integer status; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "访问者昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "访问者头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserOauth.java b/src/main/java/com/gxwebsoft/shop/entity/UserOauth.java new file mode 100644 index 0000000..c3f4c28 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserOauth.java @@ -0,0 +1,69 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 第三方用户信息表 + * + * @author 科技小王子 + * @since 2022-12-15 08:33:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserOauth对象", description = "第三方用户信息表") +@TableName("shop_user_oauth") +public class UserOauth implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "第三方登陆类型(MP-WEIXIN)") + private String oauthType; + + @ApiModelProperty(value = "第三方用户唯一标识 (uid openid)") + private String oauthId; + + @ApiModelProperty(value = "微信unionID") + private String unionid; + + @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/entity/UserPointsLog.java b/src/main/java/com/gxwebsoft/shop/entity/UserPointsLog.java new file mode 100644 index 0000000..bda4980 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserPointsLog.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 用户积分变动明细表 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserPointsLog对象", description = "用户积分变动明细表") +@TableName("shop_user_points_log") +public class UserPointsLog implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "log_id", type = IdType.AUTO) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "变动数量") + private Integer value; + + @ApiModelProperty(value = "描述/说明") + private String describe; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/shop/entity/UserReferee.java b/src/main/java/com/gxwebsoft/shop/entity/UserReferee.java new file mode 100644 index 0000000..5226886 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/entity/UserReferee.java @@ -0,0 +1,107 @@ +package com.gxwebsoft.shop.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.gxwebsoft.common.system.entity.User; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 用户推荐关系表 + * + * @author 科技小王子 + * @since 2023-04-28 14:07:29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "UserReferee对象", description = "用户推荐关系表") +@TableName("shop_user_referee") +public class UserReferee implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "推荐人ID") + private Integer dealerId; + + @ApiModelProperty(value = "用户id(被推荐人)") + private Integer userId; + + @ApiModelProperty(value = "推荐关系层级(1,2,3)") + private Integer level; + + @ApiModelProperty(value = "备注") + private String comments; + + @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 dealer; + + @ApiModelProperty(value = "被推荐人") + @TableField(exist = false) + private User user; + + @ApiModelProperty(value = "被推荐人的报餐信息") + @TableField(exist = false) + private List order; + + @ApiModelProperty(value = "被推荐人的报餐菜品") + @TableField(exist = false) + private List orderGoods; + + @ApiModelProperty(value = "被推荐人昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "被推荐人头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "被推荐人等级ID") + @TableField(exist = false) + private Integer gradeId; + + @ApiModelProperty(value = "被推荐人等级") + @TableField(exist = false) + private String gradeName; + + @ApiModelProperty(value = "推荐人昵称") + @TableField(exist = false) + private String dealerName; + + @ApiModelProperty(value = "推荐人头像") + @TableField(exist = false) + private String dealerAvatar; + + @ApiModelProperty(value = "推荐人电话") + @TableField(exist = false) + private String dealerPhone; + + @ApiModelProperty(value = "用户所属门店") + private Integer merchantId; + + @ApiModelProperty(value = "所属门店") + @TableField(exist = false) + private Merchant merchant; + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/CartMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/CartMapper.java new file mode 100644 index 0000000..8889fcd --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/CartMapper.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.Cart; +import com.gxwebsoft.shop.param.CartParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 购物车记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface CartMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CartParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CartParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/CategoryMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/CategoryMapper.java new file mode 100644 index 0000000..bdf81ed --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/CategoryMapper.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.Category; +import com.gxwebsoft.shop.param.CategoryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品分类表Mapper + * + * @author 科技小王子 + * @since 2022-11-22 17:45:37 + */ +public interface CategoryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CategoryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CategoryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/CommentMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/CommentMapper.java new file mode 100644 index 0000000..7ba9719 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/CommentMapper.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.Comment; +import com.gxwebsoft.shop.param.CommentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品评价记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-23 21:18:56 + */ +public interface CommentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CommentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CommentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/CouponMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/CouponMapper.java new file mode 100644 index 0000000..bd393cb --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/CouponMapper.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.Coupon; +import com.gxwebsoft.shop.param.CouponParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 优惠券记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-28 18:26:05 + */ +public interface CouponMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") CouponParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") CouponParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/ExpressMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/ExpressMapper.java new file mode 100644 index 0000000..80fa82a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/ExpressMapper.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.Express; +import com.gxwebsoft.shop.param.ExpressParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 物流公司记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-22 00:21:07 + */ +public interface ExpressMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") ExpressParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") ExpressParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/GoodsMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/GoodsMapper.java new file mode 100644 index 0000000..bbecec7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/GoodsMapper.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.Goods; +import com.gxwebsoft.shop.param.GoodsParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-23 12:47:16 + */ +public interface GoodsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") GoodsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") GoodsParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/GoodsServiceMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/GoodsServiceMapper.java new file mode 100644 index 0000000..821e516 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/GoodsServiceMapper.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.GoodsService; +import com.gxwebsoft.shop.param.GoodsServiceParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商品服务与承诺记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-23 21:57:50 + */ +public interface GoodsServiceMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") GoodsServiceParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") GoodsServiceParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/MemberMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/MemberMapper.java new file mode 100644 index 0000000..5d8e4be --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/MemberMapper.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.Member; +import com.gxwebsoft.shop.param.MemberParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商城会员Mapper + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +public interface MemberMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MemberParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MemberParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/MerchantClerkMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/MerchantClerkMapper.java new file mode 100644 index 0000000..12d4754 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/MerchantClerkMapper.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.MerchantClerk; +import com.gxwebsoft.shop.param.MerchantClerkParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商家门店店员表Mapper + * + * @author 科技小王子 + * @since 2022-11-30 16:32:25 + */ +public interface MerchantClerkMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MerchantClerkParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MerchantClerkParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/MerchantMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/MerchantMapper.java new file mode 100644 index 0000000..aeaf966 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/MerchantMapper.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.Merchant; +import com.gxwebsoft.shop.param.MerchantParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商户管理Mapper + * + * @author 科技小王子 + * @since 2022-11-30 15:10:54 + */ +public interface MerchantMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MerchantParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MerchantParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/MerchantWithdrawMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/MerchantWithdrawMapper.java new file mode 100644 index 0000000..b8d711c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/MerchantWithdrawMapper.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.MerchantWithdraw; +import com.gxwebsoft.shop.param.MerchantWithdrawParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商户提现记录Mapper + * + * @author 科技小王子 + * @since 2022-12-02 00:41:09 + */ +public interface MerchantWithdrawMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") MerchantWithdrawParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") MerchantWithdrawParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderAddressMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderAddressMapper.java new file mode 100644 index 0000000..ac793d8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderAddressMapper.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.OrderAddress; +import com.gxwebsoft.shop.param.OrderAddressParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 订单收货地址记录表Mapper + * + * @author 科技小王子 + * @since 2022-12-02 21:21:10 + */ +public interface OrderAddressMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OrderAddressParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OrderAddressParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderGoodsMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderGoodsMapper.java new file mode 100644 index 0000000..090562a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderGoodsMapper.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.OrderGoodsParam; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 订单商品记录表Mapper + * + * @author 科技小王子 + * @since 2022-12-09 17:15:31 + */ +public interface OrderGoodsMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OrderGoodsParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OrderGoodsParam param); + + + List selectByOrderIds(List orderIds); + + @InterceptorIgnore(tenantLine = "true") + @Select("SELECT * FROM shop_order_goods WHERE order_id = #{param.orderId}") + List selectByOrderId(Integer orderId); + + @InterceptorIgnore(tenantLine = "true") + int selectCountBySettled(@Param("param") OrderGoodsParam param); +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderMapper.java new file mode 100644 index 0000000..5fe85a1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderMapper.java @@ -0,0 +1,59 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.param.OrderParam; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 订单记录表Mapper + * + * @author WebSoft + * @since 2022-11-16 11:25:58 + */ +public interface OrderMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OrderParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OrderParam param); + + + @InterceptorIgnore(tenantLine = "true") + List getOne(@Param("param") OrderParam param); + + @InterceptorIgnore(tenantLine = "true") + boolean updatePayStatus(@Param("param") OrderParam param); + + @InterceptorIgnore(tenantLine = "true") + @Select("UPDATE shop_order SET pay_status = #{param.payStatus} where order_no = #{param.orderNo}") + List getAll(@Param("param") OrderParam param); + +// @InterceptorIgnore(tenantLine = "true") + boolean updateByIdRel(@Param("param") Order order); + + @InterceptorIgnore(tenantLine = "true") + List selectPageSettled(@Param("page") IPage page, + @Param("param") OrderParam param); + + @InterceptorIgnore(tenantLine = "true") + void updateByIdSettled(@Param("param") Order order); +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderRefundAddressMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderRefundAddressMapper.java new file mode 100644 index 0000000..363dd16 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderRefundAddressMapper.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.OrderRefundAddress; +import com.gxwebsoft.shop.param.OrderRefundAddressParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 售后单退货地址记录表Mapper + * + * @author 科技小王子 + * @since 2023-05-18 13:09:51 + */ +public interface OrderRefundAddressMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OrderRefundAddressParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OrderRefundAddressParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderRefundMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderRefundMapper.java new file mode 100644 index 0000000..2afaccd --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderRefundMapper.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.OrderRefund; +import com.gxwebsoft.shop.param.OrderRefundParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 售后单记录表Mapper + * + * @author 科技小王子 + * @since 2023-05-18 13:09:51 + */ +public interface OrderRefundMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OrderRefundParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OrderRefundParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/OrderRenewMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/OrderRenewMapper.java new file mode 100644 index 0000000..f82389d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/OrderRenewMapper.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.OrderRenew; +import com.gxwebsoft.shop.param.OrderRenewParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 续费订单记录表Mapper + * + * @author 科技小王子 + * @since 2023-04-13 10:34:35 + */ +public interface OrderRenewMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") OrderRenewParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") OrderRenewParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/PaymentMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/PaymentMapper.java new file mode 100644 index 0000000..2f2c331 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/PaymentMapper.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.Payment; +import com.gxwebsoft.shop.param.PaymentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商城支付方式记录表Mapper + * + * @author 科技小王子 + * @since 2022-12-15 19:11:07 + */ +public interface PaymentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") PaymentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") PaymentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/PaymentTemplateMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/PaymentTemplateMapper.java new file mode 100644 index 0000000..de133ec --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/PaymentTemplateMapper.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.PaymentTemplate; +import com.gxwebsoft.shop.param.PaymentTemplateParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 商城支付模板记录表Mapper + * + * @author 科技小王子 + * @since 2022-12-09 13:59:38 + */ +public interface PaymentTemplateMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") PaymentTemplateParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") PaymentTemplateParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/PaymentTradeMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/PaymentTradeMapper.java new file mode 100644 index 0000000..b830756 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/PaymentTradeMapper.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.PaymentTrade; +import com.gxwebsoft.shop.param.PaymentTradeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 第三方支付交易记录表Mapper + * + * @author 科技小王子 + * @since 2022-12-09 13:59:38 + */ +public interface PaymentTradeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") PaymentTradeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") PaymentTradeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/RechargeOrderMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/RechargeOrderMapper.java new file mode 100644 index 0000000..c4ee775 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/RechargeOrderMapper.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.RechargeOrder; +import com.gxwebsoft.shop.param.RechargeOrderParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员充值订单表Mapper + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +public interface RechargeOrderMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") RechargeOrderParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") RechargeOrderParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/RechargeOrderPlanMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/RechargeOrderPlanMapper.java new file mode 100644 index 0000000..5330632 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/RechargeOrderPlanMapper.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.RechargeOrderPlan; +import com.gxwebsoft.shop.param.RechargeOrderPlanParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员充值订单套餐快照表Mapper + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +public interface RechargeOrderPlanMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") RechargeOrderPlanParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") RechargeOrderPlanParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/RechargePlanMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/RechargePlanMapper.java new file mode 100644 index 0000000..50b241f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/RechargePlanMapper.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.RechargePlan; +import com.gxwebsoft.shop.param.RechargePlanParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 会员充值套餐表Mapper + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +public interface RechargePlanMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") RechargePlanParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") RechargePlanParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserAddressMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserAddressMapper.java new file mode 100644 index 0000000..c2864e3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserAddressMapper.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.UserAddress; +import com.gxwebsoft.shop.param.UserAddressParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户收货地址表Mapper + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface UserAddressMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserAddressParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserAddressParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserBalanceLogMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserBalanceLogMapper.java new file mode 100644 index 0000000..0e01179 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserBalanceLogMapper.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.UserBalanceLog; +import com.gxwebsoft.shop.param.UserBalanceLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户余额变动明细表Mapper + * + * @author 科技小王子 + * @since 2023-04-21 15:59:09 + */ +public interface UserBalanceLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserBalanceLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserBalanceLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserCommentMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserCommentMapper.java new file mode 100644 index 0000000..41b5aab --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserCommentMapper.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.UserComment; +import com.gxwebsoft.shop.param.UserCommentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户评价记录表Mapper + * + * @author 科技小王子 + * @since 2023-07-06 13:55:16 + */ +public interface UserCommentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserCommentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserCommentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserCouponMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserCouponMapper.java new file mode 100644 index 0000000..3f29906 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserCouponMapper.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.UserCoupon; +import com.gxwebsoft.shop.param.UserCouponParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户优惠券记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface UserCouponMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserCouponParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserCouponParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserFeedbackMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserFeedbackMapper.java new file mode 100644 index 0000000..9a093c0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserFeedbackMapper.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.UserFeedback; +import com.gxwebsoft.shop.param.UserFeedbackParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 意见反馈记录表Mapper + * + * @author 科技小王子 + * @since 2023-07-16 22:24:55 + */ +public interface UserFeedbackMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserFeedbackParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserFeedbackParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserFollowMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserFollowMapper.java new file mode 100644 index 0000000..8ed7e5f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserFollowMapper.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.UserFollow; +import com.gxwebsoft.shop.param.UserFollowParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 关注记录表Mapper + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface UserFollowMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserFollowParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserFollowParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserGradeLogMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserGradeLogMapper.java new file mode 100644 index 0000000..a16c6a2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserGradeLogMapper.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.UserGradeLog; +import com.gxwebsoft.shop.param.UserGradeLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户会员等级变更记录表Mapper + * + * @author 科技小王子 + * @since 2023-06-20 16:33:06 + */ +public interface UserGradeLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserGradeLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserGradeLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserGradeMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserGradeMapper.java new file mode 100644 index 0000000..bac98d8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserGradeMapper.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.UserGrade; +import com.gxwebsoft.shop.param.UserGradeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户会员等级表Mapper + * + * @author 科技小王子 + * @since 2023-06-20 16:33:06 + */ +public interface UserGradeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserGradeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserGradeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserLikeMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserLikeMapper.java new file mode 100644 index 0000000..8b6bd23 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserLikeMapper.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.UserLike; +import com.gxwebsoft.shop.param.UserLikeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 点赞记录表Mapper + * + * @author 科技小王子 + * @since 2023-07-06 17:51:04 + */ +public interface UserLikeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserLikeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserLikeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserLookMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserLookMapper.java new file mode 100644 index 0000000..66065cc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserLookMapper.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.UserLook; +import com.gxwebsoft.shop.param.UserLookParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 访客记录表Mapper + * + * @author 科技小王子 + * @since 2023-07-13 23:10:38 + */ +public interface UserLookMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserLookParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserLookParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserOauthMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserOauthMapper.java new file mode 100644 index 0000000..56e86d0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserOauthMapper.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.mapper; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.param.UserOauthParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 第三方用户信息表Mapper + * + * @author 科技小王子 + * @since 2022-12-15 08:33:13 + */ +public interface UserOauthMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserOauthParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserOauthParam param); + + @InterceptorIgnore(tenantLine = "true") + List getOne(@Param("param") UserOauthParam param); + + @InterceptorIgnore(tenantLine = "true") + List getByOauthId(@Param("param") UserOauthParam param); + + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserPointsLogMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserPointsLogMapper.java new file mode 100644 index 0000000..c07ac82 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserPointsLogMapper.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.UserPointsLog; +import com.gxwebsoft.shop.param.UserPointsLogParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户积分变动明细表Mapper + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface UserPointsLogMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserPointsLogParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserPointsLogParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/UserRefereeMapper.java b/src/main/java/com/gxwebsoft/shop/mapper/UserRefereeMapper.java new file mode 100644 index 0000000..ca09702 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/UserRefereeMapper.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.UserReferee; +import com.gxwebsoft.shop.param.UserRefereeParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 用户推荐关系表Mapper + * + * @author 科技小王子 + * @since 2023-04-28 14:07:29 + */ +public interface UserRefereeMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") UserRefereeParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") UserRefereeParam param); + +} diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/CartMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/CartMapper.xml new file mode 100644 index 0000000..5f0bd18 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/CartMapper.xml @@ -0,0 +1,59 @@ + + + + + + + SELECT a.* + FROM shop_cart a + + + AND a.id = #{param.id} + + + AND a.goods_id = #{param.goodsId} + + + AND a.goods_sku_id LIKE CONCAT('%', #{param.goodsSkuId}, '%') + + + AND a.goods_num = #{param.goodsNum} + + + AND a.status = #{param.status} + + + AND a.user_id = #{param.userId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.deleted = #{param.deleted} + + + 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/CategoryMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/CategoryMapper.xml new file mode 100644 index 0000000..0073a4b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/CategoryMapper.xml @@ -0,0 +1,59 @@ + + + + + + + SELECT a.* + FROM shop_category a + + + AND a.category_id = #{param.categoryId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.user_id = #{param.userId} + + + AND a.shop_code = #{param.merchantCode} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/CommentMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/CommentMapper.xml new file mode 100644 index 0000000..e78cafe --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/CommentMapper.xml @@ -0,0 +1,68 @@ + + + + + + + SELECT a.* + FROM shop_comment a + + + AND a.comment_id = #{param.commentId} + + + AND a.score = #{param.score} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.is_picture = #{param.isPicture} + + + AND a.user_id = #{param.userId} + + + AND a.order_id = #{param.orderId} + + + AND a.goods_id = #{param.goodsId} + + + AND a.order_goods_id = #{param.orderGoodsId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/CouponMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/CouponMapper.xml new file mode 100644 index 0000000..a35abc5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/CouponMapper.xml @@ -0,0 +1,95 @@ + + + + + + + SELECT a.* + FROM shop_coupon a + + + AND a.coupon_id = #{param.couponId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.coupon_type = #{param.couponType} + + + AND a.reduce_price = #{param.reducePrice} + + + AND a.discount = #{param.discount} + + + AND a.min_price = #{param.minPrice} + + + AND a.expire_type = #{param.expireType} + + + AND a.expire_day = #{param.expireDay} + + + AND a.start_time = #{param.startTime} + + + AND a.end_time = #{param.endTime} + + + AND a.apply_range = #{param.applyRange} + + + AND a.apply_range_config LIKE CONCAT('%', #{param.applyRangeConfig}, '%') + + + AND a.total_num = #{param.totalNum} + + + AND a.receive_num = #{param.receiveNum} + + + AND a.describe LIKE CONCAT('%', #{param.describe}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/ExpressMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/ExpressMapper.xml new file mode 100644 index 0000000..46abc2a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/ExpressMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.* + FROM shop_express a + + + AND a.express_id = #{param.expressId} + + + AND a.express_name LIKE CONCAT('%', #{param.expressName}, '%') + + + AND a.kuaidi100_code LIKE CONCAT('%', #{param.kuaidi100Code}, '%') + + + AND a.kdniao_code LIKE CONCAT('%', #{param.kdniaoCode}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/GoodsMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/GoodsMapper.xml new file mode 100644 index 0000000..03aaa5b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/GoodsMapper.xml @@ -0,0 +1,168 @@ + + + + + + + SELECT a.*, + b.merchant_name,b.merchant_code, + c.title as categoryName,c.parent_id,c.category_id + FROM shop_goods a + LEFT JOIN shop_merchant b ON a.merchant_code = b.merchant_code + LEFT JOIN shop_category c ON a.category_id = c.category_id + + + AND a.goods_id = #{param.goodsId} + + + AND a.goods_name LIKE CONCAT('%', #{param.goodsName}, '%') + + + AND a.goods_code LIKE CONCAT('%', #{param.goodsCode}, '%') + + + AND a.goods_type = #{param.goodsType} + + + AND a.category_id = #{param.categoryId} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.video_url LIKE CONCAT('%', #{param.videoUrl}, '%') + + + AND a.selling_point LIKE CONCAT('%', #{param.sellingPoint}, '%') + + + AND a.spec_type = #{param.specType} + + + AND a.goods_price_min = #{param.goodsPriceMin} + + + AND a.goods_price_max = #{param.goodsPriceMax} + + + AND a.line_price_min = #{param.linePriceMin} + + + AND a.line_price_max = #{param.linePriceMax} + + + AND a.stock_total = #{param.stockTotal} + + + AND a.deduct_stock_type = #{param.deductStockType} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.sales_initial = #{param.salesInitial} + + + AND a.sales_actual = #{param.salesActual} + + + AND a.delivery_id = #{param.deliveryId} + + + AND a.is_points_gift = #{param.isPointsGift} + + + AND a.is_points_discount = #{param.isPointsDiscount} + + + AND a.is_alone_points_discount = #{param.isAlonePointsDiscount} + + + AND a.points_discount_config LIKE CONCAT('%', #{param.pointsDiscountConfig}, '%') + + + AND a.is_enable_grade = #{param.isEnableGrade} + + + AND a.is_alone_grade = #{param.isAloneGrade} + + + AND a.alone_grade_equity LIKE CONCAT('%', #{param.aloneGradeEquity}, '%') + + + AND a.is_hot = #{param.isHot} + + + AND a.unit LIKE CONCAT('%', #{param.unit}, '%') + + + AND a.attribute = #{param.attribute} + + + AND a.is_ind_dealer = #{param.isIndDealer} + + + AND a.dealer_money_type = #{param.dealerMoneyType} + + + AND a.first_money = #{param.firstMoney} + + + AND a.second_money = #{param.secondMoney} + + + AND a.third_money = #{param.thirdMoney} + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.merchant_code = #{param.merchantCode} + + + AND b.merchant_name = #{param.merchantName} + + + AND a.period = #{param.period} + + + AND a.gear = #{param.gear} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/GoodsServiceMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/GoodsServiceMapper.xml new file mode 100644 index 0000000..ae2f5da --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/GoodsServiceMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.* + FROM shop_goods_service a + + + AND a.service_id = #{param.serviceId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.summary LIKE CONCAT('%', #{param.summary}, '%') + + + AND a.is_default = #{param.isDefault} + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/MemberMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/MemberMapper.xml new file mode 100644 index 0000000..f285a73 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/MemberMapper.xml @@ -0,0 +1,61 @@ + + + + + + + SELECT a.user_id,a.member_id,a.create_time addTime, + b.* + FROM shop_member a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.member_id = #{param.memberId} + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.username = #{param.username} + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND b.phone = #{param.phone} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantClerkMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantClerkMapper.xml new file mode 100644 index 0000000..aaf3ec1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantClerkMapper.xml @@ -0,0 +1,46 @@ + + + + + + + SELECT a.*, + b.merchant_name,b.merchant_code + FROM shop_merchant_clerk a + LEFT JOIN shop_merchant b ON a.merchant_code = b.merchant_code + + + AND a.clerk_id = #{param.clerkId} + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.is_owner = #{param.isOwner} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantMapper.xml new file mode 100644 index 0000000..dd2532d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantMapper.xml @@ -0,0 +1,150 @@ + + + + + + + SELECT a.*, + b.username, b.nickname, b.phone, + c.grade_id,c.name as gradeName + FROM shop_merchant a + LEFT JOIN sys_user b ON a.merchant_owner = b.user_id + LEFT JOIN shop_user_grade c ON b.grade_id = c.grade_id + + + AND a.merchant_id = #{param.merchantId} + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.money = #{param.money} + + + AND a.freeze_money = #{param.freezeMoney} + + + AND a.total_money = #{param.totalMoney} + + + AND a.logo LIKE CONCAT('%', #{param.logo}, '%') + + + AND a.background LIKE CONCAT('%', #{param.background}, '%') + + + AND a.merchant_hours LIKE CONCAT('%', #{param.merchantHours}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.lng_and_lat LIKE CONCAT('%', #{param.lngAndLat}, '%') + + + AND a.geohash LIKE CONCAT('%', #{param.geohash}, '%') + + + AND a.summary LIKE CONCAT('%', #{param.summary}, '%') + + + AND a.pay_type = #{param.payType} + + + AND a.alipay_name LIKE CONCAT('%', #{param.alipayName}, '%') + + + AND a.alipay_account LIKE CONCAT('%', #{param.alipayAccount}, '%') + + + AND a.bank_name LIKE CONCAT('%', #{param.bankName}, '%') + + + AND a.bank_account LIKE CONCAT('%', #{param.bankAccount}, '%') + + + AND a.bank_card LIKE CONCAT('%', #{param.bankCard}, '%') + + + AND a.is_edit = #{param.isEdit} + + + AND a.is_check = #{param.isCheck} + + + AND a.merchant_owner = #{param.merchantOwner} + + + AND a.user_id = #{param.userId} + + + 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.customer_id = #{param.customerId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.username = #{param.username} + + + AND b.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND b.phone = #{param.phone} + + + AND a.tenant_id = #{param.tenantId} + + + AND c.grade_id = #{param.gradeId} + + + AND c.grade_id >= 7 + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantWithdrawMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantWithdrawMapper.xml new file mode 100644 index 0000000..168062a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/MerchantWithdrawMapper.xml @@ -0,0 +1,100 @@ + + + + + + + SELECT a.*, + b.merchant_code,b.merchant_name, + c.nickname,c.avatar,c.real_name + FROM shop_merchant_withdraw a + LEFT JOIN shop_merchant b ON a.merchant_code = b.merchant_code + LEFT JOIN sys_user c ON a.user_id = c.user_id + + + AND a.id = #{param.id} + + + AND a.withdraw_code = #{param.withdrawCode} + + + + AND a.user_id = #{param.userId} + + + AND a.money = #{param.money} + + + AND a.pay_type = #{param.payType} + + + AND a.alipay_name LIKE CONCAT('%', #{param.alipayName}, '%') + + + AND a.alipay_account LIKE CONCAT('%', #{param.alipayAccount}, '%') + + + AND a.bank_name LIKE CONCAT('%', #{param.bankName}, '%') + + + AND a.bank_account LIKE CONCAT('%', #{param.bankAccount}, '%') + + + AND a.bank_card LIKE CONCAT('%', #{param.bankCard}, '%') + + + AND a.apply_status = #{param.applyStatus} + + + AND a.audit_time = #{param.auditTime} + + + AND a.reject_reason LIKE CONCAT('%', #{param.rejectReason}, '%') + + + AND a.platform LIKE CONCAT('%', #{param.platform}, '%') + + + 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} + + + AND b.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND b.merchant_code = #{param.merchantCode} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderAddressMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderAddressMapper.xml new file mode 100644 index 0000000..211ca19 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderAddressMapper.xml @@ -0,0 +1,74 @@ + + + + + + + SELECT a.* + FROM shop_order_address a + + + AND a.order_address_id = #{param.orderAddressId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.province_id = #{param.provinceId} + + + AND a.city_id = #{param.cityId} + + + AND a.region_id = #{param.regionId} + + + AND a.detail LIKE CONCAT('%', #{param.detail}, '%') + + + AND a.order_id = #{param.orderId} + + + AND a.user_id = #{param.userId} + + + 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/mapper/xml/OrderGoodsMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderGoodsMapper.xml new file mode 100644 index 0000000..6a57e30 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderGoodsMapper.xml @@ -0,0 +1,219 @@ + + + + + + + SELECT a.*,b.nickname,c.order_status,c.pay_status,c.is_temporary,c.order_status,c.deleted,c.week,c.delivery_time as deliveryTime + FROM shop_order_goods a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN shop_order c ON a.order_id = c.order_id + + + AND a.order_goods_id = #{param.orderGoodsId} + + + AND a.goods_id = #{param.goodsId} + + + AND a.goods_name LIKE CONCAT('%', #{param.goodsName}, '%') + + + AND a.category_id LIKE CONCAT('%', #{param.categoryId}, '%') + + + AND a.temporary = #{param.temporary} + + + AND c.pay_status = #{param.payStatus} + + + AND a.image_id = #{param.imageId} + + + AND a.deduct_stock_type = #{param.deductStockType} + + + AND a.spec_type = #{param.specType} + + + AND a.goods_sku_id LIKE CONCAT('%', #{param.goodsSkuId}, '%') + + + AND a.goods_props LIKE CONCAT('%', #{param.goodsProps}, '%') + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.goods_no LIKE CONCAT('%', #{param.goodsNo}, '%') + + + AND a.goods_price = #{param.goodsPrice} + + + AND a.line_price = #{param.linePrice} + + + AND a.goods_weight LIKE CONCAT('%', #{param.goodsWeight}, '%') + + + AND a.is_user_grade = #{param.isUserGrade} + + + AND a.grade_ratio = #{param.gradeRatio} + + + AND a.grade_goods_price = #{param.gradeGoodsPrice} + + + AND a.grade_total_money = #{param.gradeTotalMoney} + + + AND a.coupon_money = #{param.couponMoney} + + + AND a.points_money = #{param.pointsMoney} + + + AND a.points_num = #{param.pointsNum} + + + AND a.points_bonus = #{param.pointsBonus} + + + AND a.total_num = #{param.totalNum} + + + AND a.total_num > 0 + + + AND a.total_price = #{param.totalPrice} + + + AND a.total_pay_price = #{param.totalPayPrice} + + + AND a.delivery_status = #{param.deliveryStatus} + + + AND c.delivery_time = #{param.deliveryTime} + + + AND a.delivery_num = #{param.deliveryNum} + + + AND a.is_ind_dealer = #{param.isIndDealer} + + + AND a.dealer_money_type = #{param.dealerMoneyType} + + + AND a.first_money = #{param.firstMoney} + + + AND a.second_money = #{param.secondMoney} + + + AND a.third_money = #{param.thirdMoney} + + + AND a.is_comment = #{param.isComment} + + + AND a.order_id = #{param.orderId} + + + AND a.user_id = #{param.userId} + + + AND a.goods_source_id = #{param.goodsSourceId} + + + 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 c.deleted = 0 + + + AND a.merchant_code LIKE CONCAT('%', #{param.merchantCode}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND c.delivery_time >= #{param.deliveryTimeStart} + + + AND c.delivery_time <= #{param.deliveryTimeEnd} + + + AND c.order_status = #{param.orderStatus} + + + AND a.gear = #{param.gear} + + + AND a.nickname LIKE CONCAT('%', #{param.nickname}, '%') + + + AND c.user_id IN (SELECT user_id FROM sys_user WHERE organization_id = #{param.organizationId}) + + + AND c.week = #{param.week} + + + AND ( + a.order_goods_id = #{param.keywords} + OR a.order_id = #{param.keywords} + OR b.nickname = #{param.keywords} + ) + + + + + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderMapper.xml new file mode 100644 index 0000000..b9174db --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderMapper.xml @@ -0,0 +1,224 @@ + + + + + + + SELECT a.*, + b.nickname,b.alias,b.username,b.user_id,b.avatar,b.phone,b.email, + c.equipment_name,c.equipment_code,c.equipment_category,c.equipment_avatar,c.battery_model,c.equipment_id, + d.merchant_name,d.merchant_code, + e.organization_id,e.organization_name + FROM shop_order a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN apps_equipment c ON a.equipment_id = c.equipment_id + LEFT JOIN shop_merchant d ON a.merchant_code = d.merchant_code + LEFT JOIN sys_organization e ON b.organization_id = e.organization_id + + + AND a.order_id = #{param.orderId} + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.total_price = #{param.totalPrice} + + + AND a.order_price = #{param.orderPrice} + + + AND a.coupon_id = #{param.couponId} + + + AND a.coupon_money = #{param.couponMoney} + + + AND a.points_money = #{param.pointsMoney} + + + AND a.points_num = #{param.pointsNum} + + + AND a.pay_price = #{param.payPrice} + + + AND a.update_price = #{param.updatePrice} + + + AND a.buyer_remark LIKE CONCAT('%', #{param.buyerRemark}, '%') + + + AND a.pay_type = #{param.payType} + + + AND a.pay_method LIKE CONCAT('%', #{param.payMethod}, '%') + + + AND a.pay_status = #{param.payStatus} + + + AND a.pay_time = #{param.payTime} + + + AND a.trade_id = #{param.tradeId} + + + AND a.delivery_type = #{param.deliveryType} + + + AND a.extract_shop_id = #{param.extractShopId} + + + AND a.extract_clerk_id = #{param.extractClerkId} + + + AND a.express_price = #{param.expressPrice} + + + AND a.express_id = #{param.expressId} + + + AND a.express_no LIKE CONCAT('%', #{param.expressNo}, '%') + + + AND a.delivery_status = #{param.deliveryStatus} + + + AND a.delivery_time = #{param.deliveryTime} + + + AND a.receipt_status = #{param.receiptStatus} + + + AND a.receipt_time = #{param.receiptTime} + + + AND a.order_status = #{param.orderStatus} + + + AND a.rent_order_id = #{param.rentOrderId} + + + AND a.points_bonus = #{param.pointsBonus} + + + AND a.merchant_remark LIKE CONCAT('%', #{param.merchantRemark}, '%') + + + AND a.is_settled = #{param.isSettled} + + + AND a.transaction_id LIKE CONCAT('%', #{param.transactionId}, '%') + + + AND a.is_comment = #{param.isComment} + + + AND a.order_source = #{param.orderSource} + + + AND a.order_source_id = #{param.orderSourceId} + + + AND a.order_source_data LIKE CONCAT('%', #{param.orderSourceData}, '%') + + + AND a.platform LIKE CONCAT('%', #{param.platform}, '%') + + + AND a.is_renew = #{param.isRenew} + + + AND a.week = #{param.week} + + + AND a.is_temporary = #{param.isTemporary} + + + AND a.user_id = #{param.userId} + + + AND a.user_id IN + + #{item} + + + + AND a.shop_id = #{param.shopId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND a.merchant_name LIKE CONCAT('%', #{param.merchantName}, '%') + + + AND a.merchant_code = #{param.merchantCode} + + + AND ( + a.order_no = #{param.keywords} + OR a.order_id = #{param.keywords} + OR a.user_id = #{param.keywords} + OR a.comments LIKE CONCAT('%', #{param.keywords}, '%') + OR b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone = #{param.keywords} + OR c.equipment_code = #{param.keywords} + OR d.merchant_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + + + + + + + UPDATE shop_order SET pay_status = #{param.payStatus},pay_method = #{param.payMethod},receipt_amount = #{param.receiptAmount},pay_time = #{param.payTime},trade_id = #{param.tradeId},subject = #{param.subject},expiration_time = #{param.expirationTime} WHERE order_id = #{param.orderId} + + + + + + UPDATE shop_order SET is_settled = #{param.isSettled},settled_time = #{param.settledTime} WHERE order_id = #{param.orderId} + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderRefundAddressMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderRefundAddressMapper.xml new file mode 100644 index 0000000..48436c7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderRefundAddressMapper.xml @@ -0,0 +1,74 @@ + + + + + + + SELECT a.* + FROM shop_order_refund_address a + + + AND a.id = #{param.id} + + + AND a.order_refund_id = #{param.orderRefundId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.province_id = #{param.provinceId} + + + AND a.city_id = #{param.cityId} + + + AND a.region_id = #{param.regionId} + + + AND a.detail LIKE CONCAT('%', #{param.detail}, '%') + + + AND a.user_id = #{param.userId} + + + 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/mapper/xml/OrderRefundMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderRefundMapper.xml new file mode 100644 index 0000000..e578fea --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderRefundMapper.xml @@ -0,0 +1,95 @@ + + + + + + + SELECT a.*,b.nickname,b.avatar,c.equipment_code,d.merchant_name + FROM shop_order_refund a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN apps_equipment c ON a.order_id = c.order_id + LEFT JOIN shop_merchant d ON a.merchant_code = d.merchant_code + + + AND a.order_refund_id = #{param.orderRefundId} + + + AND a.order_id = #{param.orderId} + + + AND a.order_goods_id = #{param.orderGoodsId} + + + AND a.user_id = #{param.userId} + + + AND a.type = #{param.type} + + + AND a.apply_desc LIKE CONCAT('%', #{param.applyDesc}, '%') + + + AND a.audit_status = #{param.auditStatus} + + + AND a.refuse_desc LIKE CONCAT('%', #{param.refuseDesc}, '%') + + + AND a.refund_money = #{param.refundMoney} + + + AND a.is_user_send = #{param.isUserSend} + + + AND a.send_time = #{param.sendTime} + + + AND a.express_id LIKE CONCAT('%', #{param.expressId}, '%') + + + AND a.express_no LIKE CONCAT('%', #{param.expressNo}, '%') + + + AND a.is_receipt = #{param.isReceipt} + + + AND a.shop_id = #{param.shopId} + + + 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/mapper/xml/OrderRenewMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderRenewMapper.xml new file mode 100644 index 0000000..795becc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/OrderRenewMapper.xml @@ -0,0 +1,68 @@ + + + + + + + SELECT a.* + FROM shop_order_renew a + + + AND a.order_renew_id = #{param.orderRenewId} + + + AND a.order_id = #{param.orderId} + + + AND a.order_goods_id = #{param.orderGoodsId} + + + AND a.user_id = #{param.userId} + + + AND a.type = #{param.type} + + + AND a.renew_money = #{param.renewMoney} + + + AND a.shop_id = #{param.shopId} + + + 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/mapper/xml/PaymentMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/PaymentMapper.xml new file mode 100644 index 0000000..89f1778 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/PaymentMapper.xml @@ -0,0 +1,62 @@ + + + + + + + SELECT a.* + FROM shop_payment a + + + AND a.payment_id = #{param.paymentId} + + + AND a.method = #{param.method} + + + AND a.payment_code LIKE CONCAT('%', #{param.paymentCode}, '%') + + + AND a.config LIKE CONCAT('%', #{param.config}, '%') + + + AND a.is_default = #{param.isDefault} + + + 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/mapper/xml/PaymentTemplateMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/PaymentTemplateMapper.xml new file mode 100644 index 0000000..df1fb84 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/PaymentTemplateMapper.xml @@ -0,0 +1,68 @@ + + + + + + + SELECT a.* + FROM shop_payment_template a + + + AND a.template_id = #{param.templateId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.method LIKE CONCAT('%', #{param.method}, '%') + + + AND a.config LIKE CONCAT('%', #{param.config}, '%') + + + AND a.remarks LIKE CONCAT('%', #{param.remarks}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + 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/mapper/xml/PaymentTradeMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/PaymentTradeMapper.xml new file mode 100644 index 0000000..11fb792 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/PaymentTradeMapper.xml @@ -0,0 +1,83 @@ + + + + + + + SELECT a.* + FROM shop_payment_trade a + + + AND a.trade_id = #{param.tradeId} + + + AND a.out_trade_no LIKE CONCAT('%', #{param.outTradeNo}, '%') + + + AND a.client LIKE CONCAT('%', #{param.client}, '%') + + + AND a.pay_method LIKE CONCAT('%', #{param.payMethod}, '%') + + + AND a.order_type = #{param.orderType} + + + AND a.order_id = #{param.orderId} + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.trade_no LIKE CONCAT('%', #{param.tradeNo}, '%') + + + AND a.prepay_id LIKE CONCAT('%', #{param.prepayId}, '%') + + + AND a.trade_state = #{param.tradeState} + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + 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/mapper/xml/RechargeOrderMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/RechargeOrderMapper.xml new file mode 100644 index 0000000..9b69f72 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/RechargeOrderMapper.xml @@ -0,0 +1,101 @@ + + + + + + + SELECT a.*,b.phone,b.nickname,b.user_id,b.avatar,c.organization_id,c.organization_name + FROM shop_recharge_order a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN sys_organization c ON a.organization_id = c.organization_id + + + AND a.order_id = #{param.orderId} + + + AND a.order_no LIKE CONCAT('%', #{param.orderNo}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.recharge_type = #{param.rechargeType} + + + AND a.plan_id = #{param.planId} + + + AND a.pay_price = #{param.payPrice} + + + AND a.gift_money = #{param.giftMoney} + + + AND a.actual_money = #{param.actualMoney} + + + AND a.pay_method LIKE CONCAT('%', #{param.payMethod}, '%') + + + AND a.pay_status = #{param.payStatus} + + + AND a.pay_time = #{param.payTime} + + + AND a.trade_id = #{param.tradeId} + + + AND a.platform LIKE CONCAT('%', #{param.platform}, '%') + + + AND a.shop_id = #{param.shopId} + + + 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 c.organization_id = #{param.organizationId} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.alias LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/RechargeOrderPlanMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/RechargeOrderPlanMapper.xml new file mode 100644 index 0000000..99f185a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/RechargeOrderPlanMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.* + FROM shop_recharge_order_plan a + + + AND a.order_plan_id = #{param.orderPlanId} + + + AND a.order_id = #{param.orderId} + + + AND a.plan_id = #{param.planId} + + + AND a.plan_name LIKE CONCAT('%', #{param.planName}, '%') + + + AND a.money = #{param.money} + + + AND a.gift_money = #{param.giftMoney} + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + 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/mapper/xml/RechargePlanMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/RechargePlanMapper.xml new file mode 100644 index 0000000..b408b92 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/RechargePlanMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM shop_recharge_plan a + + + AND a.plan_id = #{param.planId} + + + AND a.plan_name LIKE CONCAT('%', #{param.planName}, '%') + + + AND a.money = #{param.money} + + + AND a.gift_money = #{param.giftMoney} + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + 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/mapper/xml/UserAddressMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserAddressMapper.xml new file mode 100644 index 0000000..6d27ce6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserAddressMapper.xml @@ -0,0 +1,68 @@ + + + + + + + SELECT a.* + FROM shop_user_address a + + + AND a.address_id = #{param.addressId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.phone LIKE CONCAT('%', #{param.phone}, '%') + + + AND a.province_id = #{param.provinceId} + + + AND a.city_id = #{param.cityId} + + + AND a.region_id = #{param.regionId} + + + AND a.detail LIKE CONCAT('%', #{param.detail}, '%') + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserBalanceLogMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserBalanceLogMapper.xml new file mode 100644 index 0000000..8be7e4f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserBalanceLogMapper.xml @@ -0,0 +1,84 @@ + + + + + + + SELECT a.*, + b.nickname,b.avatar,b.phone + FROM shop_user_balance_log a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.log_id = #{param.logId} + + + AND a.user_id = #{param.userId} + + + AND a.scene = #{param.scene} + + + AND a.scene IN + + #{item} + + + + AND a.money = #{param.money} + + + AND a.balance = #{param.balance} + + + AND a.describe LIKE CONCAT('%', #{param.describe}, '%') + + + 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} + + + AND ( + a.user_id = #{param.keywords} + OR b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.alias LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone = #{param.keywords} + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserCommentMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserCommentMapper.xml new file mode 100644 index 0000000..0a2b3cc --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserCommentMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.*, + b.nickname as toUserNickname, b.avatar as toUserAvatar,b.fans as toUserFans,b.province as toUserProvince,b.city as toUserCity,b.likes as toUserLikes, + c.nickname,c.avatar,c.fans,c.province,c.city,c.likes, + d.nickname as replyNickname,d.avatar as replyAvatar,d.fans as replyFans + FROM shop_user_comment a + LEFT JOIN sys_user b ON a.to_user_id = b.user_id + LEFT JOIN sys_user c ON a.user_id = c.user_id + LEFT JOIN sys_user d ON a.reply_user_id = d.user_id + + + AND a.comment_id = #{param.commentId} + + + AND a.score = #{param.score} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.is_picture = #{param.isPicture} + + + AND a.user_id = #{param.userId} + + + AND a.to_user_id = #{param.toUserId} + + + 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/mapper/xml/UserCouponMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserCouponMapper.xml new file mode 100644 index 0000000..59fad13 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserCouponMapper.xml @@ -0,0 +1,92 @@ + + + + + + + SELECT a.* + FROM shop_user_coupon a + + + AND a.user_coupon_id = #{param.userCouponId} + + + AND a.coupon_id = #{param.couponId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.coupon_type = #{param.couponType} + + + AND a.reduce_price = #{param.reducePrice} + + + AND a.discount = #{param.discount} + + + AND a.min_price = #{param.minPrice} + + + AND a.expire_type = #{param.expireType} + + + AND a.expire_day = #{param.expireDay} + + + AND a.start_time = #{param.startTime} + + + AND a.end_time = #{param.endTime} + + + AND a.apply_range = #{param.applyRange} + + + AND a.apply_range_config LIKE CONCAT('%', #{param.applyRangeConfig}, '%') + + + AND a.is_expire = #{param.isExpire} + + + AND a.is_use = #{param.isUse} + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserFeedbackMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserFeedbackMapper.xml new file mode 100644 index 0000000..df3e8bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserFeedbackMapper.xml @@ -0,0 +1,66 @@ + + + + + + + SELECT a.*, + b.nickname,b.avatar,b.phone + FROM shop_user_feedback a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.content LIKE CONCAT('%', #{param.content}, '%') + + + AND a.images LIKE CONCAT('%', #{param.images}, '%') + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + a.user_id = #{param.keywords} + OR b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.alias LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone = #{param.keywords} + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserFollowMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserFollowMapper.xml new file mode 100644 index 0000000..c9717e1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserFollowMapper.xml @@ -0,0 +1,60 @@ + + + + + + + SELECT a.*, + b.nickname as shopNickname,b.avatar as shopAvatar, + c.nickname,c.avatar + FROM shop_user_follow a + LEFT JOIN sys_user b ON a.shop_id = b.user_id + LEFT JOIN sys_user c ON a.user_id = c.user_id + + + AND a.log_id = #{param.logId} + + + AND a.user_id = #{param.userId} + + + AND a.shop_id = #{param.shopId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserGradeLogMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserGradeLogMapper.xml new file mode 100644 index 0000000..405a097 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserGradeLogMapper.xml @@ -0,0 +1,65 @@ + + + + + + + SELECT a.* + FROM shop_user_grade_log a + + + AND a.log_id = #{param.logId} + + + AND a.user_id = #{param.userId} + + + AND a.old_grade_id = #{param.oldGradeId} + + + AND a.new_grade_id = #{param.newGradeId} + + + AND a.change_type = #{param.changeType} + + + 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/mapper/xml/UserGradeMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserGradeMapper.xml new file mode 100644 index 0000000..c8827e4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserGradeMapper.xml @@ -0,0 +1,69 @@ + + + + + + + SELECT a.* + FROM shop_user_grade a + + + AND a.grade_id = #{param.gradeId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.weight = #{param.weight} + + + AND a.upgrade LIKE CONCAT('%', #{param.upgrade}, '%') + + + AND a.equity LIKE CONCAT('%', #{param.equity}, '%') + + + AND a.commission LIKE CONCAT('%', #{param.commission}, '%') + + + 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} + + + AND (a.name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserLikeMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserLikeMapper.xml new file mode 100644 index 0000000..fdff5ad --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserLikeMapper.xml @@ -0,0 +1,73 @@ + + + + + + + SELECT a.*, + b.nickname as toUserNickname, b.avatar as toUserAvatar, + c.nickname,c.avatar + FROM shop_user_like a + LEFT JOIN sys_user b ON a.to_user_id = b.user_id + LEFT JOIN sys_user c ON a.user_id = c.user_id + + + AND a.log_id = #{param.logId} + + + AND a.to_user_id = #{param.toUserId} + + + AND a.user_id = #{param.userId} + + + 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} + + + + AND a.status = 0 + AND (a.user_id = #{param.loginUserId}) + + + + AND a.status = 0 + AND (a.to_user_id = #{param.loginUserId}) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserLookMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserLookMapper.xml new file mode 100644 index 0000000..9a55247 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserLookMapper.xml @@ -0,0 +1,57 @@ + + + + + + + SELECT a.*, + b.nickname,b.avatar + FROM shop_user_look a + LEFT JOIN sys_user b ON a.user_id = b.user_id + + + AND a.log_id = #{param.logId} + + + AND a.to_user_id = #{param.toUserId} + + + AND a.user_id = #{param.userId} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + AND a.status = 0 + AND (a.to_user_id = #{param.loginUserId}) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserOauthMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserOauthMapper.xml new file mode 100644 index 0000000..005ba55 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserOauthMapper.xml @@ -0,0 +1,75 @@ + + + + + + + SELECT a.* + FROM shop_user_oauth a + + + AND a.id = #{param.id} + + + AND a.user_id = #{param.userId} + + + AND a.oauth_type LIKE CONCAT('%', #{param.oauthType}, '%') + + + AND a.oauth_id LIKE CONCAT('%', #{param.oauthId}, '%') + + + AND a.unionid LIKE CONCAT('%', #{param.unionid}, '%') + + + AND a.tenant_id LIKE CONCAT('%', #{param.tenantId}, '%') + + + 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/mapper/xml/UserPointsLogMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserPointsLogMapper.xml new file mode 100644 index 0000000..8b4cd8b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserPointsLogMapper.xml @@ -0,0 +1,59 @@ + + + + + + + SELECT a.* + FROM shop_user_points_log a + + + AND a.log_id = #{param.logId} + + + AND a.user_id = #{param.userId} + + + AND a.value = #{param.value} + + + AND a.describe LIKE CONCAT('%', #{param.describe}, '%') + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/mapper/xml/UserRefereeMapper.xml b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserRefereeMapper.xml new file mode 100644 index 0000000..68e0e37 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/mapper/xml/UserRefereeMapper.xml @@ -0,0 +1,78 @@ + + + + + + + SELECT a.*, + b.nickname,b.avatar,b.sex,b.grade_id,b.offline, + c.nickname as dealerName,c.avatar as dealerAvatar,c.phone as dealerPhone, + d.name as gradeName + FROM shop_user_referee a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN sys_user c ON a.dealer_id = c.user_id + LEFT JOIN shop_user_grade d ON b.grade_id = d.grade_id + + + AND a.id = #{param.id} + + + AND a.dealer_id = #{param.dealerId} + + + AND a.user_id = #{param.userId} + + + AND a.level = #{param.level} + + + AND b.sex = #{param.sex} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND b.grade_id = #{param.gradeId} + + + AND b.offline = #{param.offline} + + + AND b.grade_id >= #{param.gradeStart} + + + AND b.grade_id <= #{param.gradeEnd} + + + AND ( + a.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.nickname = #{param.keywords} + OR c.nickname LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/shop/param/CartParam.java b/src/main/java/com/gxwebsoft/shop/param/CartParam.java new file mode 100644 index 0000000..9165881 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/CartParam.java @@ -0,0 +1,107 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.math.BigDecimal; + +/** + * 购物车记录表查询参数 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CartParam对象", description = "购物车记录表查询参数") +public class CartParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "商品sku唯一标识") + private String goodsSkuId; + + @ApiModelProperty(value = "商品数量") + @QueryField(type = QueryType.EQ) + private Integer goodsNum; + + @ApiModelProperty(value = "商品价格") + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "状态, 0正常, 1冻结") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "是否临时报餐") + private Integer isTemporary; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "商品总数量") + @TableField(exist = false) + private Integer totalNum; + + @ApiModelProperty(value = "订单总金额") + @TableField(exist = false) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "发货时间") + @TableField(exist = false) + private String deliveryTime; + + @ApiModelProperty(value = "代报餐方式") + @TableField(exist = false) + private Integer agentUserId; + + @ApiModelProperty(value = "代取餐人") + @TableField(exist = false) + private Integer dealerId; + + @ApiModelProperty(value = "是否按餐段查询") + @TableField(exist = false) + private Boolean isPeriod; + + @ApiModelProperty(value = "查询是否已经下过单") + @QueryField(type = QueryType.EQ) + private Boolean hasTemporary; + + @ApiModelProperty(value = "当前餐段") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/CategoryParam.java b/src/main/java/com/gxwebsoft/shop/param/CategoryParam.java new file mode 100644 index 0000000..9819625 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/CategoryParam.java @@ -0,0 +1,63 @@ +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; + +/** + * 商品分类表查询参数 + * + * @author 科技小王子 + * @since 2022-11-22 17:45:37 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CategoryParam对象", description = "商品分类表查询参数") +public class CategoryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "分类名称") + private String title; + + @ApiModelProperty(value = "上级分类ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "分类图片") + @QueryField(type = QueryType.EQ) + private Integer image; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属商户") + @QueryField(type = QueryType.EQ) + private String merchantCode; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/CommentParam.java b/src/main/java/com/gxwebsoft/shop/param/CommentParam.java new file mode 100644 index 0000000..5e1dea5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/CommentParam.java @@ -0,0 +1,71 @@ +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; + +/** + * 商品评价记录表查询参数 + * + * @author 科技小王子 + * @since 2022-11-23 21:18:56 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CommentParam对象", description = "商品评价记录表查询参数") +public class CommentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评价ID") + @QueryField(type = QueryType.EQ) + private Integer commentId; + + @ApiModelProperty(value = "评分 (10好评 20中评 30差评)") + @QueryField(type = QueryType.EQ) + private Integer score; + + @ApiModelProperty(value = "评价内容") + private String content; + + @ApiModelProperty(value = "是否为图片评价") + @QueryField(type = QueryType.EQ) + private Integer isPicture; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "订单商品ID") + @QueryField(type = QueryType.EQ) + private Integer orderGoodsId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/CouponParam.java b/src/main/java/com/gxwebsoft/shop/param/CouponParam.java new file mode 100644 index 0000000..4a5431e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/CouponParam.java @@ -0,0 +1,107 @@ +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 2022-11-28 18:26:05 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "CouponParam对象", description = "优惠券记录表查询参数") +public class CouponParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "优惠券ID") + @QueryField(type = QueryType.EQ) + private Integer couponId; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券类型(10满减券 20折扣券)") + @QueryField(type = QueryType.EQ) + private Integer couponType; + + @ApiModelProperty(value = "满减券-减免金额") + @QueryField(type = QueryType.EQ) + private BigDecimal reducePrice; + + @ApiModelProperty(value = "折扣券-折扣率(0-100)") + @QueryField(type = QueryType.EQ) + private Integer discount; + + @ApiModelProperty(value = "最低消费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal minPrice; + + @ApiModelProperty(value = "到期类型(10领取后生效 20固定时间)") + @QueryField(type = QueryType.EQ) + private Integer expireType; + + @ApiModelProperty(value = "领取后生效-有效天数") + @QueryField(type = QueryType.EQ) + private Integer expireDay; + + @ApiModelProperty(value = "固定时间-开始时间") + @QueryField(type = QueryType.EQ) + private Integer startTime; + + @ApiModelProperty(value = "固定时间-结束时间") + @QueryField(type = QueryType.EQ) + private Integer endTime; + + @ApiModelProperty(value = "适用范围(10全部商品 20指定商品 30排除商品)") + @QueryField(type = QueryType.EQ) + private Integer applyRange; + + @ApiModelProperty(value = "适用范围配置(json格式)") + private String applyRangeConfig; + + @ApiModelProperty(value = "发放总数量(-1为不限制)") + @QueryField(type = QueryType.EQ) + private Integer totalNum; + + @ApiModelProperty(value = "已领取数量") + @QueryField(type = QueryType.EQ) + private Integer receiveNum; + + @ApiModelProperty(value = "优惠券描述") + private String describe; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/ExpressParam.java b/src/main/java/com/gxwebsoft/shop/param/ExpressParam.java new file mode 100644 index 0000000..480914d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/ExpressParam.java @@ -0,0 +1,61 @@ +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; + +/** + * 物流公司记录表查询参数 + * + * @author 科技小王子 + * @since 2022-11-22 00:21:07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "ExpressParam对象", description = "物流公司记录表查询参数") +public class ExpressParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "物流公司ID") + @QueryField(type = QueryType.EQ) + private Integer expressId; + + @ApiModelProperty(value = "物流公司名称") + private String expressName; + + @ApiModelProperty(value = "物流公司编码 (快递100)") + private String kuaidi100Code; + + @ApiModelProperty(value = "物流公司编码 (快递鸟)") + private String kdniaoCode; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/GoodsParam.java b/src/main/java/com/gxwebsoft/shop/param/GoodsParam.java new file mode 100644 index 0000000..8c50d55 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/GoodsParam.java @@ -0,0 +1,200 @@ +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; + +import java.math.BigDecimal; + +/** + * 商品记录表查询参数 + * + * @author 科技小王子 + * @since 2022-11-23 12:47:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "GoodsParam对象", description = "商品记录表查询参数") +public class GoodsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品编码") + private String goodsCode; + + @ApiModelProperty(value = "商品规格(10单规格 20多规格)") + @QueryField(type = QueryType.EQ) + private Integer goodsType; + + @ApiModelProperty(value = "商品分类ID") + @QueryField(type = QueryType.EQ) + private Integer categoryId; + + @ApiModelProperty(value = "商品封面图") + private String image; + + @ApiModelProperty(value = "上传的文件") + private String files; + + @ApiModelProperty(value = "主图视频路径") + private String videoUrl; + + @ApiModelProperty(value = "商品卖点") + private String sellingPoint; + + @ApiModelProperty(value = "商品规格(10单规格 20多规格)") + @QueryField(type = QueryType.EQ) + private Integer specType; + + @ApiModelProperty(value = "商品价格(最低)") + @QueryField(type = QueryType.EQ) + private BigDecimal goodsPriceMin; + + @ApiModelProperty(value = "商品价格(最高)") + @QueryField(type = QueryType.EQ) + private BigDecimal goodsPriceMax; + + @ApiModelProperty(value = "划线价格(最低)") + @QueryField(type = QueryType.EQ) + private BigDecimal linePriceMin; + + @ApiModelProperty(value = "划线价格(最高)") + @QueryField(type = QueryType.EQ) + private BigDecimal linePriceMax; + + @ApiModelProperty(value = "库存总量(包含所有sku)") + @QueryField(type = QueryType.EQ) + private Integer stockTotal; + + @ApiModelProperty(value = "库存计算方式(10下单减库存 20付款减库存)") + @QueryField(type = QueryType.EQ) + private Integer deductStockType; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "初始销量") + @QueryField(type = QueryType.EQ) + private Integer salesInitial; + + @ApiModelProperty(value = "实际销量") + @QueryField(type = QueryType.EQ) + private Integer salesActual; + + @ApiModelProperty(value = "配送方式") + @QueryField(type = QueryType.EQ) + private Integer deliveryType; + + @ApiModelProperty(value = "配送模板ID") + @QueryField(type = QueryType.EQ) + private Integer deliveryId; + + @ApiModelProperty(value = "是否开启积分赠送(1开启 0关闭)") + @QueryField(type = QueryType.EQ) + private Integer isPointsGift; + + @ApiModelProperty(value = "是否允许使用积分抵扣(1允许 0不允许)") + @QueryField(type = QueryType.EQ) + private Integer isPointsDiscount; + + @ApiModelProperty(value = "积分抵扣设置(0默认抵扣 1单独设置抵扣)") + @QueryField(type = QueryType.EQ) + private Integer isAlonePointsDiscount; + + @ApiModelProperty(value = "单独设置积分抵扣的配置") + private String pointsDiscountConfig; + + @ApiModelProperty(value = "是否开启会员折扣(1开启 0关闭)") + @QueryField(type = QueryType.EQ) + private Integer isEnableGrade; + + @ApiModelProperty(value = "会员折扣设置(0默认等级折扣 1单独设置折扣)") + @QueryField(type = QueryType.EQ) + private Integer isAloneGrade; + + @ApiModelProperty(value = "单独设置折扣的配置") + private String aloneGradeEquity; + + @ApiModelProperty(value = "是否推荐") + @QueryField(type = QueryType.EQ) + private Integer isHot; + + @ApiModelProperty(value = "规格单位") + private String unit; + + @ApiModelProperty(value = "餐段") + private String period; + + @ApiModelProperty(value = "档口") + private Integer gear; + + @ApiModelProperty(value = "商品重量") + private Double goodsWeight; + + @ApiModelProperty(value = "商品优惠属性: 0无 1限时特惠 2特惠专区") + @QueryField(type = QueryType.EQ) + private Integer attribute; + + @ApiModelProperty(value = "是否开启单独分销(0关闭 1开启)") + @QueryField(type = QueryType.EQ) + private Integer isIndDealer; + + @ApiModelProperty(value = "是否开启限购(0关闭 1开启)") + @QueryField(type = QueryType.EQ) + private Integer purchaseLimit; + + @ApiModelProperty(value = "分销佣金类型(10百分比 20固定金额)") + @QueryField(type = QueryType.EQ) + private Integer dealerMoneyType; + + @ApiModelProperty(value = "分销佣金(一级)") + @QueryField(type = QueryType.EQ) + private BigDecimal firstMoney; + + @ApiModelProperty(value = "分销佣金(二级)") + @QueryField(type = QueryType.EQ) + private BigDecimal secondMoney; + + @ApiModelProperty(value = "分销佣金(三级)") + @QueryField(type = QueryType.EQ) + private BigDecimal thirdMoney; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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 = "商户编号") + @QueryField(type = QueryType.EQ) + private String merchantCode; + + @ApiModelProperty(value = "商户名称") + @QueryField(type = QueryType.EQ) + private String merchantName; +} diff --git a/src/main/java/com/gxwebsoft/shop/param/GoodsServiceParam.java b/src/main/java/com/gxwebsoft/shop/param/GoodsServiceParam.java new file mode 100644 index 0000000..abaad85 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/GoodsServiceParam.java @@ -0,0 +1,62 @@ +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; + +/** + * 商品服务与承诺记录表查询参数 + * + * @author 科技小王子 + * @since 2022-11-23 21:57:50 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "GoodsServiceParam对象", description = "商品服务与承诺记录表查询参数") +public class GoodsServiceParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商品服务ID") + @QueryField(type = QueryType.EQ) + private Integer serviceId; + + @ApiModelProperty(value = "服务名称") + private String name; + + @ApiModelProperty(value = "概述") + private String summary; + + @ApiModelProperty(value = "是否默认(新增商品时)") + @QueryField(type = QueryType.EQ) + private Integer isDefault; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/MemberParam.java b/src/main/java/com/gxwebsoft/shop/param/MemberParam.java new file mode 100644 index 0000000..1552009 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/MemberParam.java @@ -0,0 +1,61 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 商城会员查询参数 + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MemberParam对象", description = "商城会员查询参数") +public class MemberParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer memberId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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("登录账号") + @QueryField(type = QueryType.EQ) + private String username; + + @ApiModelProperty("用户昵称") + @QueryField(type = QueryType.LIKE) + private String nickname; + + @ApiModelProperty("手机号码") + @QueryField(type = QueryType.EQ) + private String phone; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/MerchantClerkParam.java b/src/main/java/com/gxwebsoft/shop/param/MerchantClerkParam.java new file mode 100644 index 0000000..7a7e1b4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/MerchantClerkParam.java @@ -0,0 +1,44 @@ +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; + +/** + * 商家门店店员表查询参数 + * + * @author 科技小王子 + * @since 2022-11-30 16:32:25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MerchantClerkParam对象", description = "商家门店店员表查询参数") +public class MerchantClerkParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商户人员ID") + @QueryField(type = QueryType.EQ) + private Integer clerkId; + + @ApiModelProperty(value = "关联商户编号") + private String merchantCode; + + @ApiModelProperty(value = "关联商户编号") + @QueryField(type = QueryType.LIKE) + private String merchantName; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否为商户主") + @QueryField(type = QueryType.EQ) + private Integer isOwner; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/MerchantParam.java b/src/main/java/com/gxwebsoft/shop/param/MerchantParam.java new file mode 100644 index 0000000..4752c75 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/MerchantParam.java @@ -0,0 +1,163 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 2022-11-30 15:10:54 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MerchantParam对象", description = "商户管理查询参数") +public class MerchantParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "商户ID") + @QueryField(type = QueryType.EQ) + private Integer merchantId; + + @ApiModelProperty(value = "商户名称") + private String merchantName; + + @ApiModelProperty(value = "商户编码") + private String merchantCode; + + @ApiModelProperty(value = "商户类型") + private String merchantType; + + @ApiModelProperty(value = "当前可提现金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "已冻结金额") + @QueryField(type = QueryType.EQ) + private BigDecimal freezeMoney; + + @ApiModelProperty(value = "累积提现金额") + @QueryField(type = QueryType.EQ) + private BigDecimal totalMoney; + + @ApiModelProperty(value = "商户logo") + private String logo; + + @ApiModelProperty(value = "商户背景图片") + private String background; + + @ApiModelProperty(value = "营业时间") + private String merchantHours; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "详细地址") + private String address; + + @ApiModelProperty(value = "商户详情") + private String content; + + @ApiModelProperty(value = "商户坐标经纬度") + private String lngAndLat; + + @ApiModelProperty(value = "geohash") + private String geohash; + + @ApiModelProperty(value = "商户简介") + private String summary; + + @ApiModelProperty(value = "打款方式 (10微信 20支付宝 30银行卡)") + @QueryField(type = QueryType.EQ) + private Integer payType; + + @ApiModelProperty(value = "支付宝姓名") + private String alipayName; + + @ApiModelProperty(value = "支付宝账号") + private String alipayAccount; + + @ApiModelProperty(value = "开户行名称") + private String bankName; + + @ApiModelProperty(value = "银行开户名") + private String bankAccount; + + @ApiModelProperty(value = "银行卡号") + private String bankCard; + + @ApiModelProperty(value = "是否可编辑 0 商户可编辑 1 管理员可编辑") + @QueryField(type = QueryType.EQ) + private Integer isEdit; + + @ApiModelProperty(value = "是否支持自提核销(0否 1支持)") + @QueryField(type = QueryType.EQ) + private Integer isCheck; + + @ApiModelProperty(value = "商户主") + @QueryField(type = QueryType.EQ) + private Integer merchantOwner; + + @ApiModelProperty(value = "门店联系电话") + @QueryField(type = QueryType.EQ) + private String merchantPhone; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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 = "客户ID") + @QueryField(type = QueryType.EQ) + private Integer customerId; + + @ApiModelProperty("登录账号") + @TableField(exist = false) + private String username; + + @ApiModelProperty("用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "联系电话") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "租户ID") + private Integer tenantId; + + @ApiModelProperty(value = "会元等级ID") + @QueryField(type = QueryType.EQ) + private Integer gradeId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/MerchantWithdrawParam.java b/src/main/java/com/gxwebsoft/shop/param/MerchantWithdrawParam.java new file mode 100644 index 0000000..fb878cf --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/MerchantWithdrawParam.java @@ -0,0 +1,100 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; +import java.util.Date; + +/** + * 商户提现记录查询参数 + * + * @author 科技小王子 + * @since 2022-12-02 00:41:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "MerchantWithdrawParam对象", description = "商户提现记录查询参数") +public class MerchantWithdrawParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "提现单号") + @QueryField(type = QueryType.EQ) + private String withdrawCode; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "提现金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "打款方式 (10微信 20支付宝 30银行卡)") + @QueryField(type = QueryType.EQ) + private Integer payType; + + @ApiModelProperty(value = "支付宝姓名") + private String alipayName; + + @ApiModelProperty(value = "支付宝账号") + private String alipayAccount; + + @ApiModelProperty(value = "开户行名称") + private String bankName; + + @ApiModelProperty(value = "银行开户名") + private String bankAccount; + + @ApiModelProperty(value = "银行卡号") + private String bankCard; + + @ApiModelProperty(value = "申请状态 (10待审核 20审核通过 30驳回 40已打款)") + @QueryField(type = QueryType.EQ) + private Integer applyStatus; + + @ApiModelProperty(value = "审核时间") + @QueryField(type = QueryType.EQ) + private Integer auditTime; + + @ApiModelProperty(value = "驳回原因") + private String rejectReason; + + @ApiModelProperty(value = "来源客户端(APP、H5、小程序等)") + private String platform; + + @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; + + @ApiModelProperty(value = "商户名称") + @QueryField(type = QueryType.LIKE) + private String merchantName; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/OrderAddressParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderAddressParam.java new file mode 100644 index 0000000..07c426f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/OrderAddressParam.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; + +/** + * 订单收货地址记录表查询参数 + * + * @author 科技小王子 + * @since 2022-12-02 21:21:10 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OrderAddressParam对象", description = "订单收货地址记录表查询参数") +public class OrderAddressParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "地址ID") + @QueryField(type = QueryType.EQ) + private Integer orderAddressId; + + @ApiModelProperty(value = "收货人姓名") + private String name; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "省份ID") + @QueryField(type = QueryType.EQ) + private Integer provinceId; + + @ApiModelProperty(value = "城市ID") + @QueryField(type = QueryType.EQ) + private Integer cityId; + + @ApiModelProperty(value = "区/县ID") + @QueryField(type = QueryType.EQ) + private Integer regionId; + + @ApiModelProperty(value = "详细地址") + private String detail; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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/param/OrderGoodsParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderGoodsParam.java new file mode 100644 index 0000000..4742555 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/OrderGoodsParam.java @@ -0,0 +1,228 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.math.BigDecimal; + +/** + * 订单商品记录表查询参数 + * + * @author 科技小王子 + * @since 2022-12-09 17:15:31 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OrderGoodsParam对象", description = "订单商品记录表查询参数") +public class OrderGoodsParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单商品ID") + @QueryField(type = QueryType.EQ) + private Integer orderGoodsId; + + @ApiModelProperty(value = "商品分类") + private Integer categoryId; + + @ApiModelProperty(value = "商品ID") + @QueryField(type = QueryType.EQ) + private Integer goodsId; + + @ApiModelProperty(value = "商品名称") + private String goodsName; + + @ApiModelProperty(value = "商品封面图ID") + @QueryField(type = QueryType.EQ) + private Integer imageId; + + @ApiModelProperty(value = "库存计算方式(10下单减库存 20付款减库存)") + @QueryField(type = QueryType.EQ) + private Integer deductStockType; + + @ApiModelProperty(value = "规格类型(10单规格 20多规格)") + @QueryField(type = QueryType.EQ) + private Integer specType; + + @ApiModelProperty(value = "商品sku唯一标识") + private String goodsSkuId; + + @ApiModelProperty(value = "SKU的规格属性(json格式)") + private String goodsProps; + + @ApiModelProperty(value = "商品详情") + private String content; + + @ApiModelProperty(value = "商品编码") + private String goodsNo; + + @ApiModelProperty(value = "商品价格(单价)") + @QueryField(type = QueryType.EQ) + private BigDecimal goodsPrice; + + @ApiModelProperty(value = "商品划线价") + @QueryField(type = QueryType.EQ) + private BigDecimal linePrice; + + @ApiModelProperty(value = "商品重量(Kg)") + private Double goodsWeight; + + @ApiModelProperty(value = "所属档口") + private Integer gear; + + @ApiModelProperty(value = "是否存在会员等级折扣") + @QueryField(type = QueryType.EQ) + private Integer isUserGrade; + + @ApiModelProperty(value = "会员折扣比例(0-10)") + @QueryField(type = QueryType.EQ) + private Integer gradeRatio; + + @ApiModelProperty(value = "会员折扣的商品单价") + @QueryField(type = QueryType.EQ) + private BigDecimal gradeGoodsPrice; + + @ApiModelProperty(value = "会员折扣的总额差") + @QueryField(type = QueryType.EQ) + private BigDecimal gradeTotalMoney; + + @ApiModelProperty(value = "优惠券折扣金额") + @QueryField(type = QueryType.EQ) + private BigDecimal couponMoney; + + @ApiModelProperty(value = "积分金额") + @QueryField(type = QueryType.EQ) + private BigDecimal pointsMoney; + + @ApiModelProperty(value = "积分抵扣数量") + @QueryField(type = QueryType.EQ) + private Integer pointsNum; + + @ApiModelProperty(value = "赠送的积分数量") + @QueryField(type = QueryType.EQ) + private Integer pointsBonus; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "购买数量") + @QueryField(type = QueryType.EQ) + private Integer totalNum; + + @ApiModelProperty(value = "商品总价(数量×单价)") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "实际付款价(折扣和优惠后)") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPayPrice; + + @ApiModelProperty(value = "发货状态(10未发货 20已发货 30部分发货)") + @QueryField(type = QueryType.EQ) + private Integer deliveryStatus; + + @ApiModelProperty(value = "已发货数量") + @QueryField(type = QueryType.EQ) + private Integer deliveryNum; + + @ApiModelProperty(value = "发货时间") + @TableField(exist = false) + private String deliveryTime; + + @ApiModelProperty(value = "星期几") + @QueryField(type = QueryType.EQ) + private Integer week; + + @ApiModelProperty(value = "是否开启单独分销(0关闭 1开启)") + @QueryField(type = QueryType.EQ) + private Integer isIndDealer; + + @ApiModelProperty(value = "是否临时报餐") + @QueryField(type = QueryType.EQ) + private Integer temporary; + + @ApiModelProperty(value = "分销佣金类型(10百分比 20固定金额)") + @QueryField(type = QueryType.EQ) + private Integer dealerMoneyType; + + @ApiModelProperty(value = "分销佣金(一级)") + @QueryField(type = QueryType.EQ) + private BigDecimal firstMoney; + + @ApiModelProperty(value = "分销佣金(二级)") + @QueryField(type = QueryType.EQ) + private BigDecimal secondMoney; + + @ApiModelProperty(value = "分销佣金(三级)") + @QueryField(type = QueryType.EQ) + private BigDecimal thirdMoney; + + @ApiModelProperty(value = "是否已评价(0否 1是)") + @QueryField(type = QueryType.EQ) + private Integer isComment; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "来源记录ID") + @QueryField(type = QueryType.EQ) + private Integer goodsSourceId; + + @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; + + @ApiModelProperty(value = "用户昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "订购份数是否大于0") + @TableField(exist = false) + private Boolean hasNum; + + @ApiModelProperty(value = "订单状态") + @TableField(exist = false) + private Integer orderStatus; + + @QueryField(value = "delivery_time", type = QueryType.GE) + @TableField(exist = false) + @ApiModelProperty("报餐时间起始值") + private String deliveryTimeStart; + + @QueryField(value = "delivery_time", type = QueryType.LE) + @TableField(exist = false) + @ApiModelProperty("报餐时间结束值") + private String deliveryTimeEnd; + + @ApiModelProperty(value = "按部门查询") + @TableField(exist = false) + private Integer organizationId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/OrderParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderParam.java new file mode 100644 index 0000000..0f8e13e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/OrderParam.java @@ -0,0 +1,244 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.Set; + +/** + * 订单记录表查询参数 + * + * @author WebSoft + * @since 2022-11-16 11:25:58 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OrderParam对象", description = "订单记录表查询参数") +public class OrderParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "商品总金额(不含优惠折扣)") + @QueryField(type = QueryType.EQ) + private BigDecimal totalPrice; + + @ApiModelProperty(value = "订单金额(含优惠折扣)") + @QueryField(type = QueryType.EQ) + private BigDecimal orderPrice; + + @ApiModelProperty(value = "优惠券ID") + @QueryField(type = QueryType.EQ) + private Integer couponId; + + @ApiModelProperty(value = "优惠券抵扣金额") + @QueryField(type = QueryType.EQ) + private BigDecimal couponMoney; + + @ApiModelProperty(value = "积分抵扣金额") + @QueryField(type = QueryType.EQ) + private BigDecimal pointsMoney; + + @ApiModelProperty(value = "积分抵扣数量") + @QueryField(type = QueryType.EQ) + private Integer pointsNum; + + @ApiModelProperty(value = "实际付款金额(包含运费)") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "后台修改的订单金额(差价)") + @QueryField(type = QueryType.EQ) + private BigDecimal updatePrice; + + @ApiModelProperty(value = "买家留言") + private String buyerRemark; + + @ApiModelProperty(value = "支付方式(废弃)") + @QueryField(type = QueryType.EQ) + private Integer payType; + + @ApiModelProperty(value = "支付方式(余额/微信/支付宝)") + private String payMethod; + + @ApiModelProperty(value = "付款状态(10未付款 20已付款)") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "付款时间") + @QueryField(type = QueryType.EQ) + private Date payTime; + + @ApiModelProperty("购买月份数量") + @QueryField(type = QueryType.EQ) + private Integer month; + + @ApiModelProperty(value = "星期几") + @QueryField(type = QueryType.EQ) + private Integer week; + + @ApiModelProperty(value = "第三方交易记录ID") + @QueryField(type = QueryType.EQ) + private Integer tradeId; + + @ApiModelProperty(value = "配送方式(10快递配送 20门店自提)") + @QueryField(type = QueryType.EQ) + private Integer deliveryType; + + @ApiModelProperty(value = "自提门店ID") + @QueryField(type = QueryType.EQ) + private Integer extractShopId; + + @ApiModelProperty(value = "核销店员ID") + @QueryField(type = QueryType.EQ) + private Integer extractClerkId; + + @ApiModelProperty(value = "运费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal expressPrice; + + @ApiModelProperty(value = "物流公司ID (废弃)") + @QueryField(type = QueryType.EQ) + private Integer expressId; + + @ApiModelProperty(value = "物流单号 (废弃)") + private String expressNo; + + @ApiModelProperty(value = "发货状态(10未发货 20已发货 30部分发货)") + @QueryField(type = QueryType.EQ) + private Integer deliveryStatus; + + @ApiModelProperty(value = "发货时间") + @QueryField(type = QueryType.EQ) + private String deliveryTime; + + @ApiModelProperty(value = "收货状态(10未收货 20已收货)") + @QueryField(type = QueryType.EQ) + private Integer receiptStatus; + + @ApiModelProperty(value = "收货时间") + @QueryField(type = QueryType.EQ) + private Date receiptTime; + + @ApiModelProperty(value = "订单状态(10进行中 20取消 21待取消 30已完成)") + @QueryField(type = QueryType.EQ) + private Integer orderStatus; + + @ApiModelProperty(value = "赠送的积分数量") + @QueryField(type = QueryType.EQ) + private Integer pointsBonus; + + @ApiModelProperty(value = "商家备注") + private String merchantRemark; + + @ApiModelProperty(value = "订单是否已结算(0未结算 1已结算)") + @QueryField(type = QueryType.EQ) + private Integer isSettled; + + @ApiModelProperty(value = "续租订单原单号") + private Integer rentOrderId; + + @ApiModelProperty(value = "微信支付交易号(废弃)") + private String transactionId; + + @ApiModelProperty(value = "是否已评价(0否 1是)") + @QueryField(type = QueryType.EQ) + private Integer isComment; + + @ApiModelProperty(value = "订单来源(10普通订单 20砍价订单 30秒杀订单)") + @QueryField(type = QueryType.EQ) + private Integer orderSource; + + @ApiModelProperty(value = "来源记录ID") + @QueryField(type = QueryType.EQ) + private Integer orderSourceId; + + @ApiModelProperty(value = "来源记录的参数 (json格式)") + private String orderSourceData; + + @ApiModelProperty(value = "来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "是否续费订单") + private Integer isRenew; + + @ApiModelProperty(value = "是否临时报餐") + private Integer isTemporary; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @ApiModelProperty(value = "商品ID") + private Integer goodsId; + + @ApiModelProperty(value = "设备ID") + private Integer equipmentId; + + @ApiModelProperty(value = "商户编号") + @QueryField(type = QueryType.EQ) + private String merchantCode; + + @ApiModelProperty(value = "商户名称") + @QueryField(type = QueryType.LIKE) + private String merchantName; + + @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 = "是否按代报餐查询") + @TableField(exist = false) + private Boolean agent; + + @ApiModelProperty(value = "租户ID") + @QueryField(type = QueryType.EQ) + private Integer tenantId; + + @ApiModelProperty("搜索关键字") + @TableField(exist = false) + private String keywords; + + @ApiModelProperty(value = "签名") + @TableField(exist = false) + private String sign; + + @ApiModelProperty(value = "是否查询订单商品") + @TableField(exist = false) + private Boolean showGoodsList; + + @ApiModelProperty(value = "用户id集合") + @TableField(exist = false) + private Set userIds; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/OrderRefundAddressParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderRefundAddressParam.java new file mode 100644 index 0000000..f9cfe77 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/OrderRefundAddressParam.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; + +/** + * 售后单退货地址记录表查询参数 + * + * @author 科技小王子 + * @since 2023-05-18 13:09:51 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OrderRefundAddressParam对象", description = "售后单退货地址记录表查询参数") +public class OrderRefundAddressParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "售后单ID") + @QueryField(type = QueryType.EQ) + private Integer orderRefundId; + + @ApiModelProperty(value = "收货人姓名") + private String name; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "所在省份ID") + @QueryField(type = QueryType.EQ) + private Integer provinceId; + + @ApiModelProperty(value = "所在城市ID") + @QueryField(type = QueryType.EQ) + private Integer cityId; + + @ApiModelProperty(value = "所在区/县ID") + @QueryField(type = QueryType.EQ) + private Integer regionId; + + @ApiModelProperty(value = "详细地址") + private String detail; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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/param/OrderRefundParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderRefundParam.java new file mode 100644 index 0000000..35bf31c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/OrderRefundParam.java @@ -0,0 +1,101 @@ +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-05-18 13:09:51 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OrderRefundParam对象", description = "售后单记录表查询参数") +public class OrderRefundParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "售后单ID") + @QueryField(type = QueryType.EQ) + private Integer orderRefundId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单商品ID") + @QueryField(type = QueryType.EQ) + private Integer orderGoodsId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "售后类型(10退货退款 20换货)") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "用户申请原因(说明)") + private String applyDesc; + + @ApiModelProperty(value = "商家审核状态(0待审核 10已同意 20已拒绝)") + @QueryField(type = QueryType.EQ) + private Integer auditStatus; + + @ApiModelProperty(value = "商家拒绝原因(说明)") + private String refuseDesc; + + @ApiModelProperty(value = "实际退款金额") + @QueryField(type = QueryType.EQ) + private BigDecimal refundMoney; + + @ApiModelProperty(value = "用户是否发货(0未发货 1已发货)") + @QueryField(type = QueryType.EQ) + private Integer isUserSend; + + @ApiModelProperty(value = "用户发货时间") + @QueryField(type = QueryType.EQ) + private Integer sendTime; + + @ApiModelProperty(value = "用户发货物流公司ID") + private String expressId; + + @ApiModelProperty(value = "用户发货物流单号") + private String expressNo; + + @ApiModelProperty(value = "商家收货状态(0未收货 1已收货)") + @QueryField(type = QueryType.EQ) + private Integer isReceipt; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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/param/OrderRenewParam.java b/src/main/java/com/gxwebsoft/shop/param/OrderRenewParam.java new file mode 100644 index 0000000..1c99574 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/OrderRenewParam.java @@ -0,0 +1,73 @@ +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-04-13 10:34:35 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "OrderRenewParam对象", description = "续费订单记录表查询参数") +public class OrderRenewParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "售后单ID") + @QueryField(type = QueryType.EQ) + private Integer orderRenewId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单商品ID") + @QueryField(type = QueryType.EQ) + private Integer orderGoodsId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "类型(10续费订单)") + @QueryField(type = QueryType.EQ) + private Integer type; + + @ApiModelProperty(value = "实际续费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal renewMoney; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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/param/PaymentParam.java b/src/main/java/com/gxwebsoft/shop/param/PaymentParam.java new file mode 100644 index 0000000..d3cca62 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/PaymentParam.java @@ -0,0 +1,64 @@ +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; + +/** + * 商城支付方式记录表查询参数 + * + * @author 科技小王子 + * @since 2022-12-15 19:11:07 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "PaymentParam对象", description = "商城支付方式记录表查询参数") +public class PaymentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "支付方式ID") + @QueryField(type = QueryType.EQ) + private Integer paymentId; + + @ApiModelProperty(value = "支付方式(微信、支付宝、余额)") + @QueryField(type = QueryType.EQ) + private String method; + + @ApiModelProperty(value = "编码") + private String paymentCode; + + @ApiModelProperty(value = "支付配置(json格式)") + private String config; + + @ApiModelProperty(value = "是否为默认支付方式") + @QueryField(type = QueryType.EQ) + private Integer isDefault; + + @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; + + @ApiModelProperty(value = "租户ID") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/PaymentTemplateParam.java b/src/main/java/com/gxwebsoft/shop/param/PaymentTemplateParam.java new file mode 100644 index 0000000..45ff883 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/PaymentTemplateParam.java @@ -0,0 +1,67 @@ +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; + +/** + * 商城支付模板记录表查询参数 + * + * @author 科技小王子 + * @since 2022-12-09 13:59:38 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "PaymentTemplateParam对象", description = "商城支付模板记录表查询参数") +public class PaymentTemplateParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "支付模板ID") + @QueryField(type = QueryType.EQ) + private Integer templateId; + + @ApiModelProperty(value = "支付模板名称") + private String name; + + @ApiModelProperty(value = "支付方式(微信、支付宝、余额)") + private String method; + + @ApiModelProperty(value = "支付配置(json格式)") + private String config; + + @ApiModelProperty(value = "管理员备注") + private String remarks; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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/param/PaymentTradeParam.java b/src/main/java/com/gxwebsoft/shop/param/PaymentTradeParam.java new file mode 100644 index 0000000..12a9f0e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/PaymentTradeParam.java @@ -0,0 +1,85 @@ +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; + +/** + * 第三方支付交易记录表查询参数 + * + * @author 科技小王子 + * @since 2022-12-09 13:59:38 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "PaymentTradeParam对象", description = "第三方支付交易记录表查询参数") +public class PaymentTradeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "交易记录ID") + @QueryField(type = QueryType.EQ) + private Integer tradeId; + + @ApiModelProperty(value = "交易订单号(全局唯一)") + private String outTradeNo; + + @ApiModelProperty(value = "发起客户端(H5、小程序、APP)") + private String client; + + @ApiModelProperty(value = "支付方式(微信、支付宝)") + private String payMethod; + + @ApiModelProperty(value = "订单类型(10商城订单 100余额充值订单)") + @QueryField(type = QueryType.EQ) + private Integer orderType; + + @ApiModelProperty(value = "订单ID(商城订单、充值订单)") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "商城订单号(商城订单、充值订单)") + private String orderNo; + + @ApiModelProperty(value = "第三方交易流水号") + private String tradeNo; + + @ApiModelProperty(value = "预支付交易会话ID(微信支付)") + private String prepayId; + + @ApiModelProperty(value = "交易状态") + @QueryField(type = QueryType.EQ) + private Integer tradeState; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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/param/RechargeOrderParam.java b/src/main/java/com/gxwebsoft/shop/param/RechargeOrderParam.java new file mode 100644 index 0000000..2674017 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/RechargeOrderParam.java @@ -0,0 +1,114 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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-04-20 20:36:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "RechargeOrderParam对象", description = "会员充值订单表查询参数") +public class RechargeOrderParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "订单号") + private String orderNo; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "充值方式(10自定义金额 20套餐充值)") + @QueryField(type = QueryType.EQ) + private Integer rechargeType; + + @ApiModelProperty(value = "充值套餐ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "用户支付金额") + @QueryField(type = QueryType.EQ) + private BigDecimal payPrice; + + @ApiModelProperty(value = "赠送金额") + @QueryField(type = QueryType.EQ) + private BigDecimal giftMoney; + + @ApiModelProperty(value = "实际到账金额") + @QueryField(type = QueryType.EQ) + private BigDecimal actualMoney; + + @ApiModelProperty(value = "支付方式(微信/支付宝)") + private String payMethod; + + @ApiModelProperty(value = "支付状态(10待支付 20已支付)") + @QueryField(type = QueryType.EQ) + private Integer payStatus; + + @ApiModelProperty(value = "付款时间") + @QueryField(type = QueryType.EQ) + private Integer payTime; + + @ApiModelProperty(value = "第三方交易记录ID") + @QueryField(type = QueryType.EQ) + private Integer tradeId; + + @ApiModelProperty(value = "来源客户端 (APP、H5、小程序等)") + private String platform; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "机构ID") + private Integer organizationId; + + @ApiModelProperty(value = "部门名称") + @TableField(exist = false) + private String organizationName; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/RechargeOrderPlanParam.java b/src/main/java/com/gxwebsoft/shop/param/RechargeOrderPlanParam.java new file mode 100644 index 0000000..51ab9a7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/RechargeOrderPlanParam.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-04-20 20:36:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "RechargeOrderPlanParam对象", description = "会员充值订单套餐快照表查询参数") +public class RechargeOrderPlanParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer orderPlanId; + + @ApiModelProperty(value = "订单ID") + @QueryField(type = QueryType.EQ) + private Integer orderId; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "方案名称") + private String planName; + + @ApiModelProperty(value = "充值金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "赠送金额") + @QueryField(type = QueryType.EQ) + private BigDecimal giftMoney; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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/param/RechargePlanParam.java b/src/main/java/com/gxwebsoft/shop/param/RechargePlanParam.java new file mode 100644 index 0000000..0bb9b25 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/RechargePlanParam.java @@ -0,0 +1,68 @@ +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-04-20 20:36:24 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "RechargePlanParam对象", description = "会员充值套餐表查询参数") +public class RechargePlanParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer planId; + + @ApiModelProperty(value = "套餐名称") + private String planName; + + @ApiModelProperty(value = "充值金额") + @QueryField(type = QueryType.EQ) + private BigDecimal money; + + @ApiModelProperty(value = "赠送金额") + @QueryField(type = QueryType.EQ) + private BigDecimal giftMoney; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "所属门店ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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/param/UserAddressParam.java b/src/main/java/com/gxwebsoft/shop/param/UserAddressParam.java new file mode 100644 index 0000000..252b940 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserAddressParam.java @@ -0,0 +1,69 @@ +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; + +/** + * 用户收货地址表查询参数 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserAddressParam对象", description = "用户收货地址表查询参数") +public class UserAddressParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer addressId; + + @ApiModelProperty(value = "收货人姓名") + private String name; + + @ApiModelProperty(value = "联系电话") + private String phone; + + @ApiModelProperty(value = "省份ID") + @QueryField(type = QueryType.EQ) + private Integer provinceId; + + @ApiModelProperty(value = "城市ID") + @QueryField(type = QueryType.EQ) + private Integer cityId; + + @ApiModelProperty(value = "区/县ID") + @QueryField(type = QueryType.EQ) + private Integer regionId; + + @ApiModelProperty(value = "详细地址") + private String detail; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserBalanceLogParam.java b/src/main/java/com/gxwebsoft/shop/param/UserBalanceLogParam.java new file mode 100644 index 0000000..456e6e9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserBalanceLogParam.java @@ -0,0 +1,77 @@ +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-04-21 15:59:09 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserBalanceLogParam对象", description = "用户余额变动明细表查询参数") +public class UserBalanceLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "余额变动场景(10用户充值 20用户消费 30管理员操作 40订单退款)") + @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 describe; + + @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; + + @ApiModelProperty(value = "昵称") + private String nickname; + + @ApiModelProperty(value = "余额变动场景筛选") + private String sceneMultiple; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserCommentParam.java b/src/main/java/com/gxwebsoft/shop/param/UserCommentParam.java new file mode 100644 index 0000000..60be4df --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserCommentParam.java @@ -0,0 +1,79 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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; + +/** + * 用户评价记录表查询参数 + * + * @author 科技小王子 + * @since 2023-07-06 13:55:16 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserCommentParam对象", description = "用户评价记录表查询参数") +public class UserCommentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "评价ID") + @QueryField(type = QueryType.EQ) + private Integer commentId; + + @ApiModelProperty(value = "评分 (10好评 20中评 30差评)") + @QueryField(type = QueryType.EQ) + private Integer score; + + @ApiModelProperty(value = "评价内容") + private String content; + + @ApiModelProperty(value = "是否为图片评价") + @QueryField(type = QueryType.EQ) + private Integer isPicture; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "被评价者ID") + @QueryField(type = QueryType.EQ) + private Integer toUserId; + + @ApiModelProperty(value = "回复的评论ID") + @TableField(exist = false) + private Integer replyCommentId; + + @ApiModelProperty(value = "回复者ID") + @TableField(exist = false) + private Integer replyUserId; + + @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; + + @ApiModelProperty(value = "当前登录用户ID") + @TableField(exist = false) + private Integer loginUserId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserCouponParam.java b/src/main/java/com/gxwebsoft/shop/param/UserCouponParam.java new file mode 100644 index 0000000..e0ad943 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserCouponParam.java @@ -0,0 +1,104 @@ +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 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserCouponParam对象", description = "用户优惠券记录表查询参数") +public class UserCouponParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer userCouponId; + + @ApiModelProperty(value = "优惠券ID") + @QueryField(type = QueryType.EQ) + private Integer couponId; + + @ApiModelProperty(value = "优惠券名称") + private String name; + + @ApiModelProperty(value = "优惠券类型(10满减券 20折扣券)") + @QueryField(type = QueryType.EQ) + private Integer couponType; + + @ApiModelProperty(value = "满减券-减免金额") + @QueryField(type = QueryType.EQ) + private BigDecimal reducePrice; + + @ApiModelProperty(value = "折扣券-折扣率(0-100)") + @QueryField(type = QueryType.EQ) + private Integer discount; + + @ApiModelProperty(value = "最低消费金额") + @QueryField(type = QueryType.EQ) + private BigDecimal minPrice; + + @ApiModelProperty(value = "到期类型(10领取后生效 20固定时间)") + @QueryField(type = QueryType.EQ) + private Integer expireType; + + @ApiModelProperty(value = "领取后生效-有效天数") + @QueryField(type = QueryType.EQ) + private Integer expireDay; + + @ApiModelProperty(value = "有效期开始时间") + @QueryField(type = QueryType.EQ) + private Integer startTime; + + @ApiModelProperty(value = "有效期结束时间") + @QueryField(type = QueryType.EQ) + private Integer endTime; + + @ApiModelProperty(value = "适用范围(10全部商品 20指定商品)") + @QueryField(type = QueryType.EQ) + private Integer applyRange; + + @ApiModelProperty(value = "适用范围配置(json格式)") + private String applyRangeConfig; + + @ApiModelProperty(value = "是否过期(0未过期 1已过期)") + @QueryField(type = QueryType.EQ) + private Integer isExpire; + + @ApiModelProperty(value = "是否已使用(0未使用 1已使用)") + @QueryField(type = QueryType.EQ) + private Integer isUse; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserFeedbackParam.java b/src/main/java/com/gxwebsoft/shop/param/UserFeedbackParam.java new file mode 100644 index 0000000..8cc35ec --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserFeedbackParam.java @@ -0,0 +1,54 @@ +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; + +/** + * 意见反馈记录表查询参数 + * + * @author 科技小王子 + * @since 2023-07-16 22:24:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserFeedbackParam对象", description = "意见反馈记录表查询参数") +public class UserFeedbackParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "内容") + private String content; + + @ApiModelProperty(value = "反馈图片") + private String images; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserFollowParam.java b/src/main/java/com/gxwebsoft/shop/param/UserFollowParam.java new file mode 100644 index 0000000..76de479 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserFollowParam.java @@ -0,0 +1,59 @@ +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; + +/** + * 关注记录表查询参数 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserFollowParam对象", description = "关注记录表查询参数") +public class UserFollowParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "商铺ID") + @QueryField(type = QueryType.EQ) + private Integer shopId; + + @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 = "当期登录用户ID") + @QueryField(type = QueryType.EQ) + private Integer loginUserId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserGradeLogParam.java b/src/main/java/com/gxwebsoft/shop/param/UserGradeLogParam.java new file mode 100644 index 0000000..c812a09 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserGradeLogParam.java @@ -0,0 +1,66 @@ +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; + +/** + * 用户会员等级变更记录表查询参数 + * + * @author 科技小王子 + * @since 2023-06-20 16:33:06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserGradeLogParam对象", description = "用户会员等级变更记录表查询参数") +public class UserGradeLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "变更前的等级ID") + @QueryField(type = QueryType.EQ) + private Integer oldGradeId; + + @ApiModelProperty(value = "变更后的等级ID") + @QueryField(type = QueryType.EQ) + private Integer newGradeId; + + @ApiModelProperty(value = "变更类型(10后台管理员设置 20自动升级)") + @QueryField(type = QueryType.EQ) + private Integer changeType; + + @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/param/UserGradeParam.java b/src/main/java/com/gxwebsoft/shop/param/UserGradeParam.java new file mode 100644 index 0000000..42dcb80 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserGradeParam.java @@ -0,0 +1,63 @@ +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; + +/** + * 用户会员等级表查询参数 + * + * @author 科技小王子 + * @since 2023-06-20 16:33:06 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserGradeParam对象", description = "用户会员等级表查询参数") +public class UserGradeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "等级ID") + @QueryField(type = QueryType.EQ) + private Integer gradeId; + + @ApiModelProperty(value = "等级名称") + private String name; + + @ApiModelProperty(value = "等级权重(1-9999)") + @QueryField(type = QueryType.EQ) + private Integer weight; + + @ApiModelProperty(value = "升级条件") + private String upgrade; + + @ApiModelProperty(value = "等级权益(折扣率0-100)") + private String equity; + + @ApiModelProperty(value = "佣金比率") + private String commission; + + @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/param/UserLikeParam.java b/src/main/java/com/gxwebsoft/shop/param/UserLikeParam.java new file mode 100644 index 0000000..e668924 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserLikeParam.java @@ -0,0 +1,62 @@ +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 2023-07-06 17:51:03 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserLikeParam对象", description = "点赞记录表查询参数") +public class UserLikeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "点赞对象ID") + @QueryField(type = QueryType.EQ) + private Integer toUserId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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; + + @ApiModelProperty(value = "登录用户ID") + @QueryField(type = QueryType.EQ) + private Integer loginUserId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserLookParam.java b/src/main/java/com/gxwebsoft/shop/param/UserLookParam.java new file mode 100644 index 0000000..a4e72e0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserLookParam.java @@ -0,0 +1,52 @@ +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 2023-07-13 23:10:38 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserLookParam对象", description = "访客记录表查询参数") +public class UserLookParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "点赞对象ID") + @QueryField(type = QueryType.EQ) + private Integer toUserId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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 = "登录用户ID") + @QueryField(type = QueryType.EQ) + private Integer loginUserId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserOauthParam.java b/src/main/java/com/gxwebsoft/shop/param/UserOauthParam.java new file mode 100644 index 0000000..02c441d --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserOauthParam.java @@ -0,0 +1,63 @@ +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; + +/** + * 第三方用户信息表查询参数 + * + * @author 科技小王子 + * @since 2022-12-15 08:33:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserOauthParam对象", description = "第三方用户信息表查询参数") +public class UserOauthParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "第三方登陆类型(MP-WEIXIN)") + private String oauthType; + + @ApiModelProperty(value = "第三方用户唯一标识 (uid openid)") + private String oauthId; + + @ApiModelProperty(value = "微信unionID") + private String unionid; + + @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; + + @ApiModelProperty(value = "租户ID") + private Integer tenantId; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserPointsLogParam.java b/src/main/java/com/gxwebsoft/shop/param/UserPointsLogParam.java new file mode 100644 index 0000000..bc4e843 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserPointsLogParam.java @@ -0,0 +1,58 @@ +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; + +/** + * 用户积分变动明细表查询参数 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserPointsLogParam对象", description = "用户积分变动明细表查询参数") +public class UserPointsLogParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer logId; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "变动数量") + @QueryField(type = QueryType.EQ) + private Integer value; + + @ApiModelProperty(value = "描述/说明") + private String describe; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/shop/param/UserRefereeParam.java b/src/main/java/com/gxwebsoft/shop/param/UserRefereeParam.java new file mode 100644 index 0000000..adfb251 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/param/UserRefereeParam.java @@ -0,0 +1,80 @@ +package com.gxwebsoft.shop.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 2023-04-28 14:07:29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "UserRefereeParam对象", description = "用户推荐关系表查询参数") +public class UserRefereeParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "主键ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "推荐人ID") + @QueryField(type = QueryType.EQ) + private Integer dealerId; + + @ApiModelProperty(value = "用户id(被推荐人)") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "推荐关系层级(1,2,3)") + @QueryField(type = QueryType.EQ) + private Integer level; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "被推荐人昵称") + @QueryField(type = QueryType.LIKE) + private String nickname; + + @ApiModelProperty(value = "推荐人昵称") + @QueryField(type = QueryType.LIKE) + private String dealerName; + + @ApiModelProperty(value = "性别") + @QueryField(type = QueryType.EQ) + private Integer sex; + + @ApiModelProperty(value = "下级的会员等级") + @QueryField(type = QueryType.EQ) + private Integer gradeId; + + @ApiModelProperty(value = "是否线下会员") + @QueryField(type = QueryType.EQ) + private Integer offline; + + @QueryField(value = "grade_id", type = QueryType.GE) + @TableField(exist = false) + @ApiModelProperty("会员等级起始值") + private String gradeStart; + + @QueryField(value = "grade_id", type = QueryType.LE) + @TableField(exist = false) + @ApiModelProperty("会员等级结束值") + private String gradeEnd; + + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/CartService.java b/src/main/java/com/gxwebsoft/shop/service/CartService.java new file mode 100644 index 0000000..6aa40c3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/CartService.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.Cart; +import com.gxwebsoft.shop.param.CartParam; + +import java.util.List; + +/** + * 购物车记录表Service + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface CartService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CartParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CartParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return Cart + */ + Cart getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/CategoryService.java b/src/main/java/com/gxwebsoft/shop/service/CategoryService.java new file mode 100644 index 0000000..6127c99 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/CategoryService.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.Category; +import com.gxwebsoft.shop.param.CategoryParam; + +import java.util.List; + +/** + * 商品分类表Service + * + * @author 科技小王子 + * @since 2022-11-22 17:45:37 + */ +public interface CategoryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CategoryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CategoryParam param); + + /** + * 根据id查询 + * + * @param categoryId 商品分类ID + * @return Category + */ + Category getByIdRel(Integer categoryId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/CommentService.java b/src/main/java/com/gxwebsoft/shop/service/CommentService.java new file mode 100644 index 0000000..9663fac --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/CommentService.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.Comment; +import com.gxwebsoft.shop.param.CommentParam; + +import java.util.List; + +/** + * 商品评价记录表Service + * + * @author 科技小王子 + * @since 2022-11-23 21:18:56 + */ +public interface CommentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CommentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CommentParam param); + + /** + * 根据id查询 + * + * @param commentId 评价ID + * @return Comment + */ + Comment getByIdRel(Integer commentId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/CouponService.java b/src/main/java/com/gxwebsoft/shop/service/CouponService.java new file mode 100644 index 0000000..328b8c0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/CouponService.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.Coupon; +import com.gxwebsoft.shop.param.CouponParam; + +import java.util.List; + +/** + * 优惠券记录表Service + * + * @author 科技小王子 + * @since 2022-11-28 18:26:05 + */ +public interface CouponService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(CouponParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(CouponParam param); + + /** + * 根据id查询 + * + * @param couponId 优惠券ID + * @return Coupon + */ + Coupon getByIdRel(Integer couponId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/ExpressService.java b/src/main/java/com/gxwebsoft/shop/service/ExpressService.java new file mode 100644 index 0000000..db9d993 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/ExpressService.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.Express; +import com.gxwebsoft.shop.param.ExpressParam; + +import java.util.List; + +/** + * 物流公司记录表Service + * + * @author 科技小王子 + * @since 2022-11-22 00:21:07 + */ +public interface ExpressService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(ExpressParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(ExpressParam param); + + /** + * 根据id查询 + * + * @param expressId 物流公司ID + * @return Express + */ + Express getByIdRel(Integer expressId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/GoodsService.java b/src/main/java/com/gxwebsoft/shop/service/GoodsService.java new file mode 100644 index 0000000..98e8c64 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/GoodsService.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.Goods; +import com.gxwebsoft.shop.param.GoodsParam; + +import java.util.List; + +/** + * 商品记录表Service + * + * @author 科技小王子 + * @since 2022-11-23 12:47:16 + */ +public interface GoodsService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(GoodsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(GoodsParam param); + + /** + * 根据id查询 + * + * @param goodsId 商品ID + * @return Goods + */ + Goods getByIdRel(Integer goodsId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/GoodsServiceService.java b/src/main/java/com/gxwebsoft/shop/service/GoodsServiceService.java new file mode 100644 index 0000000..c2f2212 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/GoodsServiceService.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.GoodsService; +import com.gxwebsoft.shop.param.GoodsServiceParam; + +import java.util.List; + +/** + * 商品服务与承诺记录表Service + * + * @author 科技小王子 + * @since 2022-11-23 21:57:50 + */ +public interface GoodsServiceService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(GoodsServiceParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(GoodsServiceParam param); + + /** + * 根据id查询 + * + * @param serviceId 商品服务ID + * @return GoodsService + */ + GoodsService getByIdRel(Integer serviceId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/MemberService.java b/src/main/java/com/gxwebsoft/shop/service/MemberService.java new file mode 100644 index 0000000..3e006a9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/MemberService.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.Member; +import com.gxwebsoft.shop.param.MemberParam; + +import java.util.List; + +/** + * 商城会员Service + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +public interface MemberService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MemberParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MemberParam param); + + /** + * 根据id查询 + * + * @param memberId 主键ID + * @return Member + */ + Member getByIdRel(Integer memberId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/MerchantClerkService.java b/src/main/java/com/gxwebsoft/shop/service/MerchantClerkService.java new file mode 100644 index 0000000..9e6b1be --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/MerchantClerkService.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.MerchantClerk; +import com.gxwebsoft.shop.param.MerchantClerkParam; + +import java.util.List; + +/** + * 商家门店店员表Service + * + * @author 科技小王子 + * @since 2022-11-30 16:32:25 + */ +public interface MerchantClerkService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MerchantClerkParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MerchantClerkParam param); + + /** + * 根据id查询 + * @param clerkId 商户人员ID + * @return MerchantClerk + */ + MerchantClerk getByIdRel(Integer clerkId); + + /** + * 根据当前登录用户的userId查询所属的商户编号 + * @param loginUserId 商户人员ID + * @return MerchantClerk + */ + String getMerchantCodeByClerk(Integer loginUserId); +} diff --git a/src/main/java/com/gxwebsoft/shop/service/MerchantService.java b/src/main/java/com/gxwebsoft/shop/service/MerchantService.java new file mode 100644 index 0000000..dfe3c1f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/MerchantService.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.param.MerchantParam; + +import java.util.List; + +/** + * 商户管理Service + * + * @author 科技小王子 + * @since 2022-11-30 15:10:54 + */ +public interface MerchantService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MerchantParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MerchantParam param); + + /** + * 根据id查询 + * + * @param merchantId 商户ID + * @return Merchant + */ + Merchant getByIdRel(Integer merchantId); + + /** + * + * @param merchantOwner 店主绑定的userId + * @return 商户编号 + */ + String getMerchantCodeByOwner(Integer merchantOwner); + + Merchant getMerchantByCode(String merchantCode); + + List listByGeo(MerchantParam param); + + void saveGeoPointToRedis(); +} diff --git a/src/main/java/com/gxwebsoft/shop/service/MerchantWithdrawService.java b/src/main/java/com/gxwebsoft/shop/service/MerchantWithdrawService.java new file mode 100644 index 0000000..a3c5227 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/MerchantWithdrawService.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.MerchantWithdraw; +import com.gxwebsoft.shop.param.MerchantWithdrawParam; + +import java.util.List; + +/** + * 商户提现记录Service + * + * @author 科技小王子 + * @since 2022-12-02 00:41:09 + */ +public interface MerchantWithdrawService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(MerchantWithdrawParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(MerchantWithdrawParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return MerchantWithdraw + */ + MerchantWithdraw getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderAddressService.java b/src/main/java/com/gxwebsoft/shop/service/OrderAddressService.java new file mode 100644 index 0000000..4f2680a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/OrderAddressService.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.OrderAddress; +import com.gxwebsoft.shop.param.OrderAddressParam; + +import java.util.List; + +/** + * 订单收货地址记录表Service + * + * @author 科技小王子 + * @since 2022-12-02 21:21:10 + */ +public interface OrderAddressService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OrderAddressParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OrderAddressParam param); + + /** + * 根据id查询 + * + * @param orderAddressId 地址ID + * @return OrderAddress + */ + OrderAddress getByIdRel(Integer orderAddressId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderGoodsService.java b/src/main/java/com/gxwebsoft/shop/service/OrderGoodsService.java new file mode 100644 index 0000000..8d116da --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/OrderGoodsService.java @@ -0,0 +1,45 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.OrderGoodsParam; + +import java.util.List; + +/** + * 订单商品记录表Service + * + * @author 科技小王子 + * @since 2022-12-09 17:15:31 + */ +public interface OrderGoodsService extends IService { + + List listByOrderIds(List orderIds); + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OrderGoodsParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OrderGoodsParam param); + + /** + * 根据id查询 + * + * @param orderGoodsId 订单商品ID + * @return OrderGoods + */ + OrderGoods getByIdRel(Integer orderGoodsId); + + int countBySettled(OrderGoodsParam param); +} diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderRefundAddressService.java b/src/main/java/com/gxwebsoft/shop/service/OrderRefundAddressService.java new file mode 100644 index 0000000..4af1443 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/OrderRefundAddressService.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.OrderRefundAddress; +import com.gxwebsoft.shop.param.OrderRefundAddressParam; + +import java.util.List; + +/** + * 售后单退货地址记录表Service + * + * @author 科技小王子 + * @since 2023-05-18 13:09:51 + */ +public interface OrderRefundAddressService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OrderRefundAddressParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OrderRefundAddressParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return OrderRefundAddress + */ + OrderRefundAddress getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderRefundService.java b/src/main/java/com/gxwebsoft/shop/service/OrderRefundService.java new file mode 100644 index 0000000..8f5a2cb --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/OrderRefundService.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.OrderRefund; +import com.gxwebsoft.shop.param.OrderRefundParam; + +import java.util.List; + +/** + * 售后单记录表Service + * + * @author 科技小王子 + * @since 2023-05-18 13:09:51 + */ +public interface OrderRefundService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OrderRefundParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OrderRefundParam param); + + /** + * 根据id查询 + * + * @param orderRefundId 售后单ID + * @return OrderRefund + */ + OrderRefund getByIdRel(Integer orderRefundId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderRenewService.java b/src/main/java/com/gxwebsoft/shop/service/OrderRenewService.java new file mode 100644 index 0000000..f5137e3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/OrderRenewService.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.OrderRenew; +import com.gxwebsoft.shop.param.OrderRenewParam; + +import java.util.List; + +/** + * 续费订单记录表Service + * + * @author 科技小王子 + * @since 2023-04-13 10:34:35 + */ +public interface OrderRenewService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OrderRenewParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OrderRenewParam param); + + /** + * 根据id查询 + * + * @param orderRenewId 售后单ID + * @return OrderRenew + */ + OrderRenew getByIdRel(Integer orderRenewId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/OrderService.java b/src/main/java/com/gxwebsoft/shop/service/OrderService.java new file mode 100644 index 0000000..a6efb9b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/OrderService.java @@ -0,0 +1,62 @@ +package com.gxwebsoft.shop.service; + +import com.alipay.api.response.AlipayTradeQueryResponse; +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.param.OrderParam; + +import java.util.List; +import java.util.Map; + +/** + * 订单记录表Service + * + * @author WebSoft + * @since 2022-11-16 11:25:58 + */ +public interface OrderService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(OrderParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(OrderParam param); + + /** + * 根据id查询 + * + * @param orderId 订单ID + * @return Order + */ + Order getByIdRel(Integer orderId); + + Order getByOutTradeNo(String outTradeNo); + + @InterceptorIgnore(tenantLine = "true") + void paySuccess(AlipayTradeQueryResponse params); + + boolean allinPay(Map params); + + @InterceptorIgnore(tenantLine = "true") + void removeOrderByTimeOut(); + + @InterceptorIgnore(tenantLine = "true") + boolean updateByIdRel(Order order); + + PageResult selectPageSettled(OrderParam param); + + void updateByIdSettled(Order order); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/PaymentService.java b/src/main/java/com/gxwebsoft/shop/service/PaymentService.java new file mode 100644 index 0000000..eea8d25 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/PaymentService.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.shop.service; + +import com.alipay.api.AlipayApiException; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.shop.entity.Payment; +import com.gxwebsoft.shop.param.PaymentParam; + +import java.util.List; + +/** + * 商城支付方式记录表Service + * + * @author 科技小王子 + * @since 2022-12-15 19:11:07 + */ +public interface PaymentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(PaymentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(PaymentParam param); + + /** + * 根据id查询 + * + * @param paymentId 支付方式ID + * @return Payment + */ + Payment getByIdRel(Integer paymentId); + + /** + * 查询支付方式 + * @param method + * @return + */ + Payment getPaymentByMethod(String method); +} diff --git a/src/main/java/com/gxwebsoft/shop/service/PaymentTemplateService.java b/src/main/java/com/gxwebsoft/shop/service/PaymentTemplateService.java new file mode 100644 index 0000000..a37c20c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/PaymentTemplateService.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.PaymentTemplate; +import com.gxwebsoft.shop.param.PaymentTemplateParam; + +import java.util.List; + +/** + * 商城支付模板记录表Service + * + * @author 科技小王子 + * @since 2022-12-09 13:59:38 + */ +public interface PaymentTemplateService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(PaymentTemplateParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(PaymentTemplateParam param); + + /** + * 根据id查询 + * + * @param templateId 支付模板ID + * @return PaymentTemplate + */ + PaymentTemplate getByIdRel(Integer templateId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/PaymentTradeService.java b/src/main/java/com/gxwebsoft/shop/service/PaymentTradeService.java new file mode 100644 index 0000000..0c1efdf --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/PaymentTradeService.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.PaymentTrade; +import com.gxwebsoft.shop.param.PaymentTradeParam; + +import java.util.List; + +/** + * 第三方支付交易记录表Service + * + * @author 科技小王子 + * @since 2022-12-09 13:59:38 + */ +public interface PaymentTradeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(PaymentTradeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(PaymentTradeParam param); + + /** + * 根据id查询 + * + * @param tradeId 交易记录ID + * @return PaymentTrade + */ + PaymentTrade getByIdRel(Integer tradeId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/RechargeOrderPlanService.java b/src/main/java/com/gxwebsoft/shop/service/RechargeOrderPlanService.java new file mode 100644 index 0000000..ba26b1f --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/RechargeOrderPlanService.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.RechargeOrderPlan; +import com.gxwebsoft.shop.param.RechargeOrderPlanParam; + +import java.util.List; + +/** + * 会员充值订单套餐快照表Service + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +public interface RechargeOrderPlanService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(RechargeOrderPlanParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(RechargeOrderPlanParam param); + + /** + * 根据id查询 + * + * @param orderPlanId 主键ID + * @return RechargeOrderPlan + */ + RechargeOrderPlan getByIdRel(Integer orderPlanId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/RechargeOrderService.java b/src/main/java/com/gxwebsoft/shop/service/RechargeOrderService.java new file mode 100644 index 0000000..697cb17 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/RechargeOrderService.java @@ -0,0 +1,43 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.RechargeOrder; +import com.gxwebsoft.shop.param.RechargeOrderParam; + +import java.util.List; + +/** + * 会员充值订单表Service + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +public interface RechargeOrderService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(RechargeOrderParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(RechargeOrderParam param); + + /** + * 根据id查询 + * + * @param orderId 订单ID + * @return RechargeOrder + */ + RechargeOrder getByIdRel(Integer orderId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/RechargePlanService.java b/src/main/java/com/gxwebsoft/shop/service/RechargePlanService.java new file mode 100644 index 0000000..b5e9690 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/RechargePlanService.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.RechargePlan; +import com.gxwebsoft.shop.param.RechargePlanParam; + +import java.util.List; + +/** + * 会员充值套餐表Service + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +public interface RechargePlanService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(RechargePlanParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(RechargePlanParam param); + + /** + * 根据id查询 + * + * @param planId 主键ID + * @return RechargePlan + */ + RechargePlan getByIdRel(Integer planId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/TestService.java b/src/main/java/com/gxwebsoft/shop/service/TestService.java new file mode 100644 index 0000000..8bee3da --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/TestService.java @@ -0,0 +1,7 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.shop.entity.Order; + +public interface TestService extends IService { +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserAddressService.java b/src/main/java/com/gxwebsoft/shop/service/UserAddressService.java new file mode 100644 index 0000000..2d0ed35 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserAddressService.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.UserAddress; +import com.gxwebsoft.shop.param.UserAddressParam; + +import java.util.List; + +/** + * 用户收货地址表Service + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface UserAddressService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserAddressParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserAddressParam param); + + /** + * 根据id查询 + * + * @param addressId 主键ID + * @return UserAddress + */ + UserAddress getByIdRel(Integer addressId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserBalanceLogService.java b/src/main/java/com/gxwebsoft/shop/service/UserBalanceLogService.java new file mode 100644 index 0000000..ba488f5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserBalanceLogService.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.UserBalanceLog; +import com.gxwebsoft.shop.param.UserBalanceLogParam; + +import java.util.List; + +/** + * 用户余额变动明细表Service + * + * @author 科技小王子 + * @since 2023-04-21 15:59:09 + */ +public interface UserBalanceLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserBalanceLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserBalanceLogParam param); + + /** + * 根据id查询 + * + * @param logId 主键ID + * @return UserBalanceLog + */ + UserBalanceLog getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserCommentService.java b/src/main/java/com/gxwebsoft/shop/service/UserCommentService.java new file mode 100644 index 0000000..e8cdfa7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserCommentService.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.UserComment; +import com.gxwebsoft.shop.param.UserCommentParam; + +import java.util.List; + +/** + * 用户评价记录表Service + * + * @author 科技小王子 + * @since 2023-07-06 13:55:16 + */ +public interface UserCommentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserCommentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserCommentParam param); + + /** + * 根据id查询 + * + * @param commentId 评价ID + * @return UserComment + */ + UserComment getByIdRel(Integer commentId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserCouponService.java b/src/main/java/com/gxwebsoft/shop/service/UserCouponService.java new file mode 100644 index 0000000..49766e7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserCouponService.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.UserCoupon; +import com.gxwebsoft.shop.param.UserCouponParam; + +import java.util.List; + +/** + * 用户优惠券记录表Service + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface UserCouponService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserCouponParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserCouponParam param); + + /** + * 根据id查询 + * + * @param userCouponId 主键ID + * @return UserCoupon + */ + UserCoupon getByIdRel(Integer userCouponId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserFeedbackService.java b/src/main/java/com/gxwebsoft/shop/service/UserFeedbackService.java new file mode 100644 index 0000000..6b71d8a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserFeedbackService.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.UserFeedback; +import com.gxwebsoft.shop.param.UserFeedbackParam; + +import java.util.List; + +/** + * 意见反馈记录表Service + * + * @author 科技小王子 + * @since 2023-07-16 22:24:55 + */ +public interface UserFeedbackService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserFeedbackParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserFeedbackParam param); + + /** + * 根据id查询 + * + * @param id ID + * @return UserFeedback + */ + UserFeedback getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserFollowService.java b/src/main/java/com/gxwebsoft/shop/service/UserFollowService.java new file mode 100644 index 0000000..4b78313 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserFollowService.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.UserFollow; +import com.gxwebsoft.shop.param.UserFollowParam; + +import java.util.List; + +/** + * 关注记录表Service + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface UserFollowService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserFollowParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserFollowParam param); + + /** + * 根据id查询 + * + * @param logId 主键ID + * @return UserFollow + */ + UserFollow getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserGradeLogService.java b/src/main/java/com/gxwebsoft/shop/service/UserGradeLogService.java new file mode 100644 index 0000000..b4dd600 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserGradeLogService.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.UserGradeLog; +import com.gxwebsoft.shop.param.UserGradeLogParam; + +import java.util.List; + +/** + * 用户会员等级变更记录表Service + * + * @author 科技小王子 + * @since 2023-06-20 16:33:06 + */ +public interface UserGradeLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserGradeLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserGradeLogParam param); + + /** + * 根据id查询 + * + * @param logId 主键ID + * @return UserGradeLog + */ + UserGradeLog getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserGradeService.java b/src/main/java/com/gxwebsoft/shop/service/UserGradeService.java new file mode 100644 index 0000000..a8e578c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserGradeService.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.UserGrade; +import com.gxwebsoft.shop.param.UserGradeParam; + +import java.util.List; + +/** + * 用户会员等级表Service + * + * @author 科技小王子 + * @since 2023-06-20 16:33:06 + */ +public interface UserGradeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserGradeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserGradeParam param); + + /** + * 根据id查询 + * + * @param gradeId 等级ID + * @return UserGrade + */ + UserGrade getByIdRel(Integer gradeId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserLikeService.java b/src/main/java/com/gxwebsoft/shop/service/UserLikeService.java new file mode 100644 index 0000000..204e18c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserLikeService.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.UserLike; +import com.gxwebsoft.shop.param.UserLikeParam; + +import java.util.List; + +/** + * 点赞记录表Service + * + * @author 科技小王子 + * @since 2023-07-06 17:51:04 + */ +public interface UserLikeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserLikeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserLikeParam param); + + /** + * 根据id查询 + * + * @param logId 主键ID + * @return UserLike + */ + UserLike getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserLookService.java b/src/main/java/com/gxwebsoft/shop/service/UserLookService.java new file mode 100644 index 0000000..0a2fd27 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserLookService.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.UserLook; +import com.gxwebsoft.shop.param.UserLookParam; + +import java.util.List; + +/** + * 访客记录表Service + * + * @author 科技小王子 + * @since 2023-07-13 23:10:38 + */ +public interface UserLookService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserLookParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserLookParam param); + + /** + * 根据id查询 + * + * @param logId 主键ID + * @return UserLook + */ + UserLook getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserOauthService.java b/src/main/java/com/gxwebsoft/shop/service/UserOauthService.java new file mode 100644 index 0000000..d98d3de --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserOauthService.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.shop.service; + +import com.baomidou.mybatisplus.annotation.InterceptorIgnore; +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.param.UserOauthParam; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 第三方用户信息表Service + * + * @author 科技小王子 + * @since 2022-12-15 08:33:13 + */ +public interface UserOauthService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserOauthParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserOauthParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return UserOauth + */ + UserOauth getByIdRel(Integer id); + + /** + * 获取第三方用户唯一标识 + * @param userId + * @param platform + * @return + */ + String getOauthIdByUserId(Integer userId,String platform); + + // 根据openId获取用户信息 + User getByOauthId(String openid); + + // 跟进unionId获取用户信息 + UserOauth getByUnionId(UserOauthParam param); +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserPointsLogService.java b/src/main/java/com/gxwebsoft/shop/service/UserPointsLogService.java new file mode 100644 index 0000000..7a66a27 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserPointsLogService.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.UserPointsLog; +import com.gxwebsoft.shop.param.UserPointsLogParam; + +import java.util.List; + +/** + * 用户积分变动明细表Service + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +public interface UserPointsLogService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserPointsLogParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserPointsLogParam param); + + /** + * 根据id查询 + * + * @param logId 主键ID + * @return UserPointsLog + */ + UserPointsLog getByIdRel(Integer logId); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/UserRefereeService.java b/src/main/java/com/gxwebsoft/shop/service/UserRefereeService.java new file mode 100644 index 0000000..e4caff8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/UserRefereeService.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.UserReferee; +import com.gxwebsoft.shop.param.UserRefereeParam; + +import java.util.List; + +/** + * 用户推荐关系表Service + * + * @author 科技小王子 + * @since 2023-04-28 14:07:29 + */ +public interface UserRefereeService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(UserRefereeParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(UserRefereeParam param); + + /** + * 根据id查询 + * + * @param id 主键ID + * @return UserReferee + */ + UserReferee getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/CartServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/CartServiceImpl.java new file mode 100644 index 0000000..9f8cb47 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/CartServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.CartMapper; +import com.gxwebsoft.shop.service.CartService; +import com.gxwebsoft.shop.entity.Cart; +import com.gxwebsoft.shop.param.CartParam; +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 2022-11-25 19:04:43 + */ +@Service +public class CartServiceImpl extends ServiceImpl implements CartService { + + @Override + public PageResult pageRel(CartParam 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(CartParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Cart getByIdRel(Integer id) { + CartParam param = new CartParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/CategoryServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/CategoryServiceImpl.java new file mode 100644 index 0000000..1055110 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/CategoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.CategoryMapper; +import com.gxwebsoft.shop.service.CategoryService; +import com.gxwebsoft.shop.entity.Category; +import com.gxwebsoft.shop.param.CategoryParam; +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 2022-11-22 17:45:37 + */ +@Service +public class CategoryServiceImpl extends ServiceImpl implements CategoryService { + + @Override + public PageResult pageRel(CategoryParam 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(CategoryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Category getByIdRel(Integer categoryId) { + CategoryParam param = new CategoryParam(); + param.setCategoryId(categoryId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/CommentServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/CommentServiceImpl.java new file mode 100644 index 0000000..7e4f444 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/CommentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.CommentMapper; +import com.gxwebsoft.shop.service.CommentService; +import com.gxwebsoft.shop.entity.Comment; +import com.gxwebsoft.shop.param.CommentParam; +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 2022-11-23 21:18:56 + */ +@Service +public class CommentServiceImpl extends ServiceImpl implements CommentService { + + @Override + public PageResult pageRel(CommentParam 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(CommentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Comment getByIdRel(Integer commentId) { + CommentParam param = new CommentParam(); + param.setCommentId(commentId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/CouponServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/CouponServiceImpl.java new file mode 100644 index 0000000..76bf727 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/CouponServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.CouponMapper; +import com.gxwebsoft.shop.service.CouponService; +import com.gxwebsoft.shop.entity.Coupon; +import com.gxwebsoft.shop.param.CouponParam; +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 2022-11-28 18:26:05 + */ +@Service +public class CouponServiceImpl extends ServiceImpl implements CouponService { + + @Override + public PageResult pageRel(CouponParam 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(CouponParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Coupon getByIdRel(Integer couponId) { + CouponParam param = new CouponParam(); + param.setCouponId(couponId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/ExpressServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/ExpressServiceImpl.java new file mode 100644 index 0000000..3b451df --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/ExpressServiceImpl.java @@ -0,0 +1,48 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.ExpressMapper; +import com.gxwebsoft.shop.service.ExpressService; +import com.gxwebsoft.shop.entity.Express; +import com.gxwebsoft.shop.param.ExpressParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import lombok.val; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 物流公司记录表Service实现 + * + * @author 科技小王子 + * @since 2022-11-22 00:21:07 + */ +@Service +public class ExpressServiceImpl extends ServiceImpl implements ExpressService { + + @Override + public PageResult pageRel(ExpressParam 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(ExpressParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Express getByIdRel(Integer expressId) { + ExpressParam param = new ExpressParam(); + param.setExpressId(expressId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceImpl.java new file mode 100644 index 0000000..c7408e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceImpl.java @@ -0,0 +1,47 @@ +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.shop.entity.Goods; +import com.gxwebsoft.shop.mapper.GoodsMapper; +import com.gxwebsoft.shop.param.GoodsParam; +import com.gxwebsoft.shop.service.GoodsService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 商品记录表Service实现 + * + * @author 科技小王子 + * @since 2022-11-23 12:47:16 + */ +@Service +public class GoodsServiceImpl extends ServiceImpl implements GoodsService { + + @Override + public PageResult pageRel(GoodsParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("gear asc,sort_number asc,create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(GoodsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("gear asc,sort_number asc,create_time desc"); + return page.sortRecords(list); + } + + @Override + public Goods getByIdRel(Integer goodsId) { + GoodsParam param = new GoodsParam(); + param.setGoodsId(goodsId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceServiceImpl.java new file mode 100644 index 0000000..f0e33cf --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/GoodsServiceServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.GoodsServiceMapper; +import com.gxwebsoft.shop.service.GoodsServiceService; +import com.gxwebsoft.shop.entity.GoodsService; +import com.gxwebsoft.shop.param.GoodsServiceParam; +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 2022-11-23 21:57:50 + */ +@Service +public class GoodsServiceServiceImpl extends ServiceImpl implements GoodsServiceService { + + @Override + public PageResult pageRel(GoodsServiceParam 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(GoodsServiceParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public GoodsService getByIdRel(Integer serviceId) { + GoodsServiceParam param = new GoodsServiceParam(); + param.setServiceId(serviceId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/MemberServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/MemberServiceImpl.java new file mode 100644 index 0000000..fa8d39b --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/MemberServiceImpl.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.Role; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.mapper.MemberMapper; +import com.gxwebsoft.shop.service.MemberService; +import com.gxwebsoft.shop.entity.Member; +import com.gxwebsoft.shop.param.MemberParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 商城会员Service实现 + * + * @author 科技小王子 + * @since 2022-11-25 14:02:24 + */ +@Service +public class MemberServiceImpl extends ServiceImpl implements MemberService { + + @Resource + private UserService userService; + + @Override + public PageResult pageRel(MemberParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + // 查询会员的关联信息 + selectUser(list); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(MemberParam param) { + List list = baseMapper.selectListRel(param); + // 查询会员的关联信息 + selectUser(list); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Member getByIdRel(Integer memberId) { + MemberParam param = new MemberParam(); + param.setMemberId(memberId); + return param.getOne(baseMapper.selectListRel(param)); + } + + /** + * 批量查询会员的关联信息 + * + * @param members 会员集合 + */ + private void selectUser(List members) { + if (members != null && members.size() > 0) { + for (Member member : members) { + member.setUser(userService.getById(member.getUserId())); + } + } + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/MerchantClerkServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/MerchantClerkServiceImpl.java new file mode 100644 index 0000000..74208e3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/MerchantClerkServiceImpl.java @@ -0,0 +1,75 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.mapper.MerchantClerkMapper; +import com.gxwebsoft.shop.service.MerchantClerkService; +import com.gxwebsoft.shop.entity.MerchantClerk; +import com.gxwebsoft.shop.param.MerchantClerkParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import lombok.val; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商家门店店员表Service实现 + * + * @author 科技小王子 + * @since 2022-11-30 16:32:25 + */ +@Service +public class MerchantClerkServiceImpl extends ServiceImpl implements MerchantClerkService { + @Resource + private UserService userService; + + @Override + public PageResult pageRel(MerchantClerkParam param) { + PageParam page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + // 查询会员的关联信息 + selectUser(list); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(MerchantClerkParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public MerchantClerk getByIdRel(Integer clerkId) { + MerchantClerkParam param = new MerchantClerkParam(); + param.setClerkId(clerkId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public String getMerchantCodeByClerk(Integer loginUserId) { + MerchantClerk merchantClerk = query().eq("user_id", loginUserId).one(); + if(merchantClerk != null){ + return merchantClerk.getMerchantCode(); + } + return null; + } + + /** + * 批量查询会员的关联信息 + * + * @param clerks 会员集合 + */ + private void selectUser(List clerks) { + if (clerks != null && clerks.size() > 0) { + for (MerchantClerk clerk : clerks) { + clerk.setUser(userService.getById(clerk.getUserId())); + } + } + } +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/MerchantServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/MerchantServiceImpl.java new file mode 100644 index 0000000..ea35961 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/MerchantServiceImpl.java @@ -0,0 +1,145 @@ +package com.gxwebsoft.shop.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Merchant; +import com.gxwebsoft.shop.mapper.MerchantMapper; +import com.gxwebsoft.shop.param.MerchantParam; +import com.gxwebsoft.shop.service.MerchantService; +import org.springframework.data.geo.*; +import org.springframework.data.redis.connection.RedisGeoCommands; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.RedisConstants.MERCHANT_GEO_KEY; + +/** + * 商户管理Service实现 + * + * @author 科技小王子 + * @since 2022-11-30 15:10:54 + */ +@Service +public class MerchantServiceImpl extends ServiceImpl implements MerchantService { + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private CacheClient cacheClient; + + @Override + public PageResult pageRel(MerchantParam 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(MerchantParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Merchant getByIdRel(Integer merchantId) { + MerchantParam param = new MerchantParam(); + param.setMerchantId(merchantId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public String getMerchantCodeByOwner(Integer merchantOwner) { + Merchant merchant = query().eq("merchant_owner", merchantOwner).one(); + if (merchant == null) { + return null; + } + return merchant.getMerchantCode(); + } + + @Override + public Merchant getMerchantByCode(String merchantCode) { + return query().eq("merchant_code", merchantCode).one(); + } + + @Override + public List listByGeo(MerchantParam param) { + System.out.println("param = " + param); + // 1. 是否按距离排序 + if (param.getLngAndLat() == null) { + // 无定位信息 + return list(); + } + // 2. 查询10公里内的10家店铺 + final String lngAndLat = param.getLngAndLat(); + final String[] split = lngAndLat.split(","); + final Point point = new Point(Double.parseDouble(split[0]), Double.parseDouble(split[1])); + RedisGeoCommands.GeoRadiusCommandArgs geoRadiusCommandArgs = RedisGeoCommands.GeoRadiusCommandArgs.newGeoRadiusArgs(); +// final Distance distance1 = new Distance(5, Metrics.KILOMETERS); + GeoResults> results = stringRedisTemplate.opsForGeo().radius(MERCHANT_GEO_KEY, new Circle(point, 10000), geoRadiusCommandArgs.includeDistance().limit(10)); + + assert results != null; + final List>> list = results.getContent(); + if (list.size() == 0) { + return null; + } + List ids = new ArrayList<>(list.size()); + Map distanceMap = new HashMap<>(list.size()); + list.forEach(d -> { + // 获取店铺ID + String merchantId = d.getContent().getName(); + ids.add(merchantId); + // 获取距离 + Distance distance = d.getDistance(); +// System.out.println("distance = " + distance); + distanceMap.put(merchantId, distance); + }); +// System.out.println("ids = " + ids); +// System.out.println("distanceMap = " + distanceMap); + final List merchants = query().in("merchant_id", ids).last("ORDER BY FIELD(merchant_id," + StrUtil.join(",", ids) + ")").list(); + for (Merchant shop : merchants) { + shop.setDistance(distanceMap.get(StrUtil.toString(shop.getMerchantId())).getValue()); + } +// System.out.println("merchants = " + merchants); + // 定时更新geo商户点位信息 +// this.saveGeoPointToRedis(); + return merchants; + } + + /** + * 更新所有商户点位信息 + */ + @Override + public void saveGeoPointToRedis() { + // 1.查询所有商户 + final List list = list(); + // 2.然后按品牌分组,把品牌id一致的放到一个集合 + final Map> map = list.stream().collect(Collectors.groupingBy(Merchant::getMerchantId)); + // 3.分批完成写入Redis + for (Map.Entry> entry : map.entrySet()) { + // 3.1 获取商户的集合 + List value = entry.getValue(); + List> locatioins = new ArrayList<>(value.size()); + // 3.2 写入redis GEOADD key 经度 维度 member + for (Merchant merchant : value) { + String lngAndLat = merchant.getLngAndLat(); + final String[] split = lngAndLat.split(","); + locatioins.add(new RedisGeoCommands.GeoLocation<>(merchant.getMerchantId().toString(), new Point(Double.parseDouble(split[0]), Double.parseDouble(split[1])))); + } +// System.out.println("locatioins = " + locatioins); + stringRedisTemplate.opsForGeo().add(MERCHANT_GEO_KEY, locatioins); + } + } +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/MerchantWithdrawServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/MerchantWithdrawServiceImpl.java new file mode 100644 index 0000000..41b08c6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/MerchantWithdrawServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.MerchantWithdrawMapper; +import com.gxwebsoft.shop.service.MerchantWithdrawService; +import com.gxwebsoft.shop.entity.MerchantWithdraw; +import com.gxwebsoft.shop.param.MerchantWithdrawParam; +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 2022-12-02 00:41:09 + */ +@Service +public class MerchantWithdrawServiceImpl extends ServiceImpl implements MerchantWithdrawService { + + @Override + public PageResult pageRel(MerchantWithdrawParam 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(MerchantWithdrawParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public MerchantWithdraw getByIdRel(Integer id) { + MerchantWithdrawParam param = new MerchantWithdrawParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderAddressServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderAddressServiceImpl.java new file mode 100644 index 0000000..438897e --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderAddressServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.OrderAddressMapper; +import com.gxwebsoft.shop.service.OrderAddressService; +import com.gxwebsoft.shop.entity.OrderAddress; +import com.gxwebsoft.shop.param.OrderAddressParam; +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 2022-12-02 21:21:10 + */ +@Service +public class OrderAddressServiceImpl extends ServiceImpl implements OrderAddressService { + + @Override + public PageResult pageRel(OrderAddressParam 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(OrderAddressParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OrderAddress getByIdRel(Integer orderAddressId) { + OrderAddressParam param = new OrderAddressParam(); + param.setOrderAddressId(orderAddressId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderGoodsServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderGoodsServiceImpl.java new file mode 100644 index 0000000..6b555de --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderGoodsServiceImpl.java @@ -0,0 +1,56 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.OrderGoodsMapper; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.param.OrderGoodsParam; +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 2022-12-09 17:15:31 + */ +@Service +public class OrderGoodsServiceImpl extends ServiceImpl implements OrderGoodsService { + + @Override + public List listByOrderIds(List orderIds) { + return baseMapper.selectByOrderIds(orderIds); + } + + @Override + public PageResult pageRel(OrderGoodsParam 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(OrderGoodsParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OrderGoods getByIdRel(Integer orderGoodsId) { + OrderGoodsParam param = new OrderGoodsParam(); + param.setOrderGoodsId(orderGoodsId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public int countBySettled(OrderGoodsParam param) { + return baseMapper.selectCountBySettled(param); + } +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderRefundAddressServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderRefundAddressServiceImpl.java new file mode 100644 index 0000000..28b2455 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderRefundAddressServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.OrderRefundAddressMapper; +import com.gxwebsoft.shop.service.OrderRefundAddressService; +import com.gxwebsoft.shop.entity.OrderRefundAddress; +import com.gxwebsoft.shop.param.OrderRefundAddressParam; +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-05-18 13:09:51 + */ +@Service +public class OrderRefundAddressServiceImpl extends ServiceImpl implements OrderRefundAddressService { + + @Override + public PageResult pageRel(OrderRefundAddressParam 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(OrderRefundAddressParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OrderRefundAddress getByIdRel(Integer id) { + OrderRefundAddressParam param = new OrderRefundAddressParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderRefundServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderRefundServiceImpl.java new file mode 100644 index 0000000..8ea3545 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderRefundServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.OrderRefundMapper; +import com.gxwebsoft.shop.service.OrderRefundService; +import com.gxwebsoft.shop.entity.OrderRefund; +import com.gxwebsoft.shop.param.OrderRefundParam; +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-05-18 13:09:51 + */ +@Service +public class OrderRefundServiceImpl extends ServiceImpl implements OrderRefundService { + + @Override + public PageResult pageRel(OrderRefundParam 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(OrderRefundParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OrderRefund getByIdRel(Integer orderRefundId) { + OrderRefundParam param = new OrderRefundParam(); + param.setOrderRefundId(orderRefundId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/OrderRenewServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/OrderRenewServiceImpl.java new file mode 100644 index 0000000..7aaa9ec --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderRenewServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.OrderRenewMapper; +import com.gxwebsoft.shop.service.OrderRenewService; +import com.gxwebsoft.shop.entity.OrderRenew; +import com.gxwebsoft.shop.param.OrderRenewParam; +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-04-13 10:34:35 + */ +@Service +public class OrderRenewServiceImpl extends ServiceImpl implements OrderRenewService { + + @Override + public PageResult pageRel(OrderRenewParam 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(OrderRenewParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public OrderRenew getByIdRel(Integer orderRenewId) { + OrderRenewParam param = new OrderRenewParam(); + param.setOrderRenewId(orderRenewId); + 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 new file mode 100644 index 0000000..d3f7826 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/OrderServiceImpl.java @@ -0,0 +1,249 @@ +package com.gxwebsoft.shop.service.impl; + +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alipay.api.response.AlipayTradeQueryResponse; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.apps.service.EquipmentGoodsService; +import com.gxwebsoft.apps.service.EquipmentService; +import com.gxwebsoft.common.core.utils.CacheClient; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.entity.OrderGoods; +import com.gxwebsoft.shop.mapper.OrderMapper; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.OrderGoodsService; +import com.gxwebsoft.shop.service.OrderService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static com.gxwebsoft.common.core.constants.OrderConstants.*; + +/** + * 订单记录表Service实现 + * + * @author WebSoft + * @since 2022-11-16 11:25:58 + */ +@Service +public class OrderServiceImpl extends ServiceImpl implements OrderService { + @Resource + private EquipmentService equipmentService; + @Resource + private EquipmentGoodsService equipmentGoodsService; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsService orderGoodsService; + @Resource + private CacheClient cacheClient; + + @Override + public PageResult pageRel(OrderParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("delivery_time desc,create_time desc"); + List list = baseMapper.selectPageRel(page, param); + // 是否查询订单商品 + if(param.getShowGoodsList() != null){ + list.forEach(d -> { + final List goodsList = orderGoodsService.list(new LambdaQueryWrapper().eq(OrderGoods::getOrderId, d.getOrderId()).gt(OrderGoods::getTotalNum, 0)); + goodsList.forEach(g -> { + // 比较时间前后判断是否允许取消报餐 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date newDate = DateUtil.offset(d.getDeliveryTime(), DateField.HOUR, -3); + try { + Date date1 = df.parse(newDate.toString()); + Date date2 = df.parse(DateUtil.now()); + g.setIsCancel(date1.after(date2)); + final boolean before = date1.after(date2); + System.out.println("是否允许取消报餐 = " + before); + } catch (ParseException e) { + e.printStackTrace(); + } + }); + d.setGoodsList(goodsList); + }); + } + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(OrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Order getByIdRel(Integer orderId) { + OrderParam param = new OrderParam(); + param.setOrderId(orderId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public Order getByOutTradeNo(String outTradeNo) { + OrderParam param = new OrderParam(); + param.setOrderNo(outTradeNo); + return param.getOne(baseMapper.getOne(param)); + } + + /** + * 支付成功后处理的业务(通联支付) + */ + @Override + public boolean allinPay(Map params) { + cacheClient.set(":payInfo", params.toString()); + final String outTradeNo = params.get("merchantOrderNo"); + final String trxamt = params.get("trxamt"); + final String merchantNo = params.get("merchantNo"); + final String chnltrxid = params.get("chnltrxid"); + final String payTime = params.get("payTime"); + final String fee = params.get("fee"); + final String trxStatus = params.get("trxstatus"); + + // 1.是否为商城订单 + Order order = orderService.getByOutTradeNo(outTradeNo); + if (order == null) { + return false; + } + + // 2.订单金额是否一致 + final BigDecimal payPrice = new BigDecimal(trxamt).divide(new BigDecimal(100)); + + // 3.订单商户是否一致 +// if (!merchantNo.equals(order.getMerchantCode())) { +// return false; +// } + + // 4.验证appId是否一致 +// String appId = params.get("app_id"); +// System.out.println("验证appId是否一致"+appId); +// String appIdPro = "2021003156628508"; +// if (!appId.equals(appIdPro)) { +// System.out.println("验证appId校验失败"); +// return false; +// } + // 5.判断交易状态 + if (!"2".equals(trxStatus)) { + return false; + } + // 6.修改订单状态 + OrderParam orderParam = new OrderParam(); + orderParam.setOrderNo(outTradeNo); + orderParam.setPayStatus(PAY_STATUS_SUCCESS); + orderParam.setPayPrice(payPrice); + // + return baseMapper.updatePayStatus(orderParam); + } + + @Override + public void removeOrderByTimeOut() { + final Integer pay_status = query().eq("order_no", "2023121205993791").count(); + System.out.println("处理过期订单 = " + pay_status); + } + + @Override + public boolean updateByIdRel(Order order) { + return baseMapper.updateByIdRel(order); + } + + @Override + public PageResult selectPageSettled(OrderParam param) { + PageParam page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageSettled(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public void updateByIdSettled(Order order) { + baseMapper.updateByIdSettled(order); + } + + + /** + * 支付成功后处理的业务 + */ + @Transactional(rollbackFor = {Exception.class}) + @Override + public void paySuccess(AlipayTradeQueryResponse params) { + System.out.println("支付成功后处理的业务"); + String outTradeNo = params.getOutTradeNo(); + String totalAmount = params.getTotalAmount(); + String receiptAmount = params.getReceiptAmount(); + // 1.是否为商城订单 + Order order = orderService.getByOutTradeNo(outTradeNo); + if (order == null) { + System.out.println("订单不存在!"); + return; + } + // 2.订单金额是否一致 + // 3.订单商户是否一致 + // 4.验证appId是否一致 + // 5.判断交易状态 + String tradeStatus = params.getTradeStatus(); + if (!"TRADE_SUCCESS".equals(tradeStatus)) { + System.out.println("支付未成功"); + return; + } + + // 6.修改订单状态 + order.setPayStatus(PAY_STATUS_SUCCESS); + order.setPayMethod(PAY_METHOD_ALIPAY); + order.setReceiptAmount(new BigDecimal(receiptAmount)); + order.setPayTime(DateUtil.date()); + order.setExpirationTime(DateUtil.nextMonth()); + orderService.updateById(order); + + // 6. 续租订单 + if (order.getRentOrderId() > 0) { + // 主订单 + Order parentOrder = orderService.getById(order.getRentOrderId()); + // 更新过期时间延长一个月 + Date expirationTime = parentOrder.getExpirationTime(); + DateTime nextMonthTime = DateUtil.offsetMonth(expirationTime, 1); + parentOrder.setExpirationTime(nextMonthTime); + orderService.updateById(parentOrder); + // 保存续费订单状态 + order.setDeliveryStatus(DELIVERY_STATUS_YES); + order.setReceiptStatus(RECEIPT_STATUS_YES); + order.setOrderStatus(ORDER_STATUS_COMPLETED); + order.setStartTime(expirationTime); + order.setExpirationTime(nextMonthTime); + orderService.updateById(order); + } + } + + /** + * 批量查询订单的关联商品 + * + * @param orders 商品集合 + */ + private void selectOrderGoods(List orders) { + if (orders != null && orders.size() > 0) { + List orderIds = orders.stream().map(Order::getOrderId).collect(Collectors.toList()); + List orderGoods = orderGoodsService.listByOrderIds(orderIds); + for (Order order : orders) { + List goodsList = orderGoods.stream().filter(d -> order.getOrderId().equals(d.getOrderId())) + .collect(Collectors.toList()); + order.setGoodsList(goodsList); + } + } + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/PaymentServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/PaymentServiceImpl.java new file mode 100644 index 0000000..9fee559 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/PaymentServiceImpl.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.shop.service.impl; + +import com.alipay.api.AlipayApiException; +import com.alipay.api.AlipayClient; +import com.alipay.api.request.AlipaySystemOauthTokenRequest; +import com.alipay.api.response.AlipaySystemOauthTokenResponse; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.param.UserParam; +import com.gxwebsoft.shop.mapper.PaymentMapper; +import com.gxwebsoft.shop.service.PaymentService; +import com.gxwebsoft.shop.entity.Payment; +import com.gxwebsoft.shop.param.PaymentParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 商城支付方式记录表Service实现 + * + * @author 科技小王子 + * @since 2022-12-15 19:11:07 + */ +@Service +public class PaymentServiceImpl extends ServiceImpl implements PaymentService { + + @Override + public PageResult pageRel(PaymentParam 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(PaymentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Payment getByIdRel(Integer paymentId) { + PaymentParam param = new PaymentParam(); + param.setPaymentId(paymentId); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public Payment getPaymentByMethod(String method){ + System.out.println(method+"......."); + PaymentParam param = new PaymentParam(); + param.setMethod(method); + param.setTenantId(6); + System.out.println(param); +// System.out.println(param.getOne(baseMapper.selectListRel(param))); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/PaymentTemplateServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/PaymentTemplateServiceImpl.java new file mode 100644 index 0000000..4650ff2 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/PaymentTemplateServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.PaymentTemplateMapper; +import com.gxwebsoft.shop.service.PaymentTemplateService; +import com.gxwebsoft.shop.entity.PaymentTemplate; +import com.gxwebsoft.shop.param.PaymentTemplateParam; +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 2022-12-09 13:59:38 + */ +@Service +public class PaymentTemplateServiceImpl extends ServiceImpl implements PaymentTemplateService { + + @Override + public PageResult pageRel(PaymentTemplateParam 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(PaymentTemplateParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public PaymentTemplate getByIdRel(Integer templateId) { + PaymentTemplateParam param = new PaymentTemplateParam(); + param.setTemplateId(templateId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/PaymentTradeServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/PaymentTradeServiceImpl.java new file mode 100644 index 0000000..7c64f9c --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/PaymentTradeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.PaymentTradeMapper; +import com.gxwebsoft.shop.service.PaymentTradeService; +import com.gxwebsoft.shop.entity.PaymentTrade; +import com.gxwebsoft.shop.param.PaymentTradeParam; +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 2022-12-09 13:59:38 + */ +@Service +public class PaymentTradeServiceImpl extends ServiceImpl implements PaymentTradeService { + + @Override + public PageResult pageRel(PaymentTradeParam 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(PaymentTradeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public PaymentTrade getByIdRel(Integer tradeId) { + PaymentTradeParam param = new PaymentTradeParam(); + param.setTradeId(tradeId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/RechargeOrderPlanServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/RechargeOrderPlanServiceImpl.java new file mode 100644 index 0000000..ad20509 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/RechargeOrderPlanServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.RechargeOrderPlanMapper; +import com.gxwebsoft.shop.service.RechargeOrderPlanService; +import com.gxwebsoft.shop.entity.RechargeOrderPlan; +import com.gxwebsoft.shop.param.RechargeOrderPlanParam; +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-04-20 20:36:24 + */ +@Service +public class RechargeOrderPlanServiceImpl extends ServiceImpl implements RechargeOrderPlanService { + + @Override + public PageResult pageRel(RechargeOrderPlanParam 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(RechargeOrderPlanParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public RechargeOrderPlan getByIdRel(Integer orderPlanId) { + RechargeOrderPlanParam param = new RechargeOrderPlanParam(); + param.setOrderPlanId(orderPlanId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/RechargeOrderServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/RechargeOrderServiceImpl.java new file mode 100644 index 0000000..4893379 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/RechargeOrderServiceImpl.java @@ -0,0 +1,52 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.mapper.RechargeOrderMapper; +import com.gxwebsoft.shop.service.RechargeOrderService; +import com.gxwebsoft.shop.entity.RechargeOrder; +import com.gxwebsoft.shop.param.RechargeOrderParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 会员充值订单表Service实现 + * + * @author 科技小王子 + * @since 2023-04-20 20:36:24 + */ +@Service +public class RechargeOrderServiceImpl extends ServiceImpl implements RechargeOrderService { + @Resource + private UserService userService; + + @Override + public PageResult pageRel(RechargeOrderParam 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(RechargeOrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public RechargeOrder getByIdRel(Integer orderId) { + RechargeOrderParam param = new RechargeOrderParam(); + param.setOrderId(orderId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/RechargePlanServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/RechargePlanServiceImpl.java new file mode 100644 index 0000000..261d76a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/RechargePlanServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.RechargePlanMapper; +import com.gxwebsoft.shop.service.RechargePlanService; +import com.gxwebsoft.shop.entity.RechargePlan; +import com.gxwebsoft.shop.param.RechargePlanParam; +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-04-20 20:36:24 + */ +@Service +public class RechargePlanServiceImpl extends ServiceImpl implements RechargePlanService { + + @Override + public PageResult pageRel(RechargePlanParam 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(RechargePlanParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public RechargePlan getByIdRel(Integer planId) { + RechargePlanParam param = new RechargePlanParam(); + param.setPlanId(planId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/TestServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/TestServiceImpl.java new file mode 100644 index 0000000..0f870d0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/TestServiceImpl.java @@ -0,0 +1,12 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.mapper.OrderMapper; +import com.gxwebsoft.shop.service.TestService; +import org.springframework.stereotype.Service; + +@Service +public class TestServiceImpl extends ServiceImpl implements TestService { + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserAddressServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserAddressServiceImpl.java new file mode 100644 index 0000000..ab187ca --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserAddressServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserAddressMapper; +import com.gxwebsoft.shop.service.UserAddressService; +import com.gxwebsoft.shop.entity.UserAddress; +import com.gxwebsoft.shop.param.UserAddressParam; +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 2022-11-25 19:04:43 + */ +@Service +public class UserAddressServiceImpl extends ServiceImpl implements UserAddressService { + + @Override + public PageResult pageRel(UserAddressParam 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(UserAddressParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserAddress getByIdRel(Integer addressId) { + UserAddressParam param = new UserAddressParam(); + param.setAddressId(addressId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserBalanceLogServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserBalanceLogServiceImpl.java new file mode 100644 index 0000000..ed533ce --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserBalanceLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserBalanceLogMapper; +import com.gxwebsoft.shop.service.UserBalanceLogService; +import com.gxwebsoft.shop.entity.UserBalanceLog; +import com.gxwebsoft.shop.param.UserBalanceLogParam; +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-04-21 15:59:09 + */ +@Service +public class UserBalanceLogServiceImpl extends ServiceImpl implements UserBalanceLogService { + + @Override + public PageResult pageRel(UserBalanceLogParam 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(UserBalanceLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserBalanceLog getByIdRel(Integer logId) { + UserBalanceLogParam param = new UserBalanceLogParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserCommentServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserCommentServiceImpl.java new file mode 100644 index 0000000..8fe11cb --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserCommentServiceImpl.java @@ -0,0 +1,65 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.core.utils.CommonUtil; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.shop.entity.UserComment; +import com.gxwebsoft.shop.entity.UserLike; +import com.gxwebsoft.shop.mapper.UserCommentMapper; +import com.gxwebsoft.shop.param.UserCommentParam; +import com.gxwebsoft.shop.service.UserCommentService; +import com.gxwebsoft.shop.service.UserLikeService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 用户评价记录表Service实现 + * + * @author 科技小王子 + * @since 2023-07-06 13:55:16 + */ +@Service +public class UserCommentServiceImpl extends ServiceImpl implements UserCommentService { + @Resource + private UserLikeService userLikeService; + + @Override + public PageResult pageRel(UserCommentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + if (param.getLoginUserId() != null) { + // 我点赞的人 + final List myLikes = userLikeService.list(new LambdaQueryWrapper().eq(UserLike::getUserId, param.getLoginUserId())); + System.out.println("myLikes = " + myLikes); + list.forEach(d -> { + final boolean isLike = myLikes.stream().anyMatch(f -> f.getToUserId().equals(param.getLoginUserId())); + d.setLikes(isLike); + }); + } + // List转为树形结构 + final List userComments = CommonUtil.toTreeData(list, 0, UserComment::getReplyCommentId, UserComment::getCommentId, UserComment::setChildren); + return new PageResult<>(userComments, page.getTotal()); + } + + @Override + public List listRel(UserCommentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserComment getByIdRel(Integer commentId) { + UserCommentParam param = new UserCommentParam(); + param.setCommentId(commentId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserCouponServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserCouponServiceImpl.java new file mode 100644 index 0000000..3c4239a --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserCouponServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserCouponMapper; +import com.gxwebsoft.shop.service.UserCouponService; +import com.gxwebsoft.shop.entity.UserCoupon; +import com.gxwebsoft.shop.param.UserCouponParam; +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 2022-11-25 19:04:43 + */ +@Service +public class UserCouponServiceImpl extends ServiceImpl implements UserCouponService { + + @Override + public PageResult pageRel(UserCouponParam 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(UserCouponParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserCoupon getByIdRel(Integer userCouponId) { + UserCouponParam param = new UserCouponParam(); + param.setUserCouponId(userCouponId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserFeedbackServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserFeedbackServiceImpl.java new file mode 100644 index 0000000..238ba47 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserFeedbackServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserFeedbackMapper; +import com.gxwebsoft.shop.service.UserFeedbackService; +import com.gxwebsoft.shop.entity.UserFeedback; +import com.gxwebsoft.shop.param.UserFeedbackParam; +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-07-16 22:24:55 + */ +@Service +public class UserFeedbackServiceImpl extends ServiceImpl implements UserFeedbackService { + + @Override + public PageResult pageRel(UserFeedbackParam 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(UserFeedbackParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserFeedback getByIdRel(Integer id) { + UserFeedbackParam param = new UserFeedbackParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserFollowServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserFollowServiceImpl.java new file mode 100644 index 0000000..f4ea116 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserFollowServiceImpl.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.shop.entity.UserFollow; +import com.gxwebsoft.shop.mapper.UserFollowMapper; +import com.gxwebsoft.shop.param.UserFollowParam; +import com.gxwebsoft.shop.service.UserFollowService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 关注记录表Service实现 + * + * @author 科技小王子 + * @since 2022-11-25 19:04:43 + */ +@Service +public class UserFollowServiceImpl extends ServiceImpl implements UserFollowService { + @Resource + UserFollowService userFollowService; + + @Override + public PageResult pageRel(UserFollowParam 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(UserFollowParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + // 我关注的人 + final List follows = userFollowService.list(new LambdaQueryWrapper().eq(UserFollow::getUserId, param.getLoginUserId())); + final Set collect = follows.stream().map(UserFollow::getShopId).collect(Collectors.toSet()); + System.out.println("collect = " + collect); + list.forEach(d -> { + d.setEachFollow(false); + for (Integer shopId : collect) { + if(Objects.equals(shopId, d.getUserId())){ + d.setEachFollow(true); + } + } + }); + return page.sortRecords(list); + } + + @Override + public UserFollow getByIdRel(Integer logId) { + UserFollowParam param = new UserFollowParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserGradeLogServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserGradeLogServiceImpl.java new file mode 100644 index 0000000..bccb1cf --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserGradeLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserGradeLogMapper; +import com.gxwebsoft.shop.service.UserGradeLogService; +import com.gxwebsoft.shop.entity.UserGradeLog; +import com.gxwebsoft.shop.param.UserGradeLogParam; +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-06-20 16:33:06 + */ +@Service +public class UserGradeLogServiceImpl extends ServiceImpl implements UserGradeLogService { + + @Override + public PageResult pageRel(UserGradeLogParam 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(UserGradeLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserGradeLog getByIdRel(Integer logId) { + UserGradeLogParam param = new UserGradeLogParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserGradeServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserGradeServiceImpl.java new file mode 100644 index 0000000..9847414 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserGradeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserGradeMapper; +import com.gxwebsoft.shop.service.UserGradeService; +import com.gxwebsoft.shop.entity.UserGrade; +import com.gxwebsoft.shop.param.UserGradeParam; +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-06-20 16:33:06 + */ +@Service +public class UserGradeServiceImpl extends ServiceImpl implements UserGradeService { + + @Override + public PageResult pageRel(UserGradeParam 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(UserGradeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserGrade getByIdRel(Integer gradeId) { + UserGradeParam param = new UserGradeParam(); + param.setGradeId(gradeId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserLikeServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserLikeServiceImpl.java new file mode 100644 index 0000000..34622f6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserLikeServiceImpl.java @@ -0,0 +1,48 @@ +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.shop.entity.UserLike; +import com.gxwebsoft.shop.mapper.UserLikeMapper; +import com.gxwebsoft.shop.param.UserLikeParam; +import com.gxwebsoft.shop.service.UserLikeService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 点赞记录表Service实现 + * + * @author 科技小王子 + * @since 2023-07-06 17:51:04 + */ +@Service +public class UserLikeServiceImpl extends ServiceImpl implements UserLikeService { + + @Override + public PageResult pageRel(UserLikeParam 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(UserLikeParam param) { + List list = baseMapper.selectListRel(param); + + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserLike getByIdRel(Integer logId) { + UserLikeParam param = new UserLikeParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserLookServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserLookServiceImpl.java new file mode 100644 index 0000000..b67bb06 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserLookServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserLookMapper; +import com.gxwebsoft.shop.service.UserLookService; +import com.gxwebsoft.shop.entity.UserLook; +import com.gxwebsoft.shop.param.UserLookParam; +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-07-13 23:10:38 + */ +@Service +public class UserLookServiceImpl extends ServiceImpl implements UserLookService { + + @Override + public PageResult pageRel(UserLookParam 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(UserLookParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserLook getByIdRel(Integer logId) { + UserLookParam param = new UserLookParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserOauthServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserOauthServiceImpl.java new file mode 100644 index 0000000..e32cec3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserOauthServiceImpl.java @@ -0,0 +1,90 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.shop.entity.Order; +import com.gxwebsoft.shop.mapper.UserOauthMapper; +import com.gxwebsoft.shop.param.OrderParam; +import com.gxwebsoft.shop.service.UserOauthService; +import com.gxwebsoft.shop.entity.UserOauth; +import com.gxwebsoft.shop.param.UserOauthParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import lombok.val; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 第三方用户信息表Service实现 + * + * @author 科技小王子 + * @since 2022-12-15 08:33:13 + */ +@Service +public class UserOauthServiceImpl extends ServiceImpl implements UserOauthService { + @Resource + private UserService userService; + @Resource + private UserOauthService userOauthService; + + @Override + public PageResult pageRel(UserOauthParam 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(UserOauthParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserOauth getByIdRel(Integer id) { + UserOauthParam param = new UserOauthParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + + @Override + public String getOauthIdByUserId(Integer userId, String platform) { + UserOauthParam param = new UserOauthParam(); + param.setUserId(userId); + param.setOauthType(platform); + return param.getOne(baseMapper.selectListRel(param)).getOauthId(); + } + + @Override + public User getByOauthId(String openid) { + UserOauth userOauth = query().eq("oauth_id", openid).one(); + if(userOauth == null){ + return null; + } + // 查询用户 + User user = userService.getById(userOauth.getUserId()); + if(user == null){ + // 如果用户不存在,则清理第三方信息 + userOauth.setDeleted(1); + userOauthService.save(userOauth); + } + return user; + } + + @Override + public UserOauth getByUnionId(UserOauthParam param) { + UserOauth userOauth = param.getOne(baseMapper.getOne(param)); + System.out.println("userOauth0 = " + userOauth); + if(userOauth == null){ + return null; + } + return userOauth; + } +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserPointsLogServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserPointsLogServiceImpl.java new file mode 100644 index 0000000..6186d05 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserPointsLogServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserPointsLogMapper; +import com.gxwebsoft.shop.service.UserPointsLogService; +import com.gxwebsoft.shop.entity.UserPointsLog; +import com.gxwebsoft.shop.param.UserPointsLogParam; +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 2022-11-25 19:04:43 + */ +@Service +public class UserPointsLogServiceImpl extends ServiceImpl implements UserPointsLogService { + + @Override + public PageResult pageRel(UserPointsLogParam 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(UserPointsLogParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserPointsLog getByIdRel(Integer logId) { + UserPointsLogParam param = new UserPointsLogParam(); + param.setLogId(logId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/shop/service/impl/UserRefereeServiceImpl.java b/src/main/java/com/gxwebsoft/shop/service/impl/UserRefereeServiceImpl.java new file mode 100644 index 0000000..49cdcf3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/shop/service/impl/UserRefereeServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.shop.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.shop.mapper.UserRefereeMapper; +import com.gxwebsoft.shop.service.UserRefereeService; +import com.gxwebsoft.shop.entity.UserReferee; +import com.gxwebsoft.shop.param.UserRefereeParam; +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-04-28 14:07:29 + */ +@Service +public class UserRefereeServiceImpl extends ServiceImpl implements UserRefereeService { + + @Override + public PageResult pageRel(UserRefereeParam 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(UserRefereeParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public UserReferee getByIdRel(Integer id) { + UserRefereeParam param = new UserRefereeParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerAccessoryController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerAccessoryController.java new file mode 100644 index 0000000..831beba --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerAccessoryController.java @@ -0,0 +1,132 @@ +package com.gxwebsoft.tower.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.tower.service.TowerAccessoryService; +import com.gxwebsoft.tower.entity.TowerAccessory; +import com.gxwebsoft.tower.param.TowerAccessoryParam; +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-05-22 11:53:48 + */ +@Api(tags = "配件管理管理") +@RestController +@RequestMapping("/api/tower/tower-accessory") +public class TowerAccessoryController extends BaseController { + @Resource + private TowerAccessoryService towerAccessoryService; + + @PreAuthorize("hasAuthority('tower:towerAccessory:list')") + @OperationLog + @ApiOperation("分页查询配件管理") + @GetMapping("/page") + public ApiResult> page(TowerAccessoryParam param) { + // 使用关联查询 + return success(towerAccessoryService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerAccessory:list')") + @OperationLog + @ApiOperation("查询全部配件管理") + @GetMapping() + public ApiResult> list(TowerAccessoryParam param) { + // 使用关联查询 + return success(towerAccessoryService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerAccessory:list')") + @OperationLog + @ApiOperation("根据id查询配件管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(towerAccessoryService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerAccessory:save')") + @OperationLog + @ApiOperation("添加配件管理") + @PostMapping() + public ApiResult save(@RequestBody TowerAccessory towerAccessory) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + towerAccessory.setUserId(loginUser.getUserId()); + } + if (towerAccessoryService.save(towerAccessory)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerAccessory:update')") + @OperationLog + @ApiOperation("修改配件管理") + @PutMapping() + public ApiResult update(@RequestBody TowerAccessory towerAccessory) { + if (towerAccessoryService.updateById(towerAccessory)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerAccessory:remove')") + @OperationLog + @ApiOperation("删除配件管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerAccessoryService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerAccessory:save')") + @OperationLog + @ApiOperation("批量添加配件管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerAccessoryService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerAccessory:update')") + @OperationLog + @ApiOperation("批量修改配件管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerAccessoryService, "accessory_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerAccessory:remove')") + @OperationLog + @ApiOperation("批量删除配件管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerAccessoryService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerEquipmentController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerEquipmentController.java new file mode 100644 index 0000000..0830015 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerEquipmentController.java @@ -0,0 +1,141 @@ +package com.gxwebsoft.tower.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.tower.entity.TowerEquipment; +import com.gxwebsoft.tower.param.TowerEquipmentParam; +import com.gxwebsoft.tower.service.TowerEquipmentService; +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-05-20 15:06:43 + */ +@Api(tags = "塔吊设备管理管理") +@RestController +@RequestMapping("/api/tower/tower-equipment") +public class TowerEquipmentController extends BaseController { + @Resource + private TowerEquipmentService towerEquipmentService; + + @PreAuthorize("hasAuthority('tower:towerEquipment:list')") + @OperationLog + @ApiOperation("分页查询塔吊设备管理") + @GetMapping("/page") + public ApiResult> page(TowerEquipmentParam param) { + // 使用关联查询 + return success(towerEquipmentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:list')") + @OperationLog + @ApiOperation("查询全部塔吊设备管理") + @GetMapping() + public ApiResult> list(TowerEquipmentParam param) { + // 使用关联查询 + return success(towerEquipmentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:list')") + @OperationLog + @ApiOperation("根据id查询塔吊设备管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(towerEquipmentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:save')") + @OperationLog + @ApiOperation("添加塔吊设备管理") + @PostMapping() + public ApiResult save(@RequestBody TowerEquipment towerEquipment) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + towerEquipment.setUserId(loginUser.getUserId()); + } + if (towerEquipmentService.save(towerEquipment)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:update')") + @OperationLog + @ApiOperation("修改塔吊设备管理") + @PutMapping() + public ApiResult update(@RequestBody TowerEquipment towerEquipment) { + if (towerEquipmentService.updateById(towerEquipment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:remove')") + @OperationLog + @ApiOperation("删除塔吊设备管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerEquipmentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:save')") + @OperationLog + @ApiOperation("批量添加塔吊设备管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerEquipmentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:update')") + @OperationLog + @ApiOperation("批量修改塔吊设备管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerEquipmentService, "equipment_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:remove')") + @OperationLog + @ApiOperation("批量删除塔吊设备管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerEquipmentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerEquipment:update')") + @OperationLog + @ApiOperation("批量修改塔吊设备状态") + @PutMapping("/status") + public ApiResult statusBatch(@RequestBody List batchParam) { + if (towerEquipmentService.updateBatchById(batchParam)) { + return success("修改成功"); + } + return fail("修改失败"); + } +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerModelController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerModelController.java new file mode 100644 index 0000000..caea15d --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerModelController.java @@ -0,0 +1,128 @@ +package com.gxwebsoft.tower.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.tower.entity.TowerModel; +import com.gxwebsoft.tower.param.TowerModelParam; +import com.gxwebsoft.tower.service.TowerModelService; +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-05-29 14:07:46 + */ +@Api(tags = "设备型号管理表管理") +@RestController +@RequestMapping("/api/tower/tower-model") +public class TowerModelController extends BaseController { + @Resource + private TowerModelService towerModelService; + + @PreAuthorize("hasAuthority('tower:towerModel:list')") + @OperationLog + @ApiOperation("分页查询设备型号管理表") + @GetMapping("/page") + public ApiResult> page(TowerModelParam param) { + // 使用关联查询 + return success(towerModelService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerModel:list')") + @OperationLog + @ApiOperation("查询全部设备型号管理表") + @GetMapping() + public ApiResult> list(TowerModelParam param) { + // 使用关联查询 + return success(towerModelService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerModel:list')") + @OperationLog + @ApiOperation("根据id查询设备型号管理表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(towerModelService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerModel:save')") + @OperationLog + @ApiOperation("添加设备型号管理表") + @PostMapping() + public ApiResult save(@RequestBody TowerModel towerModel) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + towerModel.setUserId(loginUser.getUserId()); + } + if (towerModelService.save(towerModel)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerModel:update')") + @OperationLog + @ApiOperation("修改设备型号管理表") + @PutMapping() + public ApiResult update(@RequestBody TowerModel towerModel) { + if (towerModelService.updateById(towerModel)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerModel:remove')") + @OperationLog + @ApiOperation("删除设备型号管理表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerModelService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerModel:save')") + @OperationLog + @ApiOperation("批量添加设备型号管理表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerModelService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerModel:update')") + @OperationLog + @ApiOperation("批量修改设备型号管理表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerModelService, "category_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerModel:remove')") + @OperationLog + @ApiOperation("批量删除设备型号管理表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerModelService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceController.java new file mode 100644 index 0000000..033aa73 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceController.java @@ -0,0 +1,157 @@ +package com.gxwebsoft.tower.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.tower.entity.TowerPlace; +import com.gxwebsoft.tower.entity.TowerPlaceStandard; +import com.gxwebsoft.tower.param.TowerPlaceParam; +import com.gxwebsoft.tower.service.TowerPlaceService; +import com.gxwebsoft.tower.service.TowerPlaceStandardService; +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-06-08 11:00:17 + */ +@Api(tags = "检查/保养部位记录表管理") +@RestController +@RequestMapping("/api/tower/tower-place") +public class TowerPlaceController extends BaseController { + @Resource + private TowerPlaceService towerPlaceService; + @Resource + private TowerPlaceStandardService towerPlaceStandardService; + + @PreAuthorize("hasAuthority('tower:towerPlace:list')") + @OperationLog + @ApiOperation("分页查询检查/保养部位记录表") + @GetMapping("/page") + public ApiResult> page(TowerPlaceParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(towerPlaceService.page(page, page.getWrapper())); + // 使用关联查询 +// return success(towerPlaceService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerPlace:list')") + @OperationLog + @ApiOperation("查询全部检查/保养部位记录表") + @GetMapping() + public ApiResult> list(TowerPlaceParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(towerPlaceService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(towerPlaceService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerPlace:list')") + @OperationLog + @ApiOperation("根据id查询检查/保养部位记录表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(towerPlaceService.getById(id)); + // 使用关联查询 + //return success(towerPlaceService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerPlace:save')") + @OperationLog + @ApiOperation("添加检查/保养部位记录表") + @PostMapping() + public ApiResult save(@RequestBody TowerPlace towerPlace) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + towerPlace.setUserId(loginUser.getUserId()); + } + if (towerPlaceService.save(towerPlace)) { + // 保存检查标准 + if (!towerPlace.getStandard().isEmpty()) { + final List standards = towerPlace.getStandard(); + standards.forEach(d->{ + d.setPlaceId(towerPlace.getPlaceId()); + }); + towerPlaceStandardService.saveBatch(standards); + } + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlace:update')") + @OperationLog + @ApiOperation("修改检查/保养部位记录表") + @PutMapping() + public ApiResult update(@RequestBody TowerPlace towerPlace) { + if (towerPlaceService.updateById(towerPlace)) { + // 更新检查标准 + if (!towerPlace.getStandard().isEmpty()) { + final List standards = towerPlace.getStandard(); + towerPlaceStandardService.saveOrUpdateBatch(standards); + } + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlace:remove')") + @OperationLog + @ApiOperation("删除检查/保养部位记录表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerPlaceService.removeById(id)) { + towerPlaceStandardService.remove(new LambdaQueryWrapper().eq(TowerPlaceStandard::getPlaceId,id)); + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlace:save')") + @OperationLog + @ApiOperation("批量添加检查/保养部位记录表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerPlaceService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlace:update')") + @OperationLog + @ApiOperation("批量修改检查/保养部位记录表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerPlaceService, "place_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlace:remove')") + @OperationLog + @ApiOperation("批量删除检查/保养部位记录表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerPlaceService.removeByIds(ids)) { + for (Integer id: ids){ + towerPlaceStandardService.remove(new LambdaQueryWrapper().eq(TowerPlaceStandard::getPlaceId,id)); + } + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceSafetyController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceSafetyController.java new file mode 100644 index 0000000..c2e01dc --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceSafetyController.java @@ -0,0 +1,135 @@ +package com.gxwebsoft.tower.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.tower.entity.TowerPlaceSafety; +import com.gxwebsoft.tower.param.TowerPlaceSafetyParam; +import com.gxwebsoft.tower.service.TowerPlaceSafetyService; +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-06-08 11:00:17 + */ +@Api(tags = "安全巡检部位管理表管理") +@RestController +@RequestMapping("/api/tower/tower-place-safety") +public class TowerPlaceSafetyController extends BaseController { + @Resource + private TowerPlaceSafetyService towerPlaceSafetyService; + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:list')") + @OperationLog + @ApiOperation("分页查询安全巡检部位管理表") + @GetMapping("/page") + public ApiResult> page(TowerPlaceSafetyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(towerPlaceSafetyService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(towerPlaceSafetyService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:list')") + @OperationLog + @ApiOperation("查询全部安全巡检部位管理表") + @GetMapping() + public ApiResult> list(TowerPlaceSafetyParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(towerPlaceSafetyService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(towerPlaceSafetyService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:list')") + @OperationLog + @ApiOperation("根据id查询安全巡检部位管理表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(towerPlaceSafetyService.getById(id)); + // 使用关联查询 + //return success(towerPlaceSafetyService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:save')") + @OperationLog + @ApiOperation("添加安全巡检部位管理表") + @PostMapping() + public ApiResult save(@RequestBody TowerPlaceSafety towerPlaceSafety) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + towerPlaceSafety.setUserId(loginUser.getUserId()); + } + if (towerPlaceSafetyService.save(towerPlaceSafety)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:update')") + @OperationLog + @ApiOperation("修改安全巡检部位管理表") + @PutMapping() + public ApiResult update(@RequestBody TowerPlaceSafety towerPlaceSafety) { + if (towerPlaceSafetyService.updateById(towerPlaceSafety)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:remove')") + @OperationLog + @ApiOperation("删除安全巡检部位管理表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerPlaceSafetyService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:save')") + @OperationLog + @ApiOperation("批量添加安全巡检部位管理表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerPlaceSafetyService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:update')") + @OperationLog + @ApiOperation("批量修改安全巡检部位管理表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerPlaceSafetyService, "place_safety_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceSafety:remove')") + @OperationLog + @ApiOperation("批量删除安全巡检部位管理表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerPlaceSafetyService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceStandardController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceStandardController.java new file mode 100644 index 0000000..62397ba --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerPlaceStandardController.java @@ -0,0 +1,129 @@ +package com.gxwebsoft.tower.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.tower.entity.TowerPlaceStandard; +import com.gxwebsoft.tower.param.TowerPlaceStandardParam; +import com.gxwebsoft.tower.service.TowerPlaceStandardService; +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-06-08 15:37:00 + */ +@Api(tags = "检查标准附件表管理") +@RestController +@RequestMapping("/api/tower/tower-place-standard") +public class TowerPlaceStandardController extends BaseController { + @Resource + private TowerPlaceStandardService towerPlaceStandardService; + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:list')") + @OperationLog + @ApiOperation("分页查询检查标准附件表") + @GetMapping("/page") + public ApiResult> page(TowerPlaceStandardParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(towerPlaceStandardService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(towerPlaceStandardService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:list')") + @OperationLog + @ApiOperation("查询全部检查标准附件表") + @GetMapping() + public ApiResult> list(TowerPlaceStandardParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(towerPlaceStandardService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(towerPlaceStandardService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:list')") + @OperationLog + @ApiOperation("根据id查询检查标准附件表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(towerPlaceStandardService.getById(id)); + // 使用关联查询 + //return success(towerPlaceStandardService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:save')") + @OperationLog + @ApiOperation("添加检查标准附件表") + @PostMapping() + public ApiResult save(@RequestBody TowerPlaceStandard towerPlaceStandard) { + if (towerPlaceStandardService.save(towerPlaceStandard)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:update')") + @OperationLog + @ApiOperation("修改检查标准附件表") + @PutMapping() + public ApiResult update(@RequestBody TowerPlaceStandard towerPlaceStandard) { + if (towerPlaceStandardService.updateById(towerPlaceStandard)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:remove')") + @OperationLog + @ApiOperation("删除检查标准附件表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerPlaceStandardService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:save')") + @OperationLog + @ApiOperation("批量添加检查标准附件表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerPlaceStandardService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:update')") + @OperationLog + @ApiOperation("批量修改检查标准附件表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerPlaceStandardService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerPlaceStandard:remove')") + @OperationLog + @ApiOperation("批量删除检查标准附件表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerPlaceStandardService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerProjectController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerProjectController.java new file mode 100644 index 0000000..6bfe7bf --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerProjectController.java @@ -0,0 +1,180 @@ +package com.gxwebsoft.tower.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.tower.entity.TowerProject; +import com.gxwebsoft.tower.entity.TowerProjectOrder; +import com.gxwebsoft.tower.entity.TowerProjectPlace; +import com.gxwebsoft.tower.entity.TowerProjectUser; +import com.gxwebsoft.tower.param.TowerProjectParam; +import com.gxwebsoft.tower.service.TowerProjectOrderService; +import com.gxwebsoft.tower.service.TowerProjectPlaceService; +import com.gxwebsoft.tower.service.TowerProjectService; +import com.gxwebsoft.tower.service.TowerProjectUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; +import java.util.Set; + +/** + * 项目管理控制器 + * + * @author 科技小王子 + * @since 2023-05-22 13:30:39 + */ +@Api(tags = "项目管理管理") +@RestController +@RequestMapping("/api/tower/tower-project") +public class TowerProjectController extends BaseController { + @Resource + private TowerProjectService towerProjectService; + @Resource + private TowerProjectOrderService towerProjectOrderService; + @Resource + private TowerProjectUserService towerProjectUserService; + @Resource + private TowerProjectPlaceService towerProjectPlaceService; + + @PreAuthorize("hasAuthority('tower:towerProject:list')") + @ApiOperation("分页查询项目管理") + @GetMapping("/page") + public ApiResult> page(TowerProjectParam param) { + // 使用关联查询 + return success(towerProjectService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerProject:list')") + @ApiOperation("查询全部项目管理") + @GetMapping() + public ApiResult> list(TowerProjectParam param) { + // 使用关联查询 + return success(towerProjectService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerProject:list')") + @ApiOperation("根据id查询项目管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(towerProjectService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerProject:save')") + @Transactional(rollbackFor = {Exception.class}) + @ApiOperation("添加项目管理") + @PostMapping() + public ApiResult save(@RequestBody TowerProject towerProject) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + towerProject.setUserId(loginUser.getUserId()); + } + System.out.println("towerProject = " + towerProject.getPlaces2()); + if (towerProjectService.save(towerProject)) { + final Integer projectId = towerProject.getProjectId(); + // 批量添加项目成员 + if (!towerProject.getUsers().isEmpty()) { + final Set users = towerProject.getUsers(); + users.forEach(d->{ + d.setProjectId(projectId); + }); + towerProjectUserService.saveBatch(users); + } + // 批量添加项目订单 + if (!towerProject.getOrders().isEmpty()) { + final Set orders = towerProject.getOrders(); + orders.forEach(d->{ + d.setProjectId(projectId); + }); + towerProjectOrderService.saveBatch(orders); + } + // 批量添加检查部位配置 + if (!towerProject.getPlaces1().isEmpty()) { + final Set places1 = towerProject.getPlaces1(); + places1.forEach(d->{ + d.setProjectId(projectId); + }); + towerProjectPlaceService.saveBatch(places1); + } + // 批量添加保养部位配置 + if (!towerProject.getPlaces2().isEmpty()) { + final Set places2 = towerProject.getPlaces2(); + places2.forEach(d->{ + d.setProjectId(projectId); + }); + towerProjectPlaceService.saveBatch(places2); + } + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProject:update')") + @Transactional(rollbackFor = {Exception.class}) + @ApiOperation("修改项目管理") + @PutMapping() + public ApiResult update(@RequestBody TowerProject towerProject) { + if (towerProjectService.updateById(towerProject)) { + // 批量修改项目成员 + towerProjectUserService.saveOrUpdateBatch(towerProject.getUsers()); + // 批量修改项目订单 + towerProjectOrderService.saveOrUpdateBatch(towerProject.getOrders()); + // 批量修改检查/保养部位配置 + towerProjectPlaceService.saveOrUpdateBatch(towerProject.getPlaces1()); + towerProjectPlaceService.saveOrUpdateBatch(towerProject.getPlaces2()); + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProject:remove')") + @ApiOperation("删除项目管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerProjectService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProject:save')") + @ApiOperation("批量添加项目管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerProjectService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProject:update')") + @ApiOperation("批量修改项目管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerProjectService, "project_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProject:remove')") + @OperationLog + @ApiOperation("批量删除项目管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerProjectService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerProjectOrderController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerProjectOrderController.java new file mode 100644 index 0000000..870010d --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerProjectOrderController.java @@ -0,0 +1,128 @@ +package com.gxwebsoft.tower.controller; + +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.*; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.tower.entity.TowerProjectOrder; +import com.gxwebsoft.tower.param.TowerProjectOrderParam; +import com.gxwebsoft.tower.service.TowerProjectOrderService; +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-06-07 18:48:56 + */ +@Api(tags = "合同签订设备清单管理") +@RestController +@RequestMapping("/api/tower/tower-project-order") +public class TowerProjectOrderController extends BaseController { + @Resource + private TowerProjectOrderService towerProjectOrderService; + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:list')") + @OperationLog + @ApiOperation("分页查询合同签订设备清单") + @GetMapping("/page") + public ApiResult> page(TowerProjectOrderParam param) { + // 使用关联查询 + return success(towerProjectOrderService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:list')") + @OperationLog + @ApiOperation("查询全部合同签订设备清单") + @GetMapping() + public ApiResult> list(TowerProjectOrderParam param) { + // 使用关联查询 + return success(towerProjectOrderService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:list')") + @OperationLog + @ApiOperation("根据id查询合同签订设备清单") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(towerProjectOrderService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:save')") + @OperationLog + @ApiOperation("添加合同签订设备清单") + @PostMapping() + public ApiResult save(@RequestBody TowerProjectOrder towerProjectOrder) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + towerProjectOrder.setUserId(loginUser.getUserId()); + } + if (towerProjectOrderService.save(towerProjectOrder)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:update')") + @OperationLog + @ApiOperation("修改合同签订设备清单") + @PutMapping() + public ApiResult update(@RequestBody TowerProjectOrder towerProjectOrder) { + if (towerProjectOrderService.updateById(towerProjectOrder)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:remove')") + @OperationLog + @ApiOperation("删除合同签订设备清单") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerProjectOrderService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:save')") + @OperationLog + @ApiOperation("批量添加合同签订设备清单") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerProjectOrderService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:update')") + @OperationLog + @ApiOperation("批量修改合同签订设备清单") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerProjectOrderService, "project_order_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectOrder:remove')") + @OperationLog + @ApiOperation("批量删除合同签订设备清单") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerProjectOrderService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerProjectPlaceController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerProjectPlaceController.java new file mode 100644 index 0000000..f634be0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerProjectPlaceController.java @@ -0,0 +1,130 @@ +package com.gxwebsoft.tower.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerProjectPlace; +import com.gxwebsoft.tower.param.TowerProjectPlaceParam; +import com.gxwebsoft.tower.service.TowerProjectPlaceService; +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-06-08 17:22:55 + */ +@Api(tags = "检查/保养部位配置表管理") +@RestController +@RequestMapping("/api/tower/tower-project-place") +public class TowerProjectPlaceController extends BaseController { + @Resource + private TowerProjectPlaceService towerProjectPlaceService; + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:list')") + @OperationLog + @ApiOperation("分页查询检查/保养部位配置表") + @GetMapping("/page") + public ApiResult> page(TowerProjectPlaceParam param) { + // 使用关联查询 + return success(towerProjectPlaceService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:list')") + @OperationLog + @ApiOperation("查询全部检查/保养部位配置表") + @GetMapping() + public ApiResult> list(TowerProjectPlaceParam param) { + // 使用关联查询 + return success(towerProjectPlaceService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:list')") + @OperationLog + @ApiOperation("根据id查询检查/保养部位配置表") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(towerProjectPlaceService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:save')") + @OperationLog + @ApiOperation("添加检查/保养部位配置表") + @PostMapping() + public ApiResult save(@RequestBody TowerProjectPlace towerProjectPlace) { + if (towerProjectPlaceService.count(new LambdaQueryWrapper() + .eq(TowerProjectPlace::getProjectId, towerProjectPlace.getProjectId()).eq(TowerProjectPlace::getPlaceId,towerProjectPlace.getPlaceId())) > 0) { + return fail("该部位已存在"); + } + if (towerProjectPlaceService.save(towerProjectPlace)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:update')") + @OperationLog + @ApiOperation("修改检查/保养部位配置表") + @PutMapping() + public ApiResult update(@RequestBody TowerProjectPlace towerProjectPlace) { + if (towerProjectPlaceService.updateById(towerProjectPlace)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:remove')") + @OperationLog + @ApiOperation("删除检查/保养部位配置表") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerProjectPlaceService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:save')") + @OperationLog + @ApiOperation("批量添加检查/保养部位配置表") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerProjectPlaceService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:update')") + @OperationLog + @ApiOperation("批量修改检查/保养部位配置表") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerProjectPlaceService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectPlace:remove')") + @OperationLog + @ApiOperation("批量删除检查/保养部位配置表") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerProjectPlaceService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerProjectUserController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerProjectUserController.java new file mode 100644 index 0000000..6eaafde --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerProjectUserController.java @@ -0,0 +1,130 @@ +package com.gxwebsoft.tower.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.gxwebsoft.common.core.annotation.OperationLog; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerProjectUser; +import com.gxwebsoft.tower.param.TowerProjectUserParam; +import com.gxwebsoft.tower.service.TowerProjectUserService; +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-06-07 15:00:32 + */ +@Api(tags = "项目成员管理") +@RestController +@RequestMapping("/api/tower/tower-project-user") +public class TowerProjectUserController extends BaseController { + @Resource + private TowerProjectUserService towerProjectUserService; + + @PreAuthorize("hasAuthority('tower:towerProjectUser:list')") + @OperationLog + @ApiOperation("分页查询项目成员") + @GetMapping("/page") + public ApiResult> page(TowerProjectUserParam param) { + // 使用关联查询 + return success(towerProjectUserService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectUser:list')") + @OperationLog + @ApiOperation("查询全部项目成员") + @GetMapping() + public ApiResult> list(TowerProjectUserParam param) { + // 使用关联查询 + return success(towerProjectUserService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectUser:list')") + @OperationLog + @ApiOperation("根据id查询项目成员") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(towerProjectUserService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerProjectUser:save')") + @OperationLog + @ApiOperation("添加项目成员") + @PostMapping() + public ApiResult save(@RequestBody TowerProjectUser towerProjectUser) { + if (towerProjectUserService.count(new LambdaQueryWrapper() + .eq(TowerProjectUser::getUserId, towerProjectUser.getUserId()).eq(TowerProjectUser::getProjectId,towerProjectUser.getProjectId())) > 0) { + return fail("该成员已存在"); + } + if (towerProjectUserService.save(towerProjectUser)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectUser:update')") + @OperationLog + @ApiOperation("修改项目成员") + @PutMapping() + public ApiResult update(@RequestBody TowerProjectUser towerProjectUser) { + if (towerProjectUserService.updateById(towerProjectUser)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectUser:remove')") + @OperationLog + @ApiOperation("删除项目成员") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerProjectUserService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectUser:save')") + @OperationLog + @ApiOperation("批量添加项目成员") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerProjectUserService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectUser:update')") + @OperationLog + @ApiOperation("批量修改项目成员") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerProjectUserService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerProjectUser:remove')") + @OperationLog + @ApiOperation("批量删除项目成员") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerProjectUserService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/controller/TowerWarehouseController.java b/src/main/java/com/gxwebsoft/tower/controller/TowerWarehouseController.java new file mode 100644 index 0000000..c2db02b --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/controller/TowerWarehouseController.java @@ -0,0 +1,132 @@ +package com.gxwebsoft.tower.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.tower.service.TowerWarehouseService; +import com.gxwebsoft.tower.entity.TowerWarehouse; +import com.gxwebsoft.tower.param.TowerWarehouseParam; +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-05-20 15:06:43 + */ +@Api(tags = "仓库管理管理") +@RestController +@RequestMapping("/api/tower/tower-warehouse") +public class TowerWarehouseController extends BaseController { + @Resource + private TowerWarehouseService towerWarehouseService; + + @PreAuthorize("hasAuthority('tower:towerWarehouse:list')") + @OperationLog + @ApiOperation("分页查询仓库管理") + @GetMapping("/page") + public ApiResult> page(TowerWarehouseParam param) { + // 使用关联查询 + return success(towerWarehouseService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerWarehouse:list')") + @OperationLog + @ApiOperation("查询全部仓库管理") + @GetMapping() + public ApiResult> list(TowerWarehouseParam param) { + // 使用关联查询 + return success(towerWarehouseService.listRel(param)); + } + + @PreAuthorize("hasAuthority('tower:towerWarehouse:list')") + @OperationLog + @ApiOperation("根据id查询仓库管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + // 使用关联查询 + return success(towerWarehouseService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('tower:towerWarehouse:save')") + @OperationLog + @ApiOperation("添加仓库管理") + @PostMapping() + public ApiResult save(@RequestBody TowerWarehouse towerWarehouse) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + towerWarehouse.setUserId(loginUser.getUserId()); + } + if (towerWarehouseService.save(towerWarehouse)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerWarehouse:update')") + @OperationLog + @ApiOperation("修改仓库管理") + @PutMapping() + public ApiResult update(@RequestBody TowerWarehouse towerWarehouse) { + if (towerWarehouseService.updateById(towerWarehouse)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerWarehouse:remove')") + @OperationLog + @ApiOperation("删除仓库管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (towerWarehouseService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('tower:towerWarehouse:save')") + @OperationLog + @ApiOperation("批量添加仓库管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (towerWarehouseService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('tower:towerWarehouse:update')") + @OperationLog + @ApiOperation("批量修改仓库管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(towerWarehouseService, "warehouse_id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('tower:towerWarehouse:remove')") + @OperationLog + @ApiOperation("批量删除仓库管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (towerWarehouseService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerAccessory.java b/src/main/java/com/gxwebsoft/tower/entity/TowerAccessory.java new file mode 100644 index 0000000..6c15a05 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerAccessory.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 配件管理 + * + * @author 科技小王子 + * @since 2023-05-22 11:53:48 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerAccessory对象", description = "配件管理") +public class TowerAccessory implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "accessory_id", type = IdType.AUTO) + private Integer accessoryId; + + @ApiModelProperty(value = "配件名称") + private String accessoryName; + + @ApiModelProperty(value = "配件编号") + private String accessoryNo; + + @ApiModelProperty(value = "配件分类") + private String accessoryCategory; + + @ApiModelProperty(value = "适用设备型号") + private String accessoryModel; + + @ApiModelProperty(value = "适用设备型号(多选)") + private String accessoryModelMultiple; + + @ApiModelProperty(value = "配件规格") + private String accessorySpecs; + + @ApiModelProperty(value = "单价") + private BigDecimal accessoryPrice; + + @ApiModelProperty(value = "配件单位") + private String accessoryUnit; + + @ApiModelProperty(value = "重量") + private String accessoryWeight; + + @ApiModelProperty(value = "库存总量") + private Integer accessoryStock; + + @ApiModelProperty(value = "产权单位名称") + private String companyName; + + @ApiModelProperty(value = "产权单位编号") + private String companyNo; + + @ApiModelProperty(value = "制造厂商") + private String manufactor; + + @ApiModelProperty(value = "制造厂商编号") + private String manufactorNo; + + @ApiModelProperty(value = "使用年限") + private String lifeYear; + + @ApiModelProperty(value = "出厂日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date factoryDate; + + @ApiModelProperty(value = "报废日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date scrapDate; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "所有人") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerEquipment.java b/src/main/java/com/gxwebsoft/tower/entity/TowerEquipment.java new file mode 100644 index 0000000..e0845ff --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerEquipment.java @@ -0,0 +1,160 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 塔吊设备管理 + * + * @author 科技小王子 + * @since 2023-05-20 15:06:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerEquipment对象", description = "塔吊设备管理") +public class TowerEquipment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "equipment_id", type = IdType.AUTO) + private Integer equipmentId; + + @ApiModelProperty(value = "设备名称") + private String name; + + @ApiModelProperty(value = "设备型号") + private String model; + + @ApiModelProperty(value = "设备编号") + private String equipmentNo; + + @ApiModelProperty(value = "出厂编号") + private String factoryNo; + + @ApiModelProperty(value = "出厂日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date factoryDate; + + @ApiModelProperty(value = "制造厂商") + private String manufactor; + + @ApiModelProperty(value = "使用年限") + private String lifeYear; + + @ApiModelProperty(value = "报废日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date scrapDate; + + @ApiModelProperty(value = "备案编号") + private String filingNo; + + @ApiModelProperty(value = "机号") + private String machineNo; + + @ApiModelProperty(value = "备案许可证号") + private String licenceNo; + + @ApiModelProperty(value = "产权单位") + private String company; + + @ApiModelProperty(value = "所属部门") + private String organization; + + @ApiModelProperty(value = "所属仓库") + private String warehouse; + + @ApiModelProperty(value = "设备来源") + private String source; + + @ApiModelProperty(value = "采购日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date buyDate; + + @ApiModelProperty(value = "当前位置") + private String currentLocation; + + @ApiModelProperty(value = "设计高度") + private String designHeight; + + @ApiModelProperty(value = "独立高度") + private String height; + + @ApiModelProperty(value = "额定载重") + private String ratedLoad; + + @ApiModelProperty(value = "最大幅度处额定载重") + private String maxRatedLoad; + + @ApiModelProperty(value = "最大起升高度") + private String maxLiftingHeight; + + @ApiModelProperty(value = "臂长") + private String armLength; + + @ApiModelProperty(value = "附件1") + private String file1; + + @ApiModelProperty(value = "附件2") + private String file2; + + @ApiModelProperty(value = "附件3") + private String file3; + + @ApiModelProperty(value = "附件4") + private String file4; + + @ApiModelProperty(value = "附件5") + private String file5; + + @ApiModelProperty(value = "附件6") + private String file6; + + @ApiModelProperty(value = "附件7") + private String file7; + + @ApiModelProperty(value = "当前位置") + private String address; + + @ApiModelProperty(value = "是否外协标识") + @TableField(exist = false) + private Boolean isOutOrg; + + @ApiModelProperty(value = "所属人员") + private String users; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "所有人") + private Integer userId; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerModel.java b/src/main/java/com/gxwebsoft/tower/entity/TowerModel.java new file mode 100644 index 0000000..6db1559 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerModel.java @@ -0,0 +1,70 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 设备型号管理表 + * + * @author 科技小王子 + * @since 2023-05-29 14:07:46 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerModel对象", description = "设备型号管理表") +public class TowerModel implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "型号ID") + @TableId(value = "model_id", type = IdType.AUTO) + private Integer modelId; + + @ApiModelProperty(value = "设备名称") + private String name; + + @ApiModelProperty(value = "设备型号") + private String model; + + @ApiModelProperty(value = "上级分类ID") + private Integer parentId; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "使用年限") + private Integer yearLife; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerPlace.java b/src/main/java/com/gxwebsoft/tower/entity/TowerPlace.java new file mode 100644 index 0000000..f73da0b --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerPlace.java @@ -0,0 +1,85 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * 检查/保养部位记录表 + * + * @author 科技小王子 + * @since 2023-06-08 11:00:17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerPlace对象", description = "检查/保养部位记录表") +public class TowerPlace implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "参数ID") + @TableId(value = "place_id", type = IdType.AUTO) + private Integer placeId; + + @ApiModelProperty(value = "部位编码") + private String placeCode; + + @ApiModelProperty(value = "设备类型") + private String equipmentType; + + @ApiModelProperty(value = "部位名称") + private String name; + + @ApiModelProperty(value = "检查/保养标准") + @TableField(exist = false) + private List standard; + + @ApiModelProperty(value = "部位类型") + private String type; + + @ApiModelProperty(value = "推送目标系统") + private String pushSystem; + + @ApiModelProperty(value = "其它项目对应值") + private String otherParam; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "是否默认显示") + private Integer isShow; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerPlaceSafety.java b/src/main/java/com/gxwebsoft/tower/entity/TowerPlaceSafety.java new file mode 100644 index 0000000..770406a --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerPlaceSafety.java @@ -0,0 +1,82 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 安全巡检部位管理表 + * + * @author 科技小王子 + * @since 2023-06-08 11:00:17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerPlaceSafety对象", description = "安全巡检部位管理表") +public class TowerPlaceSafety implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "参数ID") + @TableId(value = "place_safety_id", type = IdType.AUTO) + private Integer placeSafetyId; + + @ApiModelProperty(value = "部位编码") + private String placeCode; + + @ApiModelProperty(value = "设备类型") + private String equipmentType; + + @ApiModelProperty(value = "安全巡检部位名称") + private String name; + + @ApiModelProperty(value = "检查标准") + private String checkStandard; + + @ApiModelProperty(value = "部位类型") + private String type; + + @ApiModelProperty(value = "推送目标系统") + private String pushSystem; + + @ApiModelProperty(value = "其它项目对应值") + private String otherParam; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "是否默认显示") + private Integer isShow; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @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 = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerPlaceStandard.java b/src/main/java/com/gxwebsoft/tower/entity/TowerPlaceStandard.java new file mode 100644 index 0000000..cca3230 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerPlaceStandard.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 检查标准附件表 + * + * @author 科技小王子 + * @since 2023-06-08 15:37:00 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerPlaceStandard对象", description = "检查标准附件表") +public class TowerPlaceStandard implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "参数ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "用户ID") + private Integer placeId; + + @ApiModelProperty(value = "检查标准") + private String standard; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerProject.java b/src/main/java/com/gxwebsoft/tower/entity/TowerProject.java new file mode 100644 index 0000000..ddfb3e6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerProject.java @@ -0,0 +1,130 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; + +/** + * 项目管理 + * + * @author 科技小王子 + * @since 2023-05-22 13:30:39 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerProject对象", description = "项目管理") +public class TowerProject implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "project_id", type = IdType.AUTO) + private Integer projectId; + + @ApiModelProperty(value = "项目名称") + private String projectName; + + @ApiModelProperty(value = "项目图片") + private String projectImage; + + @ApiModelProperty(value = "租赁单位") + private String companyName; + + @ApiModelProperty(value = "承租单位") + private String customerName; + + @ApiModelProperty(value = "项目地址") + private String projectRegion; + + @ApiModelProperty(value = "详细地址") + private String projectAddress; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "报监编号") + private String superviseNo; + + @ApiModelProperty(value = "施工许可证") + private String licenceNo; + + @ApiModelProperty(value = "安全状态") + private String securityStatus; + + @ApiModelProperty(value = "主管部门") + private String competentDepartment; + + @ApiModelProperty(value = "安拆单位") + private String dismantlingCompany; + + @ApiModelProperty(value = "汽吊规格") + private String truckCraneSpecs; + + @ApiModelProperty(value = "合同其他说明") + private String contract; + + @ApiModelProperty(value = "项目负责人") + private String director; + + @ApiModelProperty(value = "项目经理") + private String projectDirector; + + @ApiModelProperty(value = "项目状态") + private String projectStatus; + + @ApiModelProperty(value = "业务员") + private String salesman; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "所有人") + private Integer userId; + + @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 Set users; + + @ApiModelProperty(value = "合同预定设备清单") + @TableField(exist = false) + private Set orders; + + @ApiModelProperty(value = "检查部位配置") + @TableField(exist = false) + private Set places1; + + @ApiModelProperty(value = "保养部位配置") + @TableField(exist = false) + private Set places2; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerProjectOrder.java b/src/main/java/com/gxwebsoft/tower/entity/TowerProjectOrder.java new file mode 100644 index 0000000..3a09d0e --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerProjectOrder.java @@ -0,0 +1,87 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 合同签订设备清单 + * + * @author 科技小王子 + * @since 2023-06-07 18:48:56 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerProjectOrder对象", description = "合同签订设备清单") +public class TowerProjectOrder implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "project_order_id", type = IdType.AUTO) + private Integer projectOrderId; + + @ApiModelProperty(value = "key") + @TableField(exist = false) + private String key; + + @ApiModelProperty(value = "项目ID") + private Integer projectId; + + @ApiModelProperty(value = "设备名称") + private String equipmentName; + + @ApiModelProperty(value = "规格型号") + private String equipmentModel; + + @ApiModelProperty(value = "签订数量") + private Integer equipmentNum; + + @ApiModelProperty(value = "单位") + private String unit; + + @ApiModelProperty(value = "预计进场时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date startTime; + + @ApiModelProperty(value = "预计退场时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date endTime; + + @ApiModelProperty(value = "出厂年限") + private String year; + + @ApiModelProperty(value = "对应资料员") + private String documenter; + + @ApiModelProperty(value = "状态") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerProjectPlace.java b/src/main/java/com/gxwebsoft/tower/entity/TowerProjectPlace.java new file mode 100644 index 0000000..c79412f --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerProjectPlace.java @@ -0,0 +1,60 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 检查/保养部位配置表 + * + * @author 科技小王子 + * @since 2023-06-08 17:22:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerProjectPlace对象", description = "检查/保养部位配置表") +public class TowerProjectPlace implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "项目ID") + private Integer projectId; + + @ApiModelProperty(value = "部位ID") + private Integer placeId; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "部位编码") + @TableField(exist = false) + private String placeCode; + + @ApiModelProperty(value = "设备名称") + @TableField(exist = false) + private String equipmentType; + + @ApiModelProperty(value = "检查部位") + @TableField(exist = false) + private String name; + + @ApiModelProperty(value = "部位类型") + @TableField(exist = false) + private String type; +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerProjectUser.java b/src/main/java/com/gxwebsoft/tower/entity/TowerProjectUser.java new file mode 100644 index 0000000..129b289 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerProjectUser.java @@ -0,0 +1,72 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 项目成员 + * + * @author 科技小王子 + * @since 2023-06-07 15:00:32 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerProjectUser对象", description = "项目成员") +public class TowerProjectUser implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "角色,10可见成员 20项目成员 30管理员 ") + private Integer role; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "项目ID") + private Integer projectId; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + private Integer status; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "注册时间") + private Date createTime; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户名") + @TableField(exist = false) + private String username; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "邮箱") + @TableField(exist = false) + private String email; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + + @ApiModelProperty(value = "所在部门") + @TableField(exist = false) + private String organizationName; + +} diff --git a/src/main/java/com/gxwebsoft/tower/entity/TowerWarehouse.java b/src/main/java/com/gxwebsoft/tower/entity/TowerWarehouse.java new file mode 100644 index 0000000..b4a15ca --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/entity/TowerWarehouse.java @@ -0,0 +1,88 @@ +package com.gxwebsoft.tower.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.Date; + +/** + * 仓库管理 + * + * @author 科技小王子 + * @since 2023-05-20 15:06:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "TowerWarehouse对象", description = "仓库管理") +public class TowerWarehouse implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @TableId(value = "warehouse_id", type = IdType.AUTO) + private Integer warehouseId; + + @ApiModelProperty(value = "仓库名称") + private String warehouseName; + + @ApiModelProperty(value = "负责人") + private String warehouseKeeper; + + @ApiModelProperty(value = "联系电话") + private String warehousePhone; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "区域名称") + private String regionName; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序(数字越小越靠前)") + private Integer sortNumber; + + @ApiModelProperty(value = "所有人") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerAccessoryMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerAccessoryMapper.java new file mode 100644 index 0000000..b57c669 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerAccessoryMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerAccessory; +import com.gxwebsoft.tower.param.TowerAccessoryParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 配件管理Mapper + * + * @author 科技小王子 + * @since 2023-05-22 11:53:48 + */ +public interface TowerAccessoryMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerAccessoryParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerAccessoryParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerEquipmentMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerEquipmentMapper.java new file mode 100644 index 0000000..6ca0886 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerEquipmentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerEquipment; +import com.gxwebsoft.tower.param.TowerEquipmentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 塔吊设备管理Mapper + * + * @author 科技小王子 + * @since 2023-05-20 15:06:43 + */ +public interface TowerEquipmentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerEquipmentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerEquipmentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerModelMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerModelMapper.java new file mode 100644 index 0000000..d483b6c --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerModelMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerModel; +import com.gxwebsoft.tower.param.TowerModelParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 设备型号管理表Mapper + * + * @author 科技小王子 + * @since 2023-05-29 14:07:46 + */ +public interface TowerModelMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerModelParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerModelParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceMapper.java new file mode 100644 index 0000000..df44d63 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerPlace; +import com.gxwebsoft.tower.param.TowerPlaceParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 检查/保养部位记录表Mapper + * + * @author 科技小王子 + * @since 2023-06-08 11:00:17 + */ +public interface TowerPlaceMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerPlaceParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerPlaceParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceSafetyMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceSafetyMapper.java new file mode 100644 index 0000000..bd1fd3c --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceSafetyMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerPlaceSafety; +import com.gxwebsoft.tower.param.TowerPlaceSafetyParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 安全巡检部位管理表Mapper + * + * @author 科技小王子 + * @since 2023-06-08 11:00:17 + */ +public interface TowerPlaceSafetyMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerPlaceSafetyParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerPlaceSafetyParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceStandardMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceStandardMapper.java new file mode 100644 index 0000000..df9460f --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerPlaceStandardMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerPlaceStandard; +import com.gxwebsoft.tower.param.TowerPlaceStandardParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 检查标准附件表Mapper + * + * @author 科技小王子 + * @since 2023-06-08 15:37:00 + */ +public interface TowerPlaceStandardMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerPlaceStandardParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerPlaceStandardParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectMapper.java new file mode 100644 index 0000000..b1002e6 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerProject; +import com.gxwebsoft.tower.param.TowerProjectParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 项目管理Mapper + * + * @author 科技小王子 + * @since 2023-05-22 13:30:39 + */ +public interface TowerProjectMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerProjectParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerProjectParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectOrderMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectOrderMapper.java new file mode 100644 index 0000000..c942a9a --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectOrderMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerProjectOrder; +import com.gxwebsoft.tower.param.TowerProjectOrderParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 合同签订设备清单Mapper + * + * @author 科技小王子 + * @since 2023-06-07 18:48:56 + */ +public interface TowerProjectOrderMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerProjectOrderParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerProjectOrderParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectPlaceMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectPlaceMapper.java new file mode 100644 index 0000000..6cd19d0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectPlaceMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerProjectPlace; +import com.gxwebsoft.tower.param.TowerProjectPlaceParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 检查/保养部位配置表Mapper + * + * @author 科技小王子 + * @since 2023-06-08 17:22:55 + */ +public interface TowerProjectPlaceMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerProjectPlaceParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerProjectPlaceParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectUserMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectUserMapper.java new file mode 100644 index 0000000..1adb753 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerProjectUserMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerProjectUser; +import com.gxwebsoft.tower.param.TowerProjectUserParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 项目成员Mapper + * + * @author 科技小王子 + * @since 2023-06-07 15:00:32 + */ +public interface TowerProjectUserMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerProjectUserParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerProjectUserParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/TowerWarehouseMapper.java b/src/main/java/com/gxwebsoft/tower/mapper/TowerWarehouseMapper.java new file mode 100644 index 0000000..6a92b52 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/TowerWarehouseMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.tower.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.tower.entity.TowerWarehouse; +import com.gxwebsoft.tower.param.TowerWarehouseParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 仓库管理Mapper + * + * @author 科技小王子 + * @since 2023-05-20 15:06:43 + */ +public interface TowerWarehouseMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") TowerWarehouseParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") TowerWarehouseParam param); + +} diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerAccessoryMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerAccessoryMapper.xml new file mode 100644 index 0000000..6c49f5e --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerAccessoryMapper.xml @@ -0,0 +1,96 @@ + + + + + + + SELECT a.* + FROM tower_accessory a + + + AND a.accessory_id = #{param.accessoryId} + + + AND a.accessory_name LIKE CONCAT('%', #{param.accessoryName}, '%') + + + AND a.accessory_category LIKE CONCAT('%', #{param.accessoryCategory}, '%') + + + AND a.accessory_model LIKE CONCAT('%', #{param.accessoryModel}, '%') + + + AND a.accessory_specs LIKE CONCAT('%', #{param.accessorySpecs}, '%') + + + AND a.accessory_price = #{param.accessoryPrice} + + + AND a.accessory_unit LIKE CONCAT('%', #{param.accessoryUnit}, '%') + + + AND a.accessory_stock LIKE CONCAT('%', #{param.accessoryStock}, '%') + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.manufactor LIKE CONCAT('%', #{param.manufactor}, '%') + + + AND a.manufactor_no LIKE CONCAT('%', #{param.manufactorNo}, '%') + + + AND a.life_year LIKE CONCAT('%', #{param.lifeYear}, '%') + + + AND a.factory_date LIKE CONCAT('%', #{param.factoryDate}, '%') + + + AND a.scrap_date LIKE CONCAT('%', #{param.scrapDate}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + a.accessory_name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.accessory_no LIKE CONCAT('%', #{param.keywords}, '%') + OR a.company_name LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerEquipmentMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerEquipmentMapper.xml new file mode 100644 index 0000000..c7a2c93 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerEquipmentMapper.xml @@ -0,0 +1,115 @@ + + + + + + + SELECT a.* + FROM tower_equipment a + + + AND a.equipment_id = #{param.equipmentId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.model LIKE CONCAT('%', #{param.model}, '%') + + + AND a.equipment_no LIKE CONCAT('%', #{param.equipmentNo}, '%') + + + AND a.factory_no LIKE CONCAT('%', #{param.factoryNo}, '%') + + + AND a.factory_date LIKE CONCAT('%', #{param.factoryDate}, '%') + + + AND a.manufactor LIKE CONCAT('%', #{param.manufactor}, '%') + + + AND a.life_year LIKE CONCAT('%', #{param.lifeYear}, '%') + + + AND a.scrap_date LIKE CONCAT('%', #{param.scrapDate}, '%') + + + AND a.licence_no LIKE CONCAT('%', #{param.licenceNo}, '%') + + + AND a.company = #{param.company} + + + AND a.organization = #{param.organization} + + + AND a.warehouse = #{param.warehouse} + + + AND a.source LIKE CONCAT('%', #{param.source}, '%') + + + AND a.buy_date LIKE CONCAT('%', #{param.buyDate}, '%') + + + AND a.current_location LIKE CONCAT('%', #{param.currentLocation}, '%') + + + AND a.design_height LIKE CONCAT('%', #{param.designHeight}, '%') + + + AND a.height LIKE CONCAT('%', #{param.height}, '%') + + + AND a.rated_load LIKE CONCAT('%', #{param.ratedLoad}, '%') + + + AND a.max_rated_load LIKE CONCAT('%', #{param.maxRatedLoad}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + a.name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.model LIKE CONCAT('%', #{param.keywords}, '%') + OR a.equipment_no LIKE CONCAT('%', #{param.keywords}, '%') + OR a.company LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerModelMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerModelMapper.xml new file mode 100644 index 0000000..ee0ae23 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerModelMapper.xml @@ -0,0 +1,71 @@ + + + + + + + SELECT a.* + FROM tower_model a + + + AND a.model_id = #{param.modelId} + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.model LIKE CONCAT('%', #{param.model}, '%') + + + AND a.parent_id = #{param.parentId} + + + AND a.image LIKE CONCAT('%', #{param.image}, '%') + + + AND a.user_id = #{param.userId} + + + AND a.year_life = #{param.yearLife} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + a.name LIKE CONCAT('%', #{param.keywords}, '%') + OR a.model LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceMapper.xml new file mode 100644 index 0000000..6fed629 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceMapper.xml @@ -0,0 +1,83 @@ + + + + + + + SELECT a.* + FROM tower_place a + + + AND a.place_id = #{param.placeId} + + + AND a.place_code LIKE CONCAT('%', #{param.placeCode}, '%') + + + AND a.equipment_type LIKE CONCAT('%', #{param.equipmentType}, '%') + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.standard LIKE CONCAT('%', #{param.standard}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.push_system LIKE CONCAT('%', #{param.pushSystem}, '%') + + + AND a.other_param LIKE CONCAT('%', #{param.otherParam}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.is_show = #{param.isShow} + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.equipment_type LIKE CONCAT('%', #{param.keywords}, '%') + OR a.place_code = #{param.keywords} + OR a.name #{param.keywords} + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceSafetyMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceSafetyMapper.xml new file mode 100644 index 0000000..82e35d1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceSafetyMapper.xml @@ -0,0 +1,77 @@ + + + + + + + SELECT a.* + FROM tower_place_safety a + + + AND a.place_safety_id = #{param.placeSafetyId} + + + AND a.place_code LIKE CONCAT('%', #{param.placeCode}, '%') + + + AND a.equipment_type LIKE CONCAT('%', #{param.equipmentType}, '%') + + + AND a.name LIKE CONCAT('%', #{param.name}, '%') + + + AND a.check_standard LIKE CONCAT('%', #{param.checkStandard}, '%') + + + AND a.type LIKE CONCAT('%', #{param.type}, '%') + + + AND a.push_system LIKE CONCAT('%', #{param.pushSystem}, '%') + + + AND a.other_param LIKE CONCAT('%', #{param.otherParam}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.is_show = #{param.isShow} + + + AND a.user_id = #{param.userId} + + + 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.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceStandardMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceStandardMapper.xml new file mode 100644 index 0000000..51988a5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerPlaceStandardMapper.xml @@ -0,0 +1,44 @@ + + + + + + + SELECT a.* + FROM tower_place_standard a + + + AND a.id = #{param.id} + + + AND a.place_id = #{param.placeId} + + + AND a.standard LIKE CONCAT('%', #{param.standard}, '%') + + + AND a.files LIKE CONCAT('%', #{param.files}, '%') + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectMapper.xml new file mode 100644 index 0000000..6819f21 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectMapper.xml @@ -0,0 +1,104 @@ + + + + + + + SELECT a.* + FROM tower_project a + + + AND a.project_id = #{param.projectId} + + + AND a.project_name LIKE CONCAT('%', #{param.projectName}, '%') + + + AND a.company_name LIKE CONCAT('%', #{param.companyName}, '%') + + + AND a.customer_name LIKE CONCAT('%', #{param.customerName}, '%') + + + AND a.project_region LIKE CONCAT('%', #{param.projectRegion}, '%') + + + AND a.project_address LIKE CONCAT('%', #{param.projectAddress}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.supervise_no LIKE CONCAT('%', #{param.superviseNo}, '%') + + + AND a.licence_no LIKE CONCAT('%', #{param.licenceNo}, '%') + + + AND a.security_status LIKE CONCAT('%', #{param.securityStatus}, '%') + + + AND a.competent_department LIKE CONCAT('%', #{param.competentDepartment}, '%') + + + AND a.dismantling_company LIKE CONCAT('%', #{param.dismantlingCompany}, '%') + + + AND a.truck_crane_specs LIKE CONCAT('%', #{param.truckCraneSpecs}, '%') + + + AND a.contract LIKE CONCAT('%', #{param.contract}, '%') + + + AND a.director = #{param.director} + + + AND a.project_director LIKE CONCAT('%', #{param.projectDirector}, '%') + + + AND a.project_status LIKE CONCAT('%', #{param.projectStatus}, '%') + + + AND a.salesman LIKE CONCAT('%', #{param.salesman}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectOrderMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectOrderMapper.xml new file mode 100644 index 0000000..7549e71 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectOrderMapper.xml @@ -0,0 +1,77 @@ + + + + + + + SELECT a.* + FROM tower_project_order a + + + AND a.project_order_id = #{param.projectOrderId} + + + AND a.project_id = #{param.projectId} + + + AND a.equipment_name LIKE CONCAT('%', #{param.equipmentName}, '%') + + + AND a.equipment_model LIKE CONCAT('%', #{param.equipmentModel}, '%') + + + AND a.equipment_num = #{param.equipmentNum} + + + AND a.unit LIKE CONCAT('%', #{param.unit}, '%') + + + AND a.start_time LIKE CONCAT('%', #{param.startTime}, '%') + + + AND a.end_time LIKE CONCAT('%', #{param.endTime}, '%') + + + AND a.year LIKE CONCAT('%', #{param.year}, '%') + + + AND a.documenter LIKE CONCAT('%', #{param.documenter}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectPlaceMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectPlaceMapper.xml new file mode 100644 index 0000000..dc461fe --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectPlaceMapper.xml @@ -0,0 +1,50 @@ + + + + + + + SELECT a.*,b.name,b.place_code,b.place_id,b.equipment_type,b.type + FROM tower_project_place a + LEFT JOIN tower_place b ON a.place_id = b.place_id + + + AND a.id = #{param.id} + + + AND a.project_id = #{param.projectId} + + + AND a.place_id = #{param.placeId} + + + AND a.sort_number = #{param.sortNumber} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND ( + b.name LIKE CONCAT('%', #{param.keywords}, '%') + OR b.place_code LIKE CONCAT('%', #{param.keywords}, '%') + OR b.type LIKE CONCAT('%', #{param.keywords}, '%') + OR b.equipment_type LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectUserMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectUserMapper.xml new file mode 100644 index 0000000..d74c770 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerProjectUserMapper.xml @@ -0,0 +1,53 @@ + + + + + + + SELECT a.*, b.nickname,b.email,b.phone,b.avatar,c.organization_name + FROM tower_project_user a + LEFT JOIN sys_user b ON a.user_id = b.user_id + LEFT JOIN sys_organization c ON b.organization_id = c.organization_id + + + AND a.id = #{param.id} + + + AND a.role = #{param.role} + + + AND a.user_id = #{param.userId} + + + AND a.project_id = #{param.projectId} + + + AND a.status = #{param.status} + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (b.nickname LIKE CONCAT('%', #{param.keywords}, '%') + OR b.email LIKE CONCAT('%', #{param.keywords}, '%') + OR b.username LIKE CONCAT('%', #{param.keywords}, '%') + OR b.phone LIKE CONCAT('%', #{param.keywords}, '%') + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerWarehouseMapper.xml b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerWarehouseMapper.xml new file mode 100644 index 0000000..08b47b3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/mapper/xml/TowerWarehouseMapper.xml @@ -0,0 +1,87 @@ + + + + + + + SELECT a.* + FROM tower_warehouse a + + + AND a.warehouse_id = #{param.warehouseId} + + + AND a.warehouse_name LIKE CONCAT('%', #{param.warehouseName}, '%') + + + AND a.warehouse_keeper LIKE CONCAT('%', #{param.warehouseKeeper}, '%') + + + AND a.warehouse_phone LIKE CONCAT('%', #{param.warehousePhone}, '%') + + + AND a.longitude LIKE CONCAT('%', #{param.longitude}, '%') + + + AND a.latitude LIKE CONCAT('%', #{param.latitude}, '%') + + + AND a.country LIKE CONCAT('%', #{param.country}, '%') + + + AND a.province LIKE CONCAT('%', #{param.province}, '%') + + + AND a.city LIKE CONCAT('%', #{param.city}, '%') + + + AND a.region LIKE CONCAT('%', #{param.region}, '%') + + + AND a.address LIKE CONCAT('%', #{param.address}, '%') + + + AND a.region_name LIKE CONCAT('%', #{param.regionName}, '%') + + + AND a.status = #{param.status} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.username = #{param.username} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + AND (a.title LIKE CONCAT('%', #{param.keywords}, '%') + OR a.warehouse_name = #{param.keywords + OR a.warehouse_keeper = #{param.keywords} + OR a.warehouse_phone = #{param.keywords} + ) + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerAccessoryParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerAccessoryParam.java new file mode 100644 index 0000000..c8326ac --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerAccessoryParam.java @@ -0,0 +1,90 @@ +package com.gxwebsoft.tower.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-05-22 11:53:48 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerAccessoryParam对象", description = "配件管理查询参数") +public class TowerAccessoryParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer accessoryId; + + @ApiModelProperty(value = "配件名称") + private String accessoryName; + + @ApiModelProperty(value = "配件分类") + private String accessoryCategory; + + @ApiModelProperty(value = "适用设备型号") + private String accessoryModel; + + @ApiModelProperty(value = "配件规格") + private String accessorySpecs; + + @ApiModelProperty(value = "单价") + @QueryField(type = QueryType.EQ) + private BigDecimal accessoryPrice; + + @ApiModelProperty(value = "配件单位") + private String accessoryUnit; + + @ApiModelProperty(value = "库存总量") + private String accessoryStock; + + @ApiModelProperty(value = "产权单位名称") + private String companyName; + + @ApiModelProperty(value = "制造厂商") + private String manufactor; + + @ApiModelProperty(value = "制造厂商编号") + private String manufactorNo; + + @ApiModelProperty(value = "使用年限") + private String lifeYear; + + @ApiModelProperty(value = "出厂日期") + private String factoryDate; + + @ApiModelProperty(value = "报废日期") + private String scrapDate; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "所有人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerEquipmentParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerEquipmentParam.java new file mode 100644 index 0000000..b3df3fe --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerEquipmentParam.java @@ -0,0 +1,110 @@ +package com.gxwebsoft.tower.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; + +/** + * 塔吊设备管理查询参数 + * + * @author 科技小王子 + * @since 2023-05-20 15:06:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerEquipmentParam对象", description = "塔吊设备管理查询参数") +public class TowerEquipmentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer equipmentId; + + @ApiModelProperty(value = "设备名称") + private String name; + + @ApiModelProperty(value = "设备型号") + private String model; + + @ApiModelProperty(value = "设备编号") + private String equipmentNo; + + @ApiModelProperty(value = "出厂编号") + private String factoryNo; + + @ApiModelProperty(value = "出厂日期") + private String factoryDate; + + @ApiModelProperty(value = "制造厂商") + private String manufactor; + + @ApiModelProperty(value = "使用年限") + private String lifeYear; + + @ApiModelProperty(value = "报废日期") + private String scrapDate; + + @ApiModelProperty(value = "备案许可证号") + private String licenceNo; + + @ApiModelProperty(value = "产权单位") + @QueryField(type = QueryType.EQ) + private String company; + + @ApiModelProperty(value = "产权单位名称") + private String propertyCompany; + + @ApiModelProperty(value = "所属部门") + @QueryField(type = QueryType.EQ) + private String organization; + + @ApiModelProperty(value = "所属仓库") + @QueryField(type = QueryType.EQ) + private String warehouse; + + @ApiModelProperty(value = "设备来源") + private String source; + + @ApiModelProperty(value = "采购日期") + private String buyDate; + + @ApiModelProperty(value = "当前位置") + private String currentLocation; + + @ApiModelProperty(value = "设计高度") + private String designHeight; + + @ApiModelProperty(value = "独立高度") + private String height; + + @ApiModelProperty(value = "额定载重") + private String ratedLoad; + + @ApiModelProperty(value = "最大幅度处额定载重") + private String maxRatedLoad; + + @ApiModelProperty(value = "附件信息") + private String files; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "所有人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerModelParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerModelParam.java new file mode 100644 index 0000000..970767e --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerModelParam.java @@ -0,0 +1,64 @@ +package com.gxwebsoft.tower.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; + +/** + * 设备型号管理表查询参数 + * + * @author 科技小王子 + * @since 2023-05-29 14:07:46 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerModelParam对象", description = "设备型号管理表查询参数") +public class TowerModelParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "型号ID") + @QueryField(type = QueryType.EQ) + private Integer modelId; + + @ApiModelProperty(value = "设备名称") + private String name; + + @ApiModelProperty(value = "设备型号") + private String model; + + @ApiModelProperty(value = "上级分类ID") + @QueryField(type = QueryType.EQ) + private Integer parentId; + + @ApiModelProperty(value = "分类图片") + private String image; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "使用年限") + private Integer yearLife; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerPlaceParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerPlaceParam.java new file mode 100644 index 0000000..3800102 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerPlaceParam.java @@ -0,0 +1,81 @@ +package com.gxwebsoft.tower.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 com.gxwebsoft.tower.entity.TowerPlaceStandard; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * 检查/保养部位记录表查询参数 + * + * @author 科技小王子 + * @since 2023-06-08 11:00:17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerPlaceParam对象", description = "检查/保养部位记录表查询参数") +public class TowerPlaceParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "参数ID") + @QueryField(type = QueryType.EQ) + private Integer placeId; + + @ApiModelProperty(value = "部位编码") + private String placeCode; + + @ApiModelProperty(value = "设备类型") + private String equipmentType; + + @ApiModelProperty(value = "部位名称") + private String name; + + @ApiModelProperty(value = "检查/保养标准") + @TableField(exist = false) + private List standard; + + @ApiModelProperty(value = "部位类型") + private String type; + + @ApiModelProperty(value = "推送目标系统") + private String pushSystem; + + @ApiModelProperty(value = "其它项目对应值") + private String otherParam; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "是否默认显示") + @QueryField(type = QueryType.EQ) + private Integer isShow; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerPlaceSafetyParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerPlaceSafetyParam.java new file mode 100644 index 0000000..0385285 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerPlaceSafetyParam.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.tower.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; + +/** + * 安全巡检部位管理表查询参数 + * + * @author 科技小王子 + * @since 2023-06-08 11:00:17 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerPlaceSafetyParam对象", description = "安全巡检部位管理表查询参数") +public class TowerPlaceSafetyParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "参数ID") + @QueryField(type = QueryType.EQ) + private Integer placeSafetyId; + + @ApiModelProperty(value = "部位编码") + private String placeCode; + + @ApiModelProperty(value = "设备类型") + private String equipmentType; + + @ApiModelProperty(value = "安全巡检部位名称") + private String name; + + @ApiModelProperty(value = "检查标准") + private String checkStandard; + + @ApiModelProperty(value = "部位类型") + private String type; + + @ApiModelProperty(value = "推送目标系统") + private String pushSystem; + + @ApiModelProperty(value = "其它项目对应值") + private String otherParam; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "是否默认显示") + @QueryField(type = QueryType.EQ) + private Integer isShow; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @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; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerPlaceStandardParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerPlaceStandardParam.java new file mode 100644 index 0000000..8e13943 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerPlaceStandardParam.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.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; + +/** + * 检查标准附件表查询参数 + * + * @author 科技小王子 + * @since 2023-06-08 15:37:00 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerPlaceStandardParam对象", description = "检查标准附件表查询参数") +public class TowerPlaceStandardParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "参数ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer placeId; + + @ApiModelProperty(value = "检查标准") + private String standard; + + @ApiModelProperty(value = "附件") + private String files; + + @ApiModelProperty(value = "备注") + private String comments; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerProjectOrderParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerProjectOrderParam.java new file mode 100644 index 0000000..2864a5c --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerProjectOrderParam.java @@ -0,0 +1,87 @@ +package com.gxwebsoft.tower.param; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +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 com.gxwebsoft.tower.entity.TowerProjectOrder; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * 合同签订设备清单查询参数 + * + * @author 科技小王子 + * @since 2023-06-07 18:48:56 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerProjectOrderParam对象", description = "合同签订设备清单查询参数") +public class TowerProjectOrderParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer projectOrderId; + + @ApiModelProperty(value = "项目ID") + private Integer projectId; + + @ApiModelProperty(value = "设备名称") + private String equipmentName; + + @ApiModelProperty(value = "规格型号") + private String equipmentModel; + + @ApiModelProperty(value = "签订数量") + @QueryField(type = QueryType.EQ) + private Integer equipmentNum; + + @ApiModelProperty(value = "单位") + private String unit; + + @ApiModelProperty(value = "预计进场时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private String startTime; + + @ApiModelProperty(value = "预计退场时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private String endTime; + + @ApiModelProperty(value = "出厂年限") + private String year; + + @ApiModelProperty(value = "对应资料员") + private String documenter; + + @ApiModelProperty(value = "状态") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "合同预定设备清单") + @TableField(exist = false) + private List orders; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerProjectParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerProjectParam.java new file mode 100644 index 0000000..46a8268 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerProjectParam.java @@ -0,0 +1,128 @@ +package com.gxwebsoft.tower.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 com.gxwebsoft.tower.entity.TowerProjectOrder; +import com.gxwebsoft.tower.entity.TowerProjectPlace; +import com.gxwebsoft.tower.entity.TowerProjectUser; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Set; + +/** + * 项目管理查询参数 + * + * @author 科技小王子 + * @since 2023-05-22 13:30:39 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerProjectParam对象", description = "项目管理查询参数") +public class TowerProjectParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer projectId; + + @ApiModelProperty(value = "配件名称") + private String projectName; + + @ApiModelProperty(value = "项目图片") + private String projectImage; + + @ApiModelProperty(value = "租赁单位") + private String companyName; + + @ApiModelProperty(value = "承租单位") + private String customerName; + + @ApiModelProperty(value = "项目地址") + private String projectRegion; + + @ApiModelProperty(value = "详细地址") + private String projectAddress; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "报监编号") + private String superviseNo; + + @ApiModelProperty(value = "施工许可证") + private String licenceNo; + + @ApiModelProperty(value = "安全状态") + private String securityStatus; + + @ApiModelProperty(value = "主管部门") + private String competentDepartment; + + @ApiModelProperty(value = "安拆单位") + private String dismantlingCompany; + + @ApiModelProperty(value = "汽吊规格") + private String truckCraneSpecs; + + @ApiModelProperty(value = "合同其他说明") + private String contract; + + @ApiModelProperty(value = "项目负责人") + @QueryField(type = QueryType.EQ) + private Integer director; + + @ApiModelProperty(value = "项目经理") + private String projectDirector; + + @ApiModelProperty(value = "项目状态") + private String projectStatus; + + @ApiModelProperty(value = "业务员") + private String salesman; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "所有人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + + @ApiModelProperty(value = "项目成员") + @TableField(exist = false) + private Set users; + + @ApiModelProperty(value = "合同预定设备清单") + @TableField(exist = false) + private Set orders; + + @ApiModelProperty(value = "检查部位配置") + @TableField(exist = false) + private Set places1; + + @ApiModelProperty(value = "保养部位配置") + @TableField(exist = false) + private Set places2; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerProjectPlaceParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerProjectPlaceParam.java new file mode 100644 index 0000000..86607ed --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerProjectPlaceParam.java @@ -0,0 +1,54 @@ +package com.gxwebsoft.tower.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 2023-06-08 17:22:55 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerProjectPlaceParam对象", description = "检查/保养部位配置表查询参数") +public class TowerProjectPlaceParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "项目ID") + @QueryField(type = QueryType.EQ) + private Integer projectId; + + @ApiModelProperty(value = "部位ID") + @QueryField(type = QueryType.EQ) + private Integer placeId; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "部位编码") + @TableField(exist = false) + private String placeCode; + + @ApiModelProperty(value = "设备名称") + @TableField(exist = false) + private String name; + + @ApiModelProperty(value = "部位类型") + @TableField(exist = false) + private String type; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerProjectUserParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerProjectUserParam.java new file mode 100644 index 0000000..0e0ad28 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerProjectUserParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.tower.param; + +import com.baomidou.mybatisplus.annotation.TableField; +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 2023-06-07 15:00:32 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerProjectUserParam对象", description = "项目成员查询参数") +public class TowerProjectUserParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "角色,10可见成员 20项目成员 30管理员 ") + @QueryField(type = QueryType.EQ) + private Integer role; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "项目ID") + @QueryField(type = QueryType.EQ) + private Integer projectId; + + @ApiModelProperty(value = "状态, 0正常, 1待确认") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "昵称") + @TableField(exist = false) + private String nickname; + + @ApiModelProperty(value = "用户名") + @TableField(exist = false) + private String username; + + @ApiModelProperty(value = "手机号码") + @TableField(exist = false) + private String phone; + + @ApiModelProperty(value = "邮箱") + @TableField(exist = false) + private String email; + + @ApiModelProperty(value = "头像") + @TableField(exist = false) + private String avatar; + +} diff --git a/src/main/java/com/gxwebsoft/tower/param/TowerWarehouseParam.java b/src/main/java/com/gxwebsoft/tower/param/TowerWarehouseParam.java new file mode 100644 index 0000000..2a1d29d --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/param/TowerWarehouseParam.java @@ -0,0 +1,77 @@ +package com.gxwebsoft.tower.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; + +/** + * 仓库管理查询参数 + * + * @author 科技小王子 + * @since 2023-05-20 15:06:43 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "TowerWarehouseParam对象", description = "仓库管理查询参数") +public class TowerWarehouseParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "自增ID") + @QueryField(type = QueryType.EQ) + private Integer warehouseId; + + @ApiModelProperty(value = "仓库名称") + private String warehouseName; + + @ApiModelProperty(value = "负责人") + private String warehouseKeeper; + + @ApiModelProperty(value = "联系电话") + private String warehousePhone; + + @ApiModelProperty(value = "经度") + private String longitude; + + @ApiModelProperty(value = "纬度") + private String latitude; + + @ApiModelProperty(value = "所在国家") + private String country; + + @ApiModelProperty(value = "所在省份") + private String province; + + @ApiModelProperty(value = "所在城市") + private String city; + + @ApiModelProperty(value = "所在辖区") + private String region; + + @ApiModelProperty(value = "街道地址") + private String address; + + @ApiModelProperty(value = "区域名称") + private String regionName; + + @ApiModelProperty(value = "状态, 0待发布, 1已发布") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "所有人") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerAccessoryService.java b/src/main/java/com/gxwebsoft/tower/service/TowerAccessoryService.java new file mode 100644 index 0000000..2224bf0 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerAccessoryService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerAccessory; +import com.gxwebsoft.tower.param.TowerAccessoryParam; + +import java.util.List; + +/** + * 配件管理Service + * + * @author 科技小王子 + * @since 2023-05-22 11:53:48 + */ +public interface TowerAccessoryService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerAccessoryParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerAccessoryParam param); + + /** + * 根据id查询 + * + * @param accessoryId 自增ID + * @return TowerAccessory + */ + TowerAccessory getByIdRel(Integer accessoryId); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerEquipmentService.java b/src/main/java/com/gxwebsoft/tower/service/TowerEquipmentService.java new file mode 100644 index 0000000..de1a69b --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerEquipmentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerEquipment; +import com.gxwebsoft.tower.param.TowerEquipmentParam; + +import java.util.List; + +/** + * 塔吊设备管理Service + * + * @author 科技小王子 + * @since 2023-05-20 15:06:43 + */ +public interface TowerEquipmentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerEquipmentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerEquipmentParam param); + + /** + * 根据id查询 + * + * @param equipmentId 自增ID + * @return TowerEquipment + */ + TowerEquipment getByIdRel(Integer equipmentId); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerModelService.java b/src/main/java/com/gxwebsoft/tower/service/TowerModelService.java new file mode 100644 index 0000000..8811eb7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerModelService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerModel; +import com.gxwebsoft.tower.param.TowerModelParam; + +import java.util.List; + +/** + * 设备型号管理表Service + * + * @author 科技小王子 + * @since 2023-05-29 14:07:46 + */ +public interface TowerModelService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerModelParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerModelParam param); + + /** + * 根据id查询 + * + * @param categoryId 型号ID + * @return TowerModel + */ + TowerModel getByIdRel(Integer categoryId); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerPlaceSafetyService.java b/src/main/java/com/gxwebsoft/tower/service/TowerPlaceSafetyService.java new file mode 100644 index 0000000..846b7a1 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerPlaceSafetyService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerPlaceSafety; +import com.gxwebsoft.tower.param.TowerPlaceSafetyParam; + +import java.util.List; + +/** + * 安全巡检部位管理表Service + * + * @author 科技小王子 + * @since 2023-06-08 11:00:17 + */ +public interface TowerPlaceSafetyService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerPlaceSafetyParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerPlaceSafetyParam param); + + /** + * 根据id查询 + * + * @param placeSafetyId 参数ID + * @return TowerPlaceSafety + */ + TowerPlaceSafety getByIdRel(Integer placeSafetyId); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerPlaceService.java b/src/main/java/com/gxwebsoft/tower/service/TowerPlaceService.java new file mode 100644 index 0000000..c047181 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerPlaceService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerPlace; +import com.gxwebsoft.tower.param.TowerPlaceParam; + +import java.util.List; + +/** + * 检查/保养部位记录表Service + * + * @author 科技小王子 + * @since 2023-06-08 11:00:17 + */ +public interface TowerPlaceService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerPlaceParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerPlaceParam param); + + /** + * 根据id查询 + * + * @param placeId 参数ID + * @return TowerPlace + */ + TowerPlace getByIdRel(Integer placeId); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerPlaceStandardService.java b/src/main/java/com/gxwebsoft/tower/service/TowerPlaceStandardService.java new file mode 100644 index 0000000..bce6671 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerPlaceStandardService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerPlaceStandard; +import com.gxwebsoft.tower.param.TowerPlaceStandardParam; + +import java.util.List; + +/** + * 检查标准附件表Service + * + * @author 科技小王子 + * @since 2023-06-08 15:37:00 + */ +public interface TowerPlaceStandardService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerPlaceStandardParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerPlaceStandardParam param); + + /** + * 根据id查询 + * + * @param id 参数ID + * @return TowerPlaceStandard + */ + TowerPlaceStandard getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerProjectOrderService.java b/src/main/java/com/gxwebsoft/tower/service/TowerProjectOrderService.java new file mode 100644 index 0000000..db761c7 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerProjectOrderService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerProjectOrder; +import com.gxwebsoft.tower.param.TowerProjectOrderParam; + +import java.util.List; + +/** + * 合同签订设备清单Service + * + * @author 科技小王子 + * @since 2023-06-07 18:48:56 + */ +public interface TowerProjectOrderService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerProjectOrderParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerProjectOrderParam param); + + /** + * 根据id查询 + * + * @param projectOrderId 自增ID + * @return TowerProjectOrder + */ + TowerProjectOrder getByIdRel(Integer projectOrderId); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerProjectPlaceService.java b/src/main/java/com/gxwebsoft/tower/service/TowerProjectPlaceService.java new file mode 100644 index 0000000..950ea42 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerProjectPlaceService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerProjectPlace; +import com.gxwebsoft.tower.param.TowerProjectPlaceParam; + +import java.util.List; + +/** + * 检查/保养部位配置表Service + * + * @author 科技小王子 + * @since 2023-06-08 17:22:55 + */ +public interface TowerProjectPlaceService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerProjectPlaceParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerProjectPlaceParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return TowerProjectPlace + */ + TowerProjectPlace getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerProjectService.java b/src/main/java/com/gxwebsoft/tower/service/TowerProjectService.java new file mode 100644 index 0000000..84114fd --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerProjectService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerProject; +import com.gxwebsoft.tower.param.TowerProjectParam; + +import java.util.List; + +/** + * 项目管理Service + * + * @author 科技小王子 + * @since 2023-05-22 13:30:39 + */ +public interface TowerProjectService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerProjectParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerProjectParam param); + + /** + * 根据id查询 + * + * @param projectId 自增ID + * @return TowerProject + */ + TowerProject getByIdRel(Integer projectId); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerProjectUserService.java b/src/main/java/com/gxwebsoft/tower/service/TowerProjectUserService.java new file mode 100644 index 0000000..4a844d8 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerProjectUserService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerProjectUser; +import com.gxwebsoft.tower.param.TowerProjectUserParam; + +import java.util.List; + +/** + * 项目成员Service + * + * @author 科技小王子 + * @since 2023-06-07 15:00:32 + */ +public interface TowerProjectUserService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerProjectUserParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerProjectUserParam param); + + /** + * 根据id查询 + * + * @param id 自增ID + * @return TowerProjectUser + */ + TowerProjectUser getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/TowerWarehouseService.java b/src/main/java/com/gxwebsoft/tower/service/TowerWarehouseService.java new file mode 100644 index 0000000..c9095c4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/TowerWarehouseService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.tower.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.tower.entity.TowerWarehouse; +import com.gxwebsoft.tower.param.TowerWarehouseParam; + +import java.util.List; + +/** + * 仓库管理Service + * + * @author 科技小王子 + * @since 2023-05-20 15:06:43 + */ +public interface TowerWarehouseService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(TowerWarehouseParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(TowerWarehouseParam param); + + /** + * 根据id查询 + * + * @param warehouseId 自增ID + * @return TowerWarehouse + */ + TowerWarehouse getByIdRel(Integer warehouseId); + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerAccessoryServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerAccessoryServiceImpl.java new file mode 100644 index 0000000..a48aa07 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerAccessoryServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerAccessoryMapper; +import com.gxwebsoft.tower.service.TowerAccessoryService; +import com.gxwebsoft.tower.entity.TowerAccessory; +import com.gxwebsoft.tower.param.TowerAccessoryParam; +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-05-22 11:53:48 + */ +@Service +public class TowerAccessoryServiceImpl extends ServiceImpl implements TowerAccessoryService { + + @Override + public PageResult pageRel(TowerAccessoryParam 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(TowerAccessoryParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerAccessory getByIdRel(Integer accessoryId) { + TowerAccessoryParam param = new TowerAccessoryParam(); + param.setAccessoryId(accessoryId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerEquipmentServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerEquipmentServiceImpl.java new file mode 100644 index 0000000..6555537 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerEquipmentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerEquipmentMapper; +import com.gxwebsoft.tower.service.TowerEquipmentService; +import com.gxwebsoft.tower.entity.TowerEquipment; +import com.gxwebsoft.tower.param.TowerEquipmentParam; +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-05-20 15:06:43 + */ +@Service +public class TowerEquipmentServiceImpl extends ServiceImpl implements TowerEquipmentService { + + @Override + public PageResult pageRel(TowerEquipmentParam 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(TowerEquipmentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerEquipment getByIdRel(Integer equipmentId) { + TowerEquipmentParam param = new TowerEquipmentParam(); + param.setEquipmentId(equipmentId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerModelServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerModelServiceImpl.java new file mode 100644 index 0000000..3bd109f --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerModelServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerModelMapper; +import com.gxwebsoft.tower.service.TowerModelService; +import com.gxwebsoft.tower.entity.TowerModel; +import com.gxwebsoft.tower.param.TowerModelParam; +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-05-29 14:07:46 + */ +@Service +public class TowerModelServiceImpl extends ServiceImpl implements TowerModelService { + + @Override + public PageResult pageRel(TowerModelParam 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(TowerModelParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerModel getByIdRel(Integer modelId) { + TowerModelParam param = new TowerModelParam(); + param.setModelId(modelId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceSafetyServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceSafetyServiceImpl.java new file mode 100644 index 0000000..481fd4a --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceSafetyServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerPlaceSafetyMapper; +import com.gxwebsoft.tower.service.TowerPlaceSafetyService; +import com.gxwebsoft.tower.entity.TowerPlaceSafety; +import com.gxwebsoft.tower.param.TowerPlaceSafetyParam; +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-06-08 11:00:17 + */ +@Service +public class TowerPlaceSafetyServiceImpl extends ServiceImpl implements TowerPlaceSafetyService { + + @Override + public PageResult pageRel(TowerPlaceSafetyParam 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(TowerPlaceSafetyParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerPlaceSafety getByIdRel(Integer placeSafetyId) { + TowerPlaceSafetyParam param = new TowerPlaceSafetyParam(); + param.setPlaceSafetyId(placeSafetyId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceServiceImpl.java new file mode 100644 index 0000000..61ea96d --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerPlaceMapper; +import com.gxwebsoft.tower.service.TowerPlaceService; +import com.gxwebsoft.tower.entity.TowerPlace; +import com.gxwebsoft.tower.param.TowerPlaceParam; +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-06-08 11:00:17 + */ +@Service +public class TowerPlaceServiceImpl extends ServiceImpl implements TowerPlaceService { + + @Override + public PageResult pageRel(TowerPlaceParam 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(TowerPlaceParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerPlace getByIdRel(Integer placeId) { + TowerPlaceParam param = new TowerPlaceParam(); + param.setPlaceId(placeId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceStandardServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceStandardServiceImpl.java new file mode 100644 index 0000000..9607273 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerPlaceStandardServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerPlaceStandardMapper; +import com.gxwebsoft.tower.service.TowerPlaceStandardService; +import com.gxwebsoft.tower.entity.TowerPlaceStandard; +import com.gxwebsoft.tower.param.TowerPlaceStandardParam; +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-06-08 15:37:00 + */ +@Service +public class TowerPlaceStandardServiceImpl extends ServiceImpl implements TowerPlaceStandardService { + + @Override + public PageResult pageRel(TowerPlaceStandardParam 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(TowerPlaceStandardParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerPlaceStandard getByIdRel(Integer id) { + TowerPlaceStandardParam param = new TowerPlaceStandardParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectOrderServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectOrderServiceImpl.java new file mode 100644 index 0000000..bcc29f4 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectOrderServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerProjectOrderMapper; +import com.gxwebsoft.tower.service.TowerProjectOrderService; +import com.gxwebsoft.tower.entity.TowerProjectOrder; +import com.gxwebsoft.tower.param.TowerProjectOrderParam; +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-06-07 18:48:56 + */ +@Service +public class TowerProjectOrderServiceImpl extends ServiceImpl implements TowerProjectOrderService { + + @Override + public PageResult pageRel(TowerProjectOrderParam 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(TowerProjectOrderParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerProjectOrder getByIdRel(Integer projectOrderId) { + TowerProjectOrderParam param = new TowerProjectOrderParam(); + param.setProjectOrderId(projectOrderId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectPlaceServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectPlaceServiceImpl.java new file mode 100644 index 0000000..4555a61 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectPlaceServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerProjectPlaceMapper; +import com.gxwebsoft.tower.service.TowerProjectPlaceService; +import com.gxwebsoft.tower.entity.TowerProjectPlace; +import com.gxwebsoft.tower.param.TowerProjectPlaceParam; +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-06-08 17:22:55 + */ +@Service +public class TowerProjectPlaceServiceImpl extends ServiceImpl implements TowerProjectPlaceService { + + @Override + public PageResult pageRel(TowerProjectPlaceParam 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(TowerProjectPlaceParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerProjectPlace getByIdRel(Integer id) { + TowerProjectPlaceParam param = new TowerProjectPlaceParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectServiceImpl.java new file mode 100644 index 0000000..e2d4680 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerProjectMapper; +import com.gxwebsoft.tower.service.TowerProjectService; +import com.gxwebsoft.tower.entity.TowerProject; +import com.gxwebsoft.tower.param.TowerProjectParam; +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-05-22 13:30:39 + */ +@Service +public class TowerProjectServiceImpl extends ServiceImpl implements TowerProjectService { + + @Override + public PageResult pageRel(TowerProjectParam 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(TowerProjectParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerProject getByIdRel(Integer projectId) { + TowerProjectParam param = new TowerProjectParam(); + param.setProjectId(projectId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectUserServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectUserServiceImpl.java new file mode 100644 index 0000000..548f7ef --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerProjectUserServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerProjectUserMapper; +import com.gxwebsoft.tower.service.TowerProjectUserService; +import com.gxwebsoft.tower.entity.TowerProjectUser; +import com.gxwebsoft.tower.param.TowerProjectUserParam; +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-06-07 15:00:32 + */ +@Service +public class TowerProjectUserServiceImpl extends ServiceImpl implements TowerProjectUserService { + + @Override + public PageResult pageRel(TowerProjectUserParam 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(TowerProjectUserParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerProjectUser getByIdRel(Integer id) { + TowerProjectUserParam param = new TowerProjectUserParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/gxwebsoft/tower/service/impl/TowerWarehouseServiceImpl.java b/src/main/java/com/gxwebsoft/tower/service/impl/TowerWarehouseServiceImpl.java new file mode 100644 index 0000000..984ffc9 --- /dev/null +++ b/src/main/java/com/gxwebsoft/tower/service/impl/TowerWarehouseServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.tower.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.tower.mapper.TowerWarehouseMapper; +import com.gxwebsoft.tower.service.TowerWarehouseService; +import com.gxwebsoft.tower.entity.TowerWarehouse; +import com.gxwebsoft.tower.param.TowerWarehouseParam; +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-05-20 15:06:43 + */ +@Service +public class TowerWarehouseServiceImpl extends ServiceImpl implements TowerWarehouseService { + + @Override + public PageResult pageRel(TowerWarehouseParam 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(TowerWarehouseParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public TowerWarehouse getByIdRel(Integer warehouseId) { + TowerWarehouseParam param = new TowerWarehouseParam(); + param.setWarehouseId(warehouseId); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/main/java/com/qq/weixin/mp/aes/AesException.java b/src/main/java/com/qq/weixin/mp/aes/AesException.java new file mode 100644 index 0000000..868637e --- /dev/null +++ b/src/main/java/com/qq/weixin/mp/aes/AesException.java @@ -0,0 +1,59 @@ +package com.qq.weixin.mp.aes; + +@SuppressWarnings("serial") +public class AesException extends Exception { + + public final static int OK = 0; + public final static int ValidateSignatureError = -40001; + public final static int ParseJsonError = -40002; + public final static int ComputeSignatureError = -40003; + public final static int IllegalAesKey = -40004; + public final static int ValidateCorpidError = -40005; + public final static int EncryptAESError = -40006; + public final static int DecryptAESError = -40007; + public final static int IllegalBuffer = -40008; + public final static int EncodeBase64Error = -40009; + public final static int DecodeBase64Error = -40010; + public final static int GenReturnJsonError = -40011; + + private int code; + + private static String getMessage(int code) { + switch (code) { + case ValidateSignatureError: + return "签名验证错误"; + case ParseJsonError: + return "json解析失败"; + case ComputeSignatureError: + return "sha加密生成签名失败"; + case IllegalAesKey: + return "SymmetricKey非法"; + case ValidateCorpidError: + return "corpid校验失败"; + case EncryptAESError: + return "aes加密失败"; + case DecryptAESError: + return "aes解密失败"; + case IllegalBuffer: + return "解密后得到的buffer非法"; + case EncodeBase64Error: + return "base64加密错误"; + case DecodeBase64Error: + return "base64解密错误"; + case GenReturnJsonError: + return "josn生成失败"; + default: + return null; // cannot be + } + } + + public int getCode() { + return code; + } + + AesException(int code) { + super(getMessage(code)); + this.code = code; + } + +} diff --git a/src/main/java/com/qq/weixin/mp/aes/ByteGroup.java b/src/main/java/com/qq/weixin/mp/aes/ByteGroup.java new file mode 100644 index 0000000..6ba4330 --- /dev/null +++ b/src/main/java/com/qq/weixin/mp/aes/ByteGroup.java @@ -0,0 +1,26 @@ +package com.qq.weixin.mp.aes; + +import java.util.ArrayList; + +class ByteGroup { + ArrayList byteContainer = new ArrayList(); + + public byte[] toBytes() { + byte[] bytes = new byte[byteContainer.size()]; + for (int i = 0; i < byteContainer.size(); i++) { + bytes[i] = byteContainer.get(i); + } + return bytes; + } + + public ByteGroup addBytes(byte[] bytes) { + for (byte b : bytes) { + byteContainer.add(b); + } + return this; + } + + public int size() { + return byteContainer.size(); + } +} diff --git a/src/main/java/com/qq/weixin/mp/aes/JsonParse.java b/src/main/java/com/qq/weixin/mp/aes/JsonParse.java new file mode 100644 index 0000000..4a0f4ec --- /dev/null +++ b/src/main/java/com/qq/weixin/mp/aes/JsonParse.java @@ -0,0 +1,65 @@ +/** + * 对企业微信发送给企业后台的消息加解密示例代码. + * + * @copyright Copyright (c) 1998-2020 Tencent Inc. + */ + +// ------------------------------------------------------------------------ + +package com.qq.weixin.mp.aes; + +/** + * 针对 org.json.JSONObject, + * 要编译打包架包json + * 官方源码下载地址 : https://github.com/stleary/JSON-java, jar包下载地址 : https://mvnrepository.com/artifact/org.json/json + */ +import org.json.JSONObject; + + +/** + * JsonParse class + * + * 提供提取消息格式中的密文及生成回复消息格式的接口. + */ +class JsonParse { + + /** + * 提取出 JSON 包中的加密消息 + * @param jsontext 待提取的json字符串 + * @return 提取出的加密消息字符串 + * @throws AesException + */ + public static Object[] extract(String jsontext) throws AesException { + Object[] result = new Object[3]; + try { + + JSONObject json = new JSONObject(jsontext); + String encrypt_msg = json.getString("encrypt"); + String tousername = json.getString("tousername"); + String agentid = json.getString("agentid"); + + result[0] = tousername; + result[1] = encrypt_msg; + result[2] = agentid; + return result; + } catch (Exception e) { + e.printStackTrace(); + throw new AesException(AesException.ParseJsonError); + } + } + + /** + * 生成json消息 + * @param encrypt 加密后的消息密文 + * @param signature 安全签名 + * @param timestamp 时间戳 + * @param nonce 随机字符串 + * @return 生成的json字符串 + */ + public static String generate(String encrypt, String signature, String timestamp, String nonce) { + + String format = "{\"encrypt\":\"%1$s\",\"msgsignature\":\"%2$s\",\"timestamp\":\"%3$s\",\"nonce\":\"%4$s\"}"; + return String.format(format, encrypt, signature, timestamp, nonce); + + } +} diff --git a/src/main/java/com/qq/weixin/mp/aes/PKCS7Encoder.java b/src/main/java/com/qq/weixin/mp/aes/PKCS7Encoder.java new file mode 100644 index 0000000..f7ad49f --- /dev/null +++ b/src/main/java/com/qq/weixin/mp/aes/PKCS7Encoder.java @@ -0,0 +1,67 @@ +/** + * 对企业微信发送给企业后台的消息加解密示例代码. + * + * @copyright Copyright (c) 1998-2014 Tencent Inc. + */ + +// ------------------------------------------------------------------------ + +package com.qq.weixin.mp.aes; + +import java.nio.charset.Charset; +import java.util.Arrays; + +/** + * 提供基于PKCS7算法的加解密接口. + */ +class PKCS7Encoder { + static Charset CHARSET = Charset.forName("utf-8"); + static int BLOCK_SIZE = 32; + + /** + * 获得对明文进行补位填充的字节. + * + * @param count 需要进行填充补位操作的明文字节个数 + * @return 补齐用的字节数组 + */ + static byte[] encode(int count) { + // 计算需要填充的位数 + int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE); + if (amountToPad == 0) { + amountToPad = BLOCK_SIZE; + } + // 获得补位所用的字符 + char padChr = chr(amountToPad); + String tmp = new String(); + for (int index = 0; index < amountToPad; index++) { + tmp += padChr; + } + return tmp.getBytes(CHARSET); + } + + /** + * 删除解密后明文的补位字符 + * + * @param decrypted 解密后的明文 + * @return 删除补位字符后的明文 + */ + static byte[] decode(byte[] decrypted) { + int pad = (int) decrypted[decrypted.length - 1]; + if (pad < 1 || pad > 32) { + pad = 0; + } + return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad); + } + + /** + * 将数字转化成ASCII码对应的字符,用于对明文进行补码 + * + * @param a 需要转化的数字 + * @return 转化得到的字符 + */ + static char chr(int a) { + byte target = (byte) (a & 0xFF); + return (char) target; + } + +} diff --git a/src/main/java/com/qq/weixin/mp/aes/SHA1.java b/src/main/java/com/qq/weixin/mp/aes/SHA1.java new file mode 100644 index 0000000..a6af45d --- /dev/null +++ b/src/main/java/com/qq/weixin/mp/aes/SHA1.java @@ -0,0 +1,61 @@ +/** + * 对企业微信发送给企业后台的消息加解密示例代码. + * + * @copyright Copyright (c) 1998-2014 Tencent Inc. + */ + +// ------------------------------------------------------------------------ + +package com.qq.weixin.mp.aes; + +import java.security.MessageDigest; +import java.util.Arrays; + +/** + * SHA1 class + * + * 计算消息签名接口. + */ +class SHA1 { + + /** + * 用SHA1算法生成安全签名 + * @param token 票据 + * @param timestamp 时间戳 + * @param nonce 随机字符串 + * @param encrypt 密文 + * @return 安全签名 + * @throws AesException + */ + public static String getSHA1(String token, String timestamp, String nonce, String encrypt) throws AesException + { + try { + String[] array = new String[] { token, timestamp, nonce, encrypt }; + StringBuffer sb = new StringBuffer(); + // 字符串排序 + Arrays.sort(array); + for (int i = 0; i < 4; i++) { + sb.append(array[i]); + } + String str = sb.toString(); + // SHA1签名生成 + MessageDigest md = MessageDigest.getInstance("SHA-1"); + md.update(str.getBytes()); + byte[] digest = md.digest(); + + StringBuffer hexstr = new StringBuffer(); + String shaHex = ""; + for (int i = 0; i < digest.length; i++) { + shaHex = Integer.toHexString(digest[i] & 0xFF); + if (shaHex.length() < 2) { + hexstr.append(0); + } + hexstr.append(shaHex); + } + return hexstr.toString(); + } catch (Exception e) { + e.printStackTrace(); + throw new AesException(AesException.ComputeSignatureError); + } + } +} diff --git a/src/main/java/com/qq/weixin/mp/aes/WXBizJsonMsgCrypt.java b/src/main/java/com/qq/weixin/mp/aes/WXBizJsonMsgCrypt.java new file mode 100644 index 0000000..74ef144 --- /dev/null +++ b/src/main/java/com/qq/weixin/mp/aes/WXBizJsonMsgCrypt.java @@ -0,0 +1,289 @@ +/** + * 对企业微信发送给企业后台的消息加解密示例代码. + * + * @copyright Copyright (c) 1998-2014 Tencent Inc. + */ + +// ------------------------------------------------------------------------ + +/** + * 针对org.apache.commons.codec.binary.Base64, + * 需要导入架包commons-codec-1.9(或commons-codec-1.8等其他版本) + * 官方下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi + */ +package com.qq.weixin.mp.aes; + +import java.nio.charset.Charset; +import java.util.Arrays; +import java.util.Random; + +import javax.crypto.Cipher; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; + +import org.apache.commons.codec.binary.Base64; + +/** + * 提供接收和推送给企业微信消息的加解密接口(UTF8编码的字符串). + *
    + *
  1. 第三方回复加密消息给企业微信
  2. + *
  3. 第三方收到企业微信发送的消息,验证消息的安全性,并对消息进行解密。
  4. + *
+ * 说明:异常java.security.InvalidKeyException:illegal Key Size的解决方案 + *
    + *
  1. 在官方网站下载JCE无限制权限策略文件(JDK7的下载地址: + * http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
  2. + *
  3. 下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
  4. + *
  5. 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
  6. + *
  7. 如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
  8. + *
+ */ +public class WXBizJsonMsgCrypt { + static Charset CHARSET = Charset.forName("utf-8"); + Base64 base64 = new Base64(); + byte[] aesKey; + String token; + String receiveid; + + /** + * 构造函数 + * @param token 企业微信后台,开发者设置的token + * @param encodingAesKey 企业微信后台,开发者设置的EncodingAESKey + * @param receiveid, 不同场景含义不同,详见文档 + * + * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 + */ + public WXBizJsonMsgCrypt(String token, String encodingAesKey, String receiveid) throws AesException { + if (encodingAesKey.length() != 43) { + throw new AesException(AesException.IllegalAesKey); + } + + this.token = token; + this.receiveid = receiveid; + aesKey = Base64.decodeBase64(encodingAesKey + "="); + } + + // 生成4个字节的网络字节序 + byte[] getNetworkBytesOrder(int sourceNumber) { + byte[] orderBytes = new byte[4]; + orderBytes[3] = (byte) (sourceNumber & 0xFF); + orderBytes[2] = (byte) (sourceNumber >> 8 & 0xFF); + orderBytes[1] = (byte) (sourceNumber >> 16 & 0xFF); + orderBytes[0] = (byte) (sourceNumber >> 24 & 0xFF); + return orderBytes; + } + + // 还原4个字节的网络字节序 + int recoverNetworkBytesOrder(byte[] orderBytes) { + int sourceNumber = 0; + for (int i = 0; i < 4; i++) { + sourceNumber <<= 8; + sourceNumber |= orderBytes[i] & 0xff; + } + return sourceNumber; + } + + // 随机生成16位字符串 + String getRandomStr() { + String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + Random random = new Random(); + StringBuffer sb = new StringBuffer(); + for (int i = 0; i < 16; i++) { + int number = random.nextInt(base.length()); + sb.append(base.charAt(number)); + } + return sb.toString(); + } + + /** + * 对明文进行加密. + * + * @param text 需要加密的明文 + * @return 加密后base64编码的字符串 + * @throws AesException aes加密失败 + */ + String encrypt(String randomStr, String text) throws AesException { + ByteGroup byteCollector = new ByteGroup(); + byte[] randomStrBytes = randomStr.getBytes(CHARSET); + byte[] textBytes = text.getBytes(CHARSET); + byte[] networkBytesOrder = getNetworkBytesOrder(textBytes.length); + byte[] receiveidBytes = receiveid.getBytes(CHARSET); + + // randomStr + networkBytesOrder + text + receiveid + byteCollector.addBytes(randomStrBytes); + byteCollector.addBytes(networkBytesOrder); + byteCollector.addBytes(textBytes); + byteCollector.addBytes(receiveidBytes); + + // ... + pad: 使用自定义的填充方式对明文进行补位填充 + byte[] padBytes = PKCS7Encoder.encode(byteCollector.size()); + byteCollector.addBytes(padBytes); + + // 获得最终的字节流, 未加密 + byte[] unencrypted = byteCollector.toBytes(); + + try { + // 设置加密模式为AES的CBC模式 + Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); + SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES"); + IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16); + cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv); + + // 加密 + byte[] encrypted = cipher.doFinal(unencrypted); + + // 使用BASE64对加密后的字符串进行编码 + String base64Encrypted = base64.encodeToString(encrypted); + + return base64Encrypted; + } catch (Exception e) { + e.printStackTrace(); + throw new AesException(AesException.EncryptAESError); + } + } + + /** + * 对密文进行解密. + * + * @param text 需要解密的密文 + * @return 解密得到的明文 + * @throws AesException aes解密失败 + */ + String decrypt(String text) throws AesException { + byte[] original; + try { + // 设置解密模式为AES的CBC模式 + Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); + SecretKeySpec key_spec = new SecretKeySpec(aesKey, "AES"); + IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 16)); + cipher.init(Cipher.DECRYPT_MODE, key_spec, iv); + + // 使用BASE64对密文进行解码 + byte[] encrypted = Base64.decodeBase64(text); + + // 解密 + original = cipher.doFinal(encrypted); + } catch (Exception e) { + e.printStackTrace(); + throw new AesException(AesException.DecryptAESError); + } + + String jsonContent, from_receiveid; + try { + // 去除补位字符 + byte[] bytes = PKCS7Encoder.decode(original); + + // 分离16位随机字符串,网络字节序和receiveid + byte[] networkOrder = Arrays.copyOfRange(bytes, 16, 20); + + int jsonLength = recoverNetworkBytesOrder(networkOrder); + + jsonContent = new String(Arrays.copyOfRange(bytes, 20, 20 + jsonLength), CHARSET); + from_receiveid = new String(Arrays.copyOfRange(bytes, 20 + jsonLength, bytes.length), + CHARSET); + } catch (Exception e) { + e.printStackTrace(); + throw new AesException(AesException.IllegalBuffer); + } + + // receiveid不相同的情况 + if (!from_receiveid.equals(receiveid)) { + throw new AesException(AesException.ValidateCorpidError); + } + return jsonContent; + + } + + /** + * 将企业微信回复用户的消息加密打包. + *
    + *
  1. 对要发送的消息进行AES-CBC加密
  2. + *
  3. 生成安全签名
  4. + *
  5. 将消息密文和安全签名打包成json格式
  6. + *
+ * + * @param replyMsg 企业微信待回复用户的消息,json格式的字符串 + * @param timeStamp 时间戳,可以自己生成,也可以用URL参数的timestamp + * @param nonce 随机串,可以自己生成,也可以用URL参数的nonce + * + * @return 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的json格式的字符串 + * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 + */ + public String EncryptMsg(String replyMsg, String timeStamp, String nonce) throws AesException { + // 加密 + String encrypt = encrypt(getRandomStr(), replyMsg); + + // 生成安全签名 + if (timeStamp == "") { + timeStamp = Long.toString(System.currentTimeMillis()); + } + + String signature = SHA1.getSHA1(token, timeStamp, nonce, encrypt); + + // System.out.println("发送给平台的签名是: " + signature[1].toString()); + // 生成发送的json + String result = JsonParse.generate(encrypt, signature, timeStamp, nonce); + return result; + } + + /** + * 检验消息的真实性,并且获取解密后的明文. + *
    + *
  1. 利用收到的密文生成安全签名,进行签名验证
  2. + *
  3. 若验证通过,则提取json中的加密消息
  4. + *
  5. 对消息进行解密
  6. + *
+ * + * @param msgSignature 签名串,对应URL参数的msg_signature + * @param timeStamp 时间戳,对应URL参数的timestamp + * @param nonce 随机串,对应URL参数的nonce + * @param postData 密文,对应POST请求的数据 + * + * @return 解密后的原文 + * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 + */ + public String DecryptMsg(String msgSignature, String timeStamp, String nonce, String postData) + throws AesException { + + // 密钥,公众账号的app secret + // 提取密文 + Object[] encrypt = JsonParse.extract(postData); + + // 验证安全签名 + String signature = SHA1.getSHA1(token, timeStamp, nonce, encrypt[1].toString()); + + // 和URL中的签名比较是否相等 + // System.out.println("第三方收到URL中的签名:" + msg_sign); + // System.out.println("第三方校验签名:" + signature); + if (!signature.equals(msgSignature)) { + throw new AesException(AesException.ValidateSignatureError); + } + + // 解密 + String result = decrypt(encrypt[1].toString()); + return result; + } + + /** + * 验证URL + * @param msgSignature 签名串,对应URL参数的msg_signature + * @param timeStamp 时间戳,对应URL参数的timestamp + * @param nonce 随机串,对应URL参数的nonce + * @param echoStr 随机串,对应URL参数的echostr + * + * @return 解密之后的echostr + * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 + */ + public String VerifyURL(String msgSignature, String timeStamp, String nonce, String echoStr) + throws AesException { + String signature = SHA1.getSHA1(token, timeStamp, nonce, echoStr); + + if (!signature.equals(msgSignature)) { + throw new AesException(AesException.ValidateSignatureError); + } + + String result = decrypt(echoStr); + return result; + } + +} diff --git a/src/main/java/lib/commons-codec-1.9.jar b/src/main/java/lib/commons-codec-1.9.jar new file mode 100644 index 0000000..ef35f1c Binary files /dev/null and b/src/main/java/lib/commons-codec-1.9.jar differ diff --git a/src/main/java/lib/json-20200518.jar b/src/main/java/lib/json-20200518.jar new file mode 100644 index 0000000..0b85b0e Binary files /dev/null and b/src/main/java/lib/json-20200518.jar differ diff --git a/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 5612d00..f279613 100644 --- a/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -4,5 +4,50 @@ "name": "config.upload-path", "type": "java.lang.String", "description": "Description for config.upload-path." - } -] } + }, + { + "name": "alipay.appCertPath", + "type": "java.lang.String", + "description": "Description for alipay.appCertPath." + }, + { + "name": "alipay.alipayCertPath", + "type": "java.lang.String", + "description": "Description for alipay.alipayCertPath." + }, + { + "name": "alipay.serverUrl", + "type": "java.lang.String", + "description": "Description for alipay.serverUrl." + }, + { + "name": "config.server-url", + "type": "java.lang.String", + "description": "Description for config.server-url." + }, + { + "name": "config.upload-server", + "type": "java.lang.String", + "description": "Description for config.upload-server." + }, + { + "name": "socketio.host", + "type": "java.lang.String", + "description": "Description for socketio.host." + }, + { + "name": "socketio.port", + "type": "java.lang.String", + "description": "Description for socketio.port." + }, + { + "name": "config.endpoint", + "type": "java.lang.String", + "description": "Description for config.endpoint." + }, + { + "name": "config.accessKeyId", + "type": "java.lang.String", + "description": "Description for config.accessKeyId." + } + ] } diff --git a/src/main/resources/alipay-sandbox.properties b/src/main/resources/alipay-sandbox.properties new file mode 100644 index 0000000..08322e0 --- /dev/null +++ b/src/main/resources/alipay-sandbox.properties @@ -0,0 +1,20 @@ +# appId +alipay.app-id=2016091100489486 + +# sellerId +alipay.seller-id=2088102175207292 + +# ?? +alipay.gateway-url=https://openapi.alipaydev.com/gateway.do + +# ?? +alipay.merchant-private-key=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCRY5kTUJCdXdpFmeG5/FryFFirtvsDA0OZzjGiBrSqPm8d6NUWgFmHLVyS/NhpHVK/iaYgcu1tYhZdKrmSSKNp/bcsbExk7MKtZrWCVSqJxxC8TdS9l8/T41PMJc0MMW9kZiZVtv0qVBmkYmcc2CR4R126rzx/A/8Rvseh8KvcxBf2SAzAi4ucIl4SuyhVwzgRWHTsNM8AphiHmO94bZOepGstR6E48AAr2c5MPH3+RUQO+v+f+2RI+keh4GvyzJmCV357Tz2Fv8LjIgSO61OX+LOhJUtQNrsCuPpG3qYPZJTmEdi4N9Ejc+IY+JPCjbaHlp8605VqGY90nwxKybrjAgMBAAECggEAOg724wKqLV18O40e2gGPY9qCKlhQ1rwn87Sml1hsLwvtnZkL9wdcOSIBNOVpmlhOYhSa1Zxved3QpnXYUzVUpI/f5Qp+W1M8zrgURa6y5QAsi7Xc/bUxFiFSplR2FKdtHz+3kUUYxh19e+qb2KXrsmh1YoZ19xbmdfSkjeOpDehamEsrQLsuIyJ9SoWC3+TxPxfVqhHBrC/hweyMTLY6TLP2x6dxJaUA26GcD+4mj9/5zt+ZTC1WIMKgjhselvhmOG1bHhyFpZyibiKnjNTqKPDlQzurCxgkNWBWZrOONbPQEAOfotMirYB2pXacAIaOhSeaOGcdVWqY5UgqGy46EQKBgQDJxDs0dIpNaG194MxRxVizIIeeS3BkxDE9JJxCNWUpZl5jG/ve3sO7007LL6+LsCUhb9Hd9CvToRCNKtC7BngexcluJRRGjtdN3TxJqkR7/ZOjd7Z+NC19w1RdrOqtZdPxx0k4pbFku3fD60gEmPj5ors6hNpfkdvoZQhSd+9leQKBgQC4d/kSDLtX59Akr+88Pf8LicX2oBGRFI+P1/R8u1CTRljWVKvCiYj24J+EkZGCgi3aOlrj1SmBg0DNlNSfJhJ6yYKdHzsOG2G2TySPzy0UBFxV9DDor9FpVEgZktKOuQUhlNBvQbb+vGkL+aheBusmZ0ve8cQ3CuvOF27meWoYOwKBgQCwsaGrmVe43HfuodwszCeWjylVTfl6tXntcs9JCBu0esqz/sC/d9Rv+2hodjVEnpiVxKhEuN1csxOcnN84ujydrlZtmBk+hT82GEYAuRTKhNIzeNYfhbBFD7clZhYKjj9i4ERWUHyem7IRqE1kgVagv4s5fzkCMukjhr8YAaJr+QKBgBEn3zslgfrf7USsNBSnM2QQUR/prRiQD/XxwKQlC45W2YY9Y6f5AIrtQwiiPSUlFDyadr9/oJeR7GHyOIAAm3Fd8k7Ii8Z5F3JME/tn6ipVaXz489+AEnq4QuhV9k0dufNwkp32P52bSi2570WnYRE2RCEc3QG9e0a0eTToD8znAoGBAIXtfDz1GI2YkyYbXlaO2uV7zZpEwmCJYJ2+LYk/7Y9q+n2taHGRXCB8UFShftEZEWOWomelQ7msKuUGr+LNnPl8hplFvd20oPuRXjJivYQ/w07UHyMQRVG8NUwGOkCeNEnl6Z+9b/Y3OCvdGqId8fbzeF3INAWjNMew7Ou/5W7X + +# ?? +alipay.alipay-public-key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkMC5Y9MXXCMuK0CzYO9zZc40qile3IxNWonmKREP9GjWcVQaptMMUol4A0fjY8rg9lWnREenGhQ4QfWztpS66CPcR43NRq4sHOFwDfSQNpIf94q80MSggc61tP+oKRCCFRUivq3ggJg9L7TEyziAoVIZeDkg2Fi6VMxZiAmvbUTRg4T1Eq9PCRZ9g4V1t3lJzsyRJH+KsZ9xyA5SsAW+dAiYY5LgiFsSgcUXtaEMtsxHerXs6dNMb1uA0DqpEhxFuuNbFGwO57XJHThe1+RUBiqiqsKxcU0m5YsZP5pAcQJCI+3TPpPQKhba4Z859NbD9tTGMTzzoXXRpN4p3cHvQwIDAQAB + +# ???? +alipay.content-key=hNlmFfkrJX0tmIuNqeee0w== + +# ???? +alipay.return-url= diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 570e970..822ad4e 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -3,18 +3,34 @@ # 数据源配置 spring: datasource: - url: jdbc:mysql://42.194.212.185:3308/yunxinwei_bms?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 - username: yunxinwei_bms - password: dxtfwGZN65bxeWZa + url: jdbc:mysql://47.119.165.234:3308/open_ws?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + username: open_ws + password: A6k4GHifNWWhjcde +# url: jdbc:mysql://47.119.165.234:3308/open_ws?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 +# username: open_ws +# password: DzAmFiZfPJ6ZGApm driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource # 日志配置 logging: level: - com.eleadmin: DEBUG + com.gxwebsoft: DEBUG com.baomidou.mybatisplus: DEBUG +socketio: + host: localhost #IP地址 + # 框架配置 config: - upload-path: /Users/gxwebsoft/Documents/uploads/ + # 开发环境接口 + server-url: http://127.0.0.1:9090/api + upload-path: D:\Temp + + # 阿里云OSS云存储 + endpoint: https://oss-cn-shenzhen.aliyuncs.com + accessKeyId: LTAI4GKGZ9Z2Z8JZ77c3GNZP + accessKeySecret: BiDkpS7UXj72HWwDWaFZxiXjNFBNCM + bucketName: oss-gxwebsoft + bucketDomain: https://oss.wsdns.cn + aliyunDomain: https://oss-gxwebsoft.oss-cn-shenzhen.aliyuncs.com diff --git a/src/main/resources/application-jimei.yml b/src/main/resources/application-jimei.yml new file mode 100644 index 0000000..7a6ad71 --- /dev/null +++ b/src/main/resources/application-jimei.yml @@ -0,0 +1,36 @@ +# 生产环境配置 + +# 数据源配置 +spring: + datasource: + url: jdbc:mysql://127.0.0.1:3318/jm_love?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + username: jm_love + password: wHekGWckTYbLtfWh + driver-class-name: com.mysql.cj.jdbc.Driver + type: com.alibaba.druid.pool.DruidDataSource + +# 日志配置 +logging: + file: + name: websoft-api.log + level: + root: WARN + com.gxwebsoft: ERROR + com.baomidou.mybatisplus: ERROR + +socketio: + host: 0.0.0.0 #IP地址 + +# 框架配置 +config: + # 生产环境接口 + server-url: https://server.jimeigroup.cn/api + file-server: https://file.jimeigroup.cn + upload-path: /wsdata/wwwroot/file.ws/ + + # 阿里云OSS云存储 + endpoint: https://oss-cn-shenzhen.aliyuncs.com + accessKeyId: LTAI5tFcrUsMQQGyjAtGFj7Z + accessKeySecret: rlm9mMxFLmsnVZAvlFi7mjqGfgrawH + bucketName: file-jimei + bucketDomain: https://oss.jimeigroup.cn diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index fd52bbc..0fac12c 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -3,21 +3,34 @@ # 数据源配置 spring: datasource: - url: jdbc:mysql://localhost:3308/yunxinwei_bms?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 - username: yunxinwei_bms - password: dxtfwGZN65bxeWZa + url: jdbc:mysql://47.119.165.234:3308/com_gxwebsoft_oa?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + username: com_gxwebsoft_oa + password: EZfW2R4YiWfbLHLw driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource # 日志配置 logging: file: - name: ele-admin-api.log + name: websoft-api.log level: root: WARN - com.eleadmin: ERROR + com.gxwebsoft: ERROR com.baomidou.mybatisplus: ERROR +socketio: + host: 0.0.0.0 #IP地址 + # 框架配置 config: + # 生产环境接口 + server-url: https://server.gxwebsoft.com/api upload-path: /www/wwwroot/file.ws/ + + # 阿里云OSS云存储 + endpoint: https://oss-cn-shenzhen.aliyuncs.com + accessKeyId: LTAI4GKGZ9Z2Z8JZ77c3GNZP + accessKeySecret: BiDkpS7UXj72HWwDWaFZxiXjNFBNCM + bucketName: oss-gxwebsoft + bucketDomain: https://oss.wsdns.cn + aliyunDomain: https://oss-gxwebsoft.oss-cn-shenzhen.aliyuncs.com diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index f9dc39c..679a412 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -1,18 +1,38 @@ # 测试环境配置 - +server: + port: 9091 +socketio: + port: 9191 + host: localhost #IP地址 # 数据源配置 spring: datasource: - url: jdbc:mysql://localhost:3306/ele-admin-api?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 - username: root - password: 123456 + url: jdbc:mysql://123.207.68.142:3318/jm-love-test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8 + username: jm-love-test + password: jPNSsJZzeNfTSxhB driver-class-name: com.mysql.cj.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource # 日志配置 logging: file: - name: ele-admin-api.log + name: websoft-api.log level: - com.eleadmin: DEBUG - com.baomidou.mybatisplus: DEBUG + root: WARN + com.gxwebsoft: ERROR + com.baomidou.mybatisplus: ERROR + +# 框架配置 +config: + # 生产环境接口 + server-url: https://server.jimeigroup.cn/api + file-server: https://file.jimeigroup.cn + upload-path: /wsdata/wwwroot/file.ws/ + + # 阿里云OSS云存储 + endpoint: https://oss-cn-shenzhen.aliyuncs.com + accessKeyId: LTAI5tFcrUsMQQGyjAtGFj7Z + accessKeySecret: rlm9mMxFLmsnVZAvlFi7mjqGfgrawH + bucketName: file-jimei + bucketDomain: https://oss.jimeigroup.cn + diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 471b6a0..cfd940c 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,12 +1,17 @@ # 端口 server: - port: 16801 - + port: 9090 +# socketIo +socketio: + port: 9190 # 多环境配置 spring: profiles: active: dev + application: + name: server + # 连接池配置 datasource: druid: @@ -25,7 +30,7 @@ spring: #max-pool-prepared-statement-per-connection-size: 20 filters: stat, wall validation-query: SELECT 'x' - aop-patterns: com.eleadmin.*.*.service.* + aop-patterns: com.gxwebsoft.*.*.service.* stat-view-servlet: url-pattern: /druid/* reset-enable: true @@ -42,12 +47,17 @@ spring: multipart: max-file-size: 100MB max-request-size: 100MB + redis: + database: 0 + host: 127.0.0.1 + port: 6379 + password: # 邮件服务器配置 mail: host: smtp.qq.com - username: - password: + username: 170083662@qq.com + password: mnfokualhfaucaie default-encoding: UTF-8 properties: mail: @@ -59,7 +69,7 @@ spring: # Mybatis-plus配置 mybatis-plus: - mapper-locations: classpath*:com/eleadmin/**/*Mapper.xml + mapper-locations: classpath*:com/gxwebsoft/**/*Mapper.xml configuration: map-underscore-to-camel-case: true cache-enabled: true @@ -73,9 +83,21 @@ mybatis-plus: # 框架配置 config: open-office-home: C:/OpenOffice4/ - swagger-base-package: com.eleadmin - swagger-title: EleAdmin API文档 + swagger-base-package: com.gxwebsoft + swagger-title: 网宿软件 API文档 swagger-version: 1.0 - token-key: ULgNsWJ8rPjRtnjzX/Gv2RGS80Ksnm/ZaLpvIL+NrBg= - picture-server: https://file.gxwebsoft.com + token-key: WLgNsWJ8rPjRtnjzX/Gx2RGS80Kwnm/ZeLbvIL+NrBs= + server-url: https://server.gxwebsoft.com/api + file-server: https://file.wsdns.cn upload-path: /Users/gxwebsoft/Documents/uploads/ + local-upload-path: /Users/gxwebsoft/Documents/uploads/ + + # 阿里云OSS云存储 + endpoint: https://oss-cn-shenzhen.aliyuncs.com + accessKeyId: LTAI4GKGZ9Z2Z8JZ77c3GNZP + accessKeySecret: BiDkpS7UXj72HWwDWaFZxiXjNFBNCM + bucketName: oss-gxwebsoft + bucketDomain: https://oss.wsdns.cn + aliyunDomain: https://oss-gxwebsoft.oss-cn-shenzhen.aliyuncs.com + + diff --git a/src/main/resources/cert/alipayPublicCert.crt b/src/main/resources/cert/alipayPublicCert.crt new file mode 100644 index 0000000..157614d --- /dev/null +++ b/src/main/resources/cert/alipayPublicCert.crt @@ -0,0 +1,38 @@ +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIQICISFUe9Mqj+pWqb2fs9jDANBgkqhkiG9w0BAQsFADCBkTELMAkGA1UE +BhMCQ04xGzAZBgNVBAoMEkFudCBGaW5hbmNpYWwgdGVzdDElMCMGA1UECwwcQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkgdGVzdDE+MDwGA1UEAww1QW50IEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSBDbGFzcyAyIFIxIHRlc3QwHhcNMjIxMjE1MDExMjA0WhcNMjMxMjE1MDExMjA0WjB6 +MQswCQYDVQQGEwJDTjEVMBMGA1UECgwM5rKZ566x546v5aKDMQ8wDQYDVQQLDAZBbGlwYXkxQzBB +BgNVBAMMOuaUr+S7mOWunSjkuK3lm70p572R57uc5oqA5pyv5pyJ6ZmQ5YWs5Y+4LTIwODgxMDIx +NzUyMDcyOTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCQwLlj0xdcIy4rQLNg73Nl +zjSqKV7cjE1aieYpEQ/0aNZxVBqm0wxSiXgDR+NjyuD2VadER6caFDhB9bO2lLroI9xHjc1Griwc +4XAN9JA2kh/3irzQxKCBzrW0/6gpEIIVFSK+reCAmD0vtMTLOIChUhl4OSDYWLpUzFmICa9tRNGD +hPUSr08JFn2DhXW3eUnOzJEkf4qxn3HIDlKwBb50CJhjkuCIWxKBxRe1oQy2zEd6tezp00xvW4DQ +OqkSHEW641sUbA7ntckdOF7X5FQGKqKqwrFxTSblixk/mkBxAkIj7dM+k9AqFtrhnzn01sP21MYx +PPOhddGk3indwe9DAgMBAAGjEjAQMA4GA1UdDwEB/wQEAwIE8DANBgkqhkiG9w0BAQsFAAOCAQEA +xJXsNQ5rDQBwn8BXYuSaj1Hkw8W3wKRr55Y2fDoQIx2kek9kI53PRvIVAdxlrLxZ6z+lTFrkThJ/ +rsH84ffkDvfSTca3QCB6c01jveQ+qGvGQSx/HPu92DMT/hJ0V8LstLlq6Q1r8hTvcjHOPyE9l3vF +I0Ozbe2F3TCOFFjtEjHHOw9bo+tB8gtiY/bfidPbTtCClTTyPRTE8MuzQqDABhGl3khL4aue9h8g +x0i0yAn15VBf9ruqlTrTnhuI5ak7AOwdxjKaMwVbTCy838rQjt4xKMD80h2go/6MLRGidnbeiTU2 +Uq3PVgEJo2kxE8ZSD7x4JtskZD07YCSA5DZtuw== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDszCCApugAwIBAgIQIBkIGbgVxq210KxLJ+YA/TANBgkqhkiG9w0BAQsFADCBhDELMAkGA1UE +BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxJTAjBgNVBAsMHENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5IHRlc3QxNjA0BgNVBAMMLUFudCBGaW5hbmNpYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgUjEgdGVzdDAeFw0xOTA4MTkxMTE2MDBaFw0yNDA4MDExMTE2MDBaMIGRMQswCQYDVQQGEwJD +TjEbMBkGA1UECgwSQW50IEZpbmFuY2lhbCB0ZXN0MSUwIwYDVQQLDBxDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSB0ZXN0MT4wPAYDVQQDDDVBbnQgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9y +aXR5IENsYXNzIDIgUjEgdGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMh4FKYO +ZyRQHD6eFbPKZeSAnrfjfU7xmS9Yoozuu+iuqZlb6Z0SPLUqqTZAFZejOcmr07ln/pwZxluqplxC +5+B48End4nclDMlT5HPrDr3W0frs6Xsa2ZNcyil/iKNB5MbGll8LRAxntsKvZZj6vUTMb705gYgm +VUMILwi/ZxKTQqBtkT/kQQ5y6nOZsj7XI5rYdz6qqOROrpvS/d7iypdHOMIM9Iz9DlL1mrCykbBi +t25y+gTeXmuisHUwqaRpwtCGK4BayCqxRGbNipe6W73EK9lBrrzNtTr9NaysesT/v+l25JHCL9tG +wpNr1oWFzk4IHVOg0ORiQ6SUgxZUTYcCAwEAAaMSMBAwDgYDVR0PAQH/BAQDAgTwMA0GCSqGSIb3 +DQEBCwUAA4IBAQBWThEoIaQoBX2YeRY/I8gu6TYnFXtyuCljANnXnM38ft+ikhE5mMNgKmJYLHvT +yWWWgwHoSAWEuml7EGbE/2AK2h3k0MdfiWLzdmpPCRG/RJHk6UB1pMHPilI+c0MVu16OPpKbg5Vf +LTv7dsAB40AzKsvyYw88/Ezi1osTXo6QQwda7uefvudirtb8FcQM9R66cJxl3kt1FXbpYwheIm/p +j1mq64swCoIYu4NrsUYtn6CV542DTQMI5QdXkn+PzUUly8F6kDp+KpMNd0avfWNL5+O++z+F5Szy +1CPta1D7EQ/eYmMP+mOQ35oifWIoFCpN6qQVBS/Hob1J/UUyg7BW +-----END CERTIFICATE----- diff --git a/src/main/resources/cert/alipayRootCert.crt b/src/main/resources/cert/alipayRootCert.crt new file mode 100644 index 0000000..76417c5 --- /dev/null +++ b/src/main/resources/cert/alipayRootCert.crt @@ -0,0 +1,88 @@ +-----BEGIN CERTIFICATE----- +MIIBszCCAVegAwIBAgIIaeL+wBcKxnswDAYIKoEcz1UBg3UFADAuMQswCQYDVQQG +EwJDTjEOMAwGA1UECgwFTlJDQUMxDzANBgNVBAMMBlJPT1RDQTAeFw0xMjA3MTQw +MzExNTlaFw00MjA3MDcwMzExNTlaMC4xCzAJBgNVBAYTAkNOMQ4wDAYDVQQKDAVO +UkNBQzEPMA0GA1UEAwwGUk9PVENBMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE +MPCca6pmgcchsTf2UnBeL9rtp4nw+itk1Kzrmbnqo05lUwkwlWK+4OIrtFdAqnRT +V7Q9v1htkv42TsIutzd126NdMFswHwYDVR0jBBgwFoAUTDKxl9kzG8SmBcHG5Yti +W/CXdlgwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFEwysZfZ +MxvEpgXBxuWLYlvwl3ZYMAwGCCqBHM9VAYN1BQADSAAwRQIgG1bSLeOXp3oB8H7b +53W+CKOPl2PknmWEq/lMhtn25HkCIQDaHDgWxWFtnCrBjH16/W3Ezn7/U/Vjo5xI +pDoiVhsLwg== +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIF0zCCA7ugAwIBAgIIH8+hjWpIDREwDQYJKoZIhvcNAQELBQAwejELMAkGA1UE +BhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNVBAsMF0NlcnRpZmlj +YXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5jaWFsIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IFIxMB4XDTE4MDMyMTEzNDg0MFoXDTM4MDIyODEzNDg0 +MFowejELMAkGA1UEBhMCQ04xFjAUBgNVBAoMDUFudCBGaW5hbmNpYWwxIDAeBgNV +BAsMF0NlcnRpZmljYXRpb24gQXV0aG9yaXR5MTEwLwYDVQQDDChBbnQgRmluYW5j +aWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFIxMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEAtytTRcBNuur5h8xuxnlKJetT65cHGemGi8oD+beHFPTk +rUTlFt9Xn7fAVGo6QSsPb9uGLpUFGEdGmbsQ2q9cV4P89qkH04VzIPwT7AywJdt2 +xAvMs+MgHFJzOYfL1QkdOOVO7NwKxH8IvlQgFabWomWk2Ei9WfUyxFjVO1LVh0Bp +dRBeWLMkdudx0tl3+21t1apnReFNQ5nfX29xeSxIhesaMHDZFViO/DXDNW2BcTs6 +vSWKyJ4YIIIzStumD8K1xMsoaZBMDxg4itjWFaKRgNuPiIn4kjDY3kC66Sl/6yTl +YUz8AybbEsICZzssdZh7jcNb1VRfk79lgAprm/Ktl+mgrU1gaMGP1OE25JCbqli1 +Pbw/BpPynyP9+XulE+2mxFwTYhKAwpDIDKuYsFUXuo8t261pCovI1CXFzAQM2w7H +DtA2nOXSW6q0jGDJ5+WauH+K8ZSvA6x4sFo4u0KNCx0ROTBpLif6GTngqo3sj+98 +SZiMNLFMQoQkjkdN5Q5g9N6CFZPVZ6QpO0JcIc7S1le/g9z5iBKnifrKxy0TQjtG +PsDwc8ubPnRm/F82RReCoyNyx63indpgFfhN7+KxUIQ9cOwwTvemmor0A+ZQamRe +9LMuiEfEaWUDK+6O0Gl8lO571uI5onYdN1VIgOmwFbe+D8TcuzVjIZ/zvHrAGUcC +AwEAAaNdMFswCwYDVR0PBAQDAgEGMAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFF90 +tATATwda6uWx2yKjh0GynOEBMB8GA1UdIwQYMBaAFF90tATATwda6uWx2yKjh0Gy +nOEBMA0GCSqGSIb3DQEBCwUAA4ICAQCVYaOtqOLIpsrEikE5lb+UARNSFJg6tpkf +tJ2U8QF/DejemEHx5IClQu6ajxjtu0Aie4/3UnIXop8nH/Q57l+Wyt9T7N2WPiNq +JSlYKYbJpPF8LXbuKYG3BTFTdOVFIeRe2NUyYh/xs6bXGr4WKTXb3qBmzR02FSy3 +IODQw5Q6zpXj8prYqFHYsOvGCEc1CwJaSaYwRhTkFedJUxiyhyB5GQwoFfExCVHW +05ZFCAVYFldCJvUzfzrWubN6wX0DD2dwultgmldOn/W/n8at52mpPNvIdbZb2F41 +T0YZeoWnCJrYXjq/32oc1cmifIHqySnyMnavi75DxPCdZsCOpSAT4j4lAQRGsfgI +kkLPGQieMfNNkMCKh7qjwdXAVtdqhf0RVtFILH3OyEodlk1HYXqX5iE5wlaKzDop +PKwf2Q3BErq1xChYGGVS+dEvyXc/2nIBlt7uLWKp4XFjqekKbaGaLJdjYP5b2s7N +1dM0MXQ/f8XoXKBkJNzEiM3hfsU6DOREgMc1DIsFKxfuMwX3EkVQM1If8ghb6x5Y +jXayv+NLbidOSzk4vl5QwngO/JYFMkoc6i9LNwEaEtR9PhnrdubxmrtM+RjfBm02 +77q3dSWFESFQ4QxYWew4pHE0DpWbWy/iMIKQ6UZ5RLvB8GEcgt8ON7BBJeMc+Dyi +kT9qhqn+lw== +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIICiDCCAgygAwIBAgIIQX76UsB/30owDAYIKoZIzj0EAwMFADB6MQswCQYDVQQG +EwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UECwwXQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNpYWwgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgRTEwHhcNMTkwNDI4MTYyMDQ0WhcNNDkwNDIwMTYyMDQ0 +WjB6MQswCQYDVQQGEwJDTjEWMBQGA1UECgwNQW50IEZpbmFuY2lhbDEgMB4GA1UE +CwwXQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxMTAvBgNVBAMMKEFudCBGaW5hbmNp +YWwgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgRTEwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAASCCRa94QI0vR5Up9Yr9HEupz6hSoyjySYqo7v837KnmjveUIUNiuC9pWAU +WP3jwLX3HkzeiNdeg22a0IZPoSUCpasufiLAnfXh6NInLiWBrjLJXDSGaY7vaokt +rpZvAdmjXTBbMAsGA1UdDwQEAwIBBjAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRZ +4ZTgDpksHL2qcpkFkxD2zVd16TAfBgNVHSMEGDAWgBRZ4ZTgDpksHL2qcpkFkxD2 +zVd16TAMBggqhkjOPQQDAwUAA2gAMGUCMQD4IoqT2hTUn0jt7oXLdMJ8q4vLp6sg +wHfPiOr9gxreb+e6Oidwd2LDnC4OUqCWiF8CMAzwKs4SnDJYcMLf2vpkbuVE4dTH +Rglz+HGcTLWsFs4KxLsq7MuU+vJTBUeDJeDjdA== +-----END CERTIFICATE----- + +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIUEMdk6dVgOEIS2cCP0Q43P90Ps5YwDQYJKoZIhvcNAQEF +BQAwajELMAkGA1UEBhMCQ04xEzARBgNVBAoMCmlUcnVzQ2hpbmExHDAaBgNVBAsM +E0NoaW5hIFRydXN0IE5ldHdvcmsxKDAmBgNVBAMMH2lUcnVzQ2hpbmEgQ2xhc3Mg +MiBSb290IENBIC0gRzMwHhcNMTMwNDE4MDkzNjU2WhcNMzMwNDE4MDkzNjU2WjBq +MQswCQYDVQQGEwJDTjETMBEGA1UECgwKaVRydXNDaGluYTEcMBoGA1UECwwTQ2hp +bmEgVHJ1c3QgTmV0d29yazEoMCYGA1UEAwwfaVRydXNDaGluYSBDbGFzcyAyIFJv +b3QgQ0EgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOPPShpV +nJbMqqCw6Bz1kehnoPst9pkr0V9idOwU2oyS47/HjJXk9Rd5a9xfwkPO88trUpz5 +4GmmwspDXjVFu9L0eFaRuH3KMha1Ak01citbF7cQLJlS7XI+tpkTGHEY5pt3EsQg +wykfZl/A1jrnSkspMS997r2Gim54cwz+mTMgDRhZsKK/lbOeBPpWtcFizjXYCqhw +WktvQfZBYi6o4sHCshnOswi4yV1p+LuFcQ2ciYdWvULh1eZhLxHbGXyznYHi0dGN +z+I9H8aXxqAQfHVhbdHNzi77hCxFjOy+hHrGsyzjrd2swVQ2iUWP8BfEQqGLqM1g +KgWKYfcTGdbPB1MCAwEAAaNjMGEwHQYDVR0OBBYEFG/oAMxTVe7y0+408CTAK8hA +uTyRMB8GA1UdIwQYMBaAFG/oAMxTVe7y0+408CTAK8hAuTyRMA8GA1UdEwEB/wQF +MAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBLnUTfW7hp +emMbuUGCk7RBswzOT83bDM6824EkUnf+X0iKS95SUNGeeSWK2o/3ALJo5hi7GZr3 +U8eLaWAcYizfO99UXMRBPw5PRR+gXGEronGUugLpxsjuynoLQu8GQAeysSXKbN1I +UugDo9u8igJORYA+5ms0s5sCUySqbQ2R5z/GoceyI9LdxIVa1RjVX8pYOj8JFwtn +DJN3ftSFvNMYwRuILKuqUYSHc2GPYiHVflDh5nDymCMOQFcFG3WsEuB+EYQPFgIU +1DHmdZcz7Llx8UOZXX2JupWCYzK1XhJb+r4hK5ncf/w8qGtYlmyJpxk3hr1TfUJX +Yf4Zr0fJsGuv +-----END CERTIFICATE----- \ No newline at end of file diff --git a/src/main/resources/cert/appPublicCert.crt b/src/main/resources/cert/appPublicCert.crt new file mode 100644 index 0000000..a12dea4 --- /dev/null +++ b/src/main/resources/cert/appPublicCert.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDjzCCAnegAwIBAgIQICISFPMNDPadFdV3VF7atzANBgkqhkiG9w0BAQsFADCBkTELMAkGA1UE +BhMCQ04xGzAZBgNVBAoMEkFudCBGaW5hbmNpYWwgdGVzdDElMCMGA1UECwwcQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkgdGVzdDE+MDwGA1UEAww1QW50IEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eSBDbGFzcyAyIFIxIHRlc3QwHhcNMjIxMjE0MTEzNjE3WhcNMjMxMjE5MTEzNjE3WjBh +MQswCQYDVQQGEwJDTjEVMBMGA1UECgwM5rKZ566x546v5aKDMQ8wDQYDVQQLDAZBbGlwYXkxKjAo +BgNVBAMMITIwODgxMDIxNzUyMDcyOTItMjAxNjA5MTEwMDQ4OTQ4NjCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAJFjmRNQkJ1d2kWZ4bn8WvIUWKu2+wMDQ5nOMaIGtKo+bx3o1RaAWYct +XJL82GkdUr+JpiBy7W1iFl0quZJIo2n9tyxsTGTswq1mtYJVKonHELxN1L2Xz9PjU8wlzQwxb2Rm +JlW2/SpUGaRiZxzYJHhHXbqvPH8D/xG+x6Hwq9zEF/ZIDMCLi5wiXhK7KFXDOBFYdOw0zwCmGIeY +73htk56kay1HoTjwACvZzkw8ff5FRA76/5/7ZEj6R6Hga/LMmYJXfntPPYW/wuMiBI7rU5f4s6El +S1A2uwK4+kbepg9klOYR2Lg30SNz4hj4k8KNtoeWnzrTlWoZj3SfDErJuuMCAwEAAaMSMBAwDgYD +VR0PAQH/BAQDAgTwMA0GCSqGSIb3DQEBCwUAA4IBAQC9YAgw5uwHUgY73t8eABW8LzrhLoUafN/j +WG6QataRgaTHbNCuCz5yWTMmD7hZGmb8NuZzaLOPD+/0yM5nz+w/nc+Emc6hzTCrBVtFX80nnM3j +lIDBRGJRS2JlyrwL80DxoVCbY7JLkSRpGhc9RYLrNfPjpxhxchJ/8V1JU21rL5GKSdaR2YJDvANi +Bth321Q0G6djxfLPjx3zXp8VTGDdhRZjblJ7EddK4kaQ3RKTm4+UivUYMMQ+esD8NnoHTGvDXRCi +rqd+EtAZZ84yqW7YKKTjsh9a3tLBFwFMc2A2WM3s6fXtrFAiffsXwcyqaKTXibVTFE9t2sTUUaPF +IoJu +-----END CERTIFICATE----- \ No newline at end of file diff --git a/src/main/resources/express.properties b/src/main/resources/express.properties new file mode 100644 index 0000000..c7ce1b5 --- /dev/null +++ b/src/main/resources/express.properties @@ -0,0 +1,4 @@ +express.dev-id=1651421896 +express.dev-key=2f10570c5057570fe0e488a425a6d813 +express.server-host=https://openic.sf-express.com +express.shop-id=3243279847393 diff --git a/src/main/resources/mp-alipay.properties b/src/main/resources/mp-alipay.properties new file mode 100644 index 0000000..e0d3d36 --- /dev/null +++ b/src/main/resources/mp-alipay.properties @@ -0,0 +1,32 @@ +# APPID +alipay.app-id=2021003156628508 + +# ??ID +alipay.seller-id=2088431805524422 + +# ????? +alipay.gateway-url=https://openapi.alipay.com/gateway.do + +# ???? +alipay.merchant-private-key=MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCB0yG7GKPjNIEhpjS6T4um1W92BcgLKh2p28vB12dapWFB9eg3a1/jh66egKEyPR0NowZGvcaWOAZ/HXyCcDnpnFix/s/Yqb85Uwq9uFrkmB3ms2RHm3TM+WNnENcLy0wVCekcR1kcZZuYVWs/xHar/omoSAAhWdMWApVAwrFFCHZxCuIw0VaJbmlfFQedlVbfXgE94n+lNi5rG0JSnMo6MQimBCaeIfsZlWbKFBH9mrEpkte+Q4vJDH6p6odpG/hkhC+9VascMLwhW4N3+5g7GDRj1QGM7HjWou2cQ36w5LCU8xk55ur50c6HcxoQqZjFUvykfCYSNMThUhLHrnnHAgMBAAECggEACECplkEcueauhrsQAv/nerV6nmADtWH5/MAyFaJhuYtlwVGmb09uCwKnAQBgPtdPr3w7e+e4ZfgtwYrYTVpg9A6yPK5b/APeWgCDYEgFzx40WGPy7fJd3GHGBdk2MlO8BGJa5SdL7NgwqeBULvuIJ6rIiV/6UiRpnK6RWkqGBkNKO9AqQSGbvTI8jJ+NBAqmLeIk7Os9kCOiwZLqwPI9XVd+/exeOwsMTo/K5mKqpc1MltAhXYoeuzHGYtOyPCsgOOu3EBbivSCBN5gqy87JohJAScVmCyPTmDq1E2N6JkSujrBpS70VstnAt6g4fZQoidC9aSqF/i8xID8a0rI8wQKBgQDBsG/MQnLvvuonTLeHd7A737V4qRWTtntpxXJ8VWTl+M9PYoA7J4SKRicxvCHka2Cr1ITL62bEfl1MRFmz9BsKlpBVxhsOT49CPMIedpq3e92iOR/SqF161A1DBSVNYziTIbE6h5I1gZp+ZcFLKXXtsu0LpzNgYJlnS6V0e66UMQKBgQCrlwqNL+H5PPAOhiFswUK9ztjoAks7nBE8B//EJ29M3mUFf0isNMj8ta7DPQsQK1zmej/PQSKRoG/t55ao8Svrd29d2V4UYUNQWMb3YWN+QGdIy1ta25hJlwdkKbQJIYAQ8/8i5Y6BnCLwLuj7KMpWBuPWkl2YDfRjJlAhz85HdwKBgQCweVFjiieuyQQPSpbtlt+7rdhqV6SRMXLArGXjYurLnidE7Tpoq1jXo5OSfRdkR3GNHdTg91prLbdUBfK1Q3Rf8U8Q169PGq4sa69ykh3lj7YgWGvmRADoKMzsg4O5Pu4NIGWaLmvI1I0vHQdAtEX+jUftlin5ZgpfU00tFIO8AQKBgQClK45Hm9js3sDBalHQazQAm5TluBeNOMzKOXT073TOzKD3qq9cvK7fu0+PtjnpBaS2YuT7btqEzagQnMXEt+osDdrQvwU1nu558AsOY9uu0vXY949npUwxQkUmIJKh23J4Xzav88K6dn6XLsCry3cBWj6E9H1NedlOe7nU4kDRPwKBgQC1oK7oeO0qSNGE8bhnZLAyRnmWLGGSPMf+oBocox4nixcknrPjsWBEJcI0keGanaiam94VkftFnl2c6ZW8229bpimdYj9891VN+8NvBSYTR7lOuTXRZUtTLu9ocgJ/aGQJRXHs+hwZeHcY1PnEkCi6IJXb6e2+Kq2mbdz30mqOww== + +# ????? +alipay.alipay-public-key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgdMhuxij4zSBIaY0uk+LptVvdgXICyodqdvLwddnWqVhQfXoN2tf44eunoChMj0dDaMGRr3GljgGfx18gnA56ZxYsf7P2Km/OVMKvbha5Jgd5rNkR5t0zPljZxDXC8tMFQnpHEdZHGWbmFVrP8R2q/6JqEgAIVnTFgKVQMKxRQh2cQriMNFWiW5pXxUHnZVW314BPeJ/pTYuaxtCUpzKOjEIpgQmniH7GZVmyhQR/ZqxKZLXvkOLyQx+qeqHaRv4ZIQvvVWrHDC8IVuDd/uYOxg0Y9UBjOx41qLtnEN+sOSwlPMZOebq+dHOh3MaEKmYxVL8pHwmEjTE4VISx655xwIDAQAB + +# ?????? +alipay.content-key=hNlmFfkrJX0tmIuNqeee0w== + +# ?????? +alipay.return-url=https://78d3-240e-355-73e-b300-4d34-1851-e9b7-3a3b.jp.ngrok.io +# +#alipay.app-cert-path=/Users/gxwebsoft/Documents/cert/appCertPublicKey.crt +# +#alipay.alipay-cert-path=/Users/gxwebsoft/Documents/cert/alipayCertPublicKey_RSA2.crt +# +#alipay.alipay-root-cert-path=/Users/gxwebsoft/Documents/cert/alipayRootCert.crt +# +#alipay.appPublicKey=/www/jar/com.gxwebsoft.server/cert/appCertPublicKey.crt +# +#alipay.alipayPublicCert=/www/jar/com.gxwebsoft.server/cert/alipayCertPublicKey_RSA2.crt +# +#alipay.alipayRootCert-path=/www/jar/com.gxwebsoft.server/cert/alipayRootCert.crt diff --git a/src/main/resources/wxpay.properties b/src/main/resources/wxpay.properties new file mode 100644 index 0000000..7cbf33e --- /dev/null +++ b/src/main/resources/wxpay.properties @@ -0,0 +1,20 @@ +# ??? +wxpay.mch-id=1246610101 + +# ????? +wxpay.mch-serial-no=1296F3D7E17B5E6437B14F6CD4D84EFAC3537D19 + +# ?????? +wxpay.key-path=apiclient_cert.pem + +# APIv3?? +wxpay.api-v3-key=zSYK4526prYmMTg2hfsHvPdRpufqhjZW + +# APPID +wxpay.app-id=wxa67c676fc445590e + +# ??????? +wxpay.domain=https://api.mch.weixin.qq.com + +# ???????? +wxpay.notify-domain=https://78d3-240e-355-73e-b300-4d34-1851-e9b7-3a3b.jp.ngrok.io diff --git a/src/test/java/com/gxwebsoft/RedisTest.java b/src/test/java/com/gxwebsoft/RedisTest.java new file mode 100644 index 0000000..e3fe105 --- /dev/null +++ b/src/test/java/com/gxwebsoft/RedisTest.java @@ -0,0 +1,30 @@ +package com.gxwebsoft; + +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.StringRedisTemplate; + +import javax.annotation.Resource; + +@SpringBootTest +public class RedisTest { + @Resource + private StringRedisTemplate stringRedisTemplate; +// +// @Test +// public void test(){ +//// stringRedisTemplate.opsForValue().set("test:add:2",Long.toString(1L)); +//// stringRedisTemplate.opsForValue().increment("test:add:2",10L); +//// stringRedisTemplate.opsForValue().decrement("test:add:2",2L); +//// stringRedisTemplate.opsForValue().append("test:add:2","ssss"); +// HashMap map = new HashMap<>(); +// map.put("name","李四"); +// map.put("phone","13800138001"); +// HashMap map2 = new HashMap<>(); +// map2.put("name","赵六"); +// map2.put("phone","13800138001"); +// HashMap map3 = new HashMap<>(); +// map3.put("name","张三"); +// map3.put("phone","13800138001"); +// stringRedisTemplate.opsForSet().add("test:set:2", JSONUtil.toJSONString(map),JSONUtil.toJSONString(map2),JSONUtil.toJSONString(map3)); +// } +} diff --git a/src/test/java/com/gxwebsoft/TestMain.java b/src/test/java/com/gxwebsoft/TestMain.java new file mode 100644 index 0000000..4bed4ab --- /dev/null +++ b/src/test/java/com/gxwebsoft/TestMain.java @@ -0,0 +1,283 @@ +package com.gxwebsoft; + +import com.gxwebsoft.apps.service.HualalaService; +import com.gxwebsoft.apps.service.TestDataService; +import com.gxwebsoft.common.system.mapper.RoleMapper; +import com.gxwebsoft.common.system.mapper.UserMapper; +import com.gxwebsoft.common.system.service.SettingService; +import com.gxwebsoft.common.system.service.UserService; +import com.gxwebsoft.love.service.CertificateService; +import com.gxwebsoft.shop.mapper.OrderGoodsMapper; +import com.gxwebsoft.shop.mapper.OrderMapper; +import com.gxwebsoft.shop.service.OrderService; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.StringRedisTemplate; + +import javax.annotation.Resource; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +/** + * Created by WebSoft on 2020-03-23 23:37 + */ +@SpringBootTest +public class TestMain { + @Resource + private StringRedisTemplate stringRedisTemplate; + @Resource + private OrderService orderService; + @Resource + private OrderGoodsMapper orderGoodsMapper; + @Resource + private OrderMapper orderMapper; + @Resource + private TestDataService testDataService; + @Resource + private HualalaService hualalaService; + @Resource + private SettingService settingService; + @Resource + private UserService userService; + @Resource + private UserMapper userMapper; + @Resource + private RoleMapper roleMapper; + + @Resource + private CertificateService certificateService; + + /** + * 生成唯一的key用于jwt工具类 + */ +// @Test +// public void testGenJwtKey() { +// System.out.println(JwtUtil.encodeKey(JwtUtil.randomKey())); +// } + + /** + * 生成加密后的登录密码 + * @return + */ + @Test + public void testEncodePassword() throws UnsupportedEncodingException { +// DateTime date = DateUtil.date(); +// System.out.println("date = " + date); +// final String today = DateUtil.today(); +// System.out.println("today = " + today); +// final DateTime dateTime = DateUtil.beginOfDay(date); +// System.out.println("dateTime = " + dateTime); +// System.out.println(new BCryptPasswordEncoder().encode("admin")); + String encodedReturnUrl = URLEncoder.encode("https://server.gxwebsoft.com/api/open/wx-work/saveAccessToken","UTF-8"); +// System.out.println("encodedReturnUrl = " + encodedReturnUrl); +// System.out.println("encodedReturnUrl = " + encodedReturnUrl); +// log.info("生成加密后的登录密码:" + encodedReturnUrl); + } + +// @Test +// public void test3() { +// String key = "test:user:10"; +// HashMap map = new HashMap<>(); +// map.put("name", "科技小王子"); +// map.put("sex", "男"); +// map.put("phone", "13737128880"); +// map.put("money", "238585.215"); +// stringRedisTemplate.opsForHash().putAll(key, map); +// } + +// OrderParam param = new OrderParam(); +// param.setPayStatus(30); +// param.setOrderNo("202303118310602"); +// final List all = orderMapper.getAll(param); +// System.out.println("all = " + all); +// OrderParam param = new OrderParam(); +// param.setOrderNo("2023031181184283"); +// param.setPayStatus(20); +// boolean b = orderMapper.updatePayStatus(param); +// System.out.println("b = " + b); + +// Order order = orderService.getByOutTradeNo("20230301761610059"); +// OrderParam orderParam = new OrderParam(); +// orderParam.setPayStatus(20); +// orderParam.setOrderNo("20230301761610059"); +// orderMapper.updatePayStatus(orderParam); +// System.out.println("order = " + order); +// Order order = new Order(); +// order.setOrderId(400); +// order.setComments("sdfsdfsdfs"); +// +// boolean update = orderService.lambdaUpdate() +// .eq(Order::getOrderId, order.getOrderId()) +// .update(order); +// System.out.println("update = " + update); + +// OrderParam param = new OrderParam(); +// param.setOrderNo("20230301761610059"); +// Order order = orderService.getByOutTradeNo("20230301761610059"); +// System.out.println("order = " + order); +// final int i = orderMapper.updateById(order); +// System.out.println("i = " + i); + + +// final Order one = param.getOne(orderMapper.getOne(param)); +// one.setTotalPrice(new BigDecimal("2.22")); +// one.setPayStatus(20); +// orderMapper.updateById(one); +// System.out.println("one = " + one); +// Order order = orderService.getByOutTradeNo("20230301761610059"); +// order.setPayStatus(20); +// order.setTotalPrice(new BigDecimal("1.11")); +// if (orderService.updateById(order)) { +// System.out.println("成功"); +// } + +// @Test +// public void test() { +// final TestData testData = new TestData(); +// testData.setTitle("测试"); +// testData.setContent("内容..."); +// testData.setTenantId(10); +// testDataService.save(testData); + +// final boolean b = testDataService.removeById(2496); + +// } + +// @Test +// public void query() { +// HashMap params = new HashMap<>(); +// params.put("shopID", Long.valueOf("76230180")); +// JSONObject response = hualalaService.doPost("/doc/getPaySubject", params); +// System.out.println("response = " + response); +// } + + // 推送订单到哗啦啦 +// @Test +// public void pushOrder(){ +// Order orderInfo = orderService.getByOutTradeNo("202303118345835"); +// final List goodsInfo = orderGoodsMapper.selectByOrderId(orderInfo.getOrderId()); +// System.out.println("orderInfo = " + orderInfo); +// System.out.println("goodsInfo = " + goodsInfo); +// // 菜品信息 +// ArrayList orderItem = new ArrayList<>(); +// JSONObject item = new JSONObject(); +// item.put("foodID",603798638); +// item.put("foodName","肉汁煲霜打萝卜."); +// item.put("foodUnit","份"); +// item.put("foodUnitID","1748099318"); +// item.put("isSetFood",0); +// item.put("isBatching",0); +// item.put("foodCount",1); +// item.put("originPrice","100"); +// item.put("takeoutPackagingFee","1"); +// item.put("isDiscount",0); +// item.put("duePrice","1"); +// orderItem.add(item); +// // 支付信息 +// ArrayList payInfo = new ArrayList<>(); +// JSONObject payItem = new JSONObject(); +// payItem.put("paymentSubjectID",Long.valueOf("51010440")); +// payItem.put("paymentSubjectName","微信小程序实收"); +// payItem.put("dueAmount","1"); +// payItem.put("paymentStatus",20); +// payItem.put("payWay",70); +// payInfo.add(payItem); +// +// // 订单信息 +// JSONObject order = new JSONObject(); +// order.put("orderSubType",20); +// order.put("orderStatus",20); +// order.put("discountTotalAmount","1"); +// order.put("dinners",1); +// // 期望送达时间 +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMddHHmm"); +// order.put("orderTime",sdf1.format(orderInfo.getCreateTime())); +// order.put("orderItem",orderItem); +// order.put("takeoutAddress","外送地址:"); +// order.put("deliveryAmount","0"); +// order.put("serviceAmount","0"); +// order.put("channelKey","399_weixin"); +// order.put("isAlreadyPaid","1"); +// order.put("orderMode",1); +// order.put("OrderRemark",""); +// order.put("payment",payInfo); +// +// HashMap params = new HashMap<>(); +// params.put("shopID",Long.valueOf("76230180")); +// params.put("isCheackOut",0); +// params.put("isThirdPay",2); +// params.put("bankCode","weChat"); +// params.put("order",order); +// params.put("isSentMsg",1); +// params.put("msgType",120); +// params.put("thirdOrderID",orderInfo.getOrderNo()); +// +//// JSONObject response = hualalaService.doPost("/order/submitordernew", params); +//// System.out.println("response = " + response); +// } + + +// @Test +// public void chat() { +// +// String endpoint = "https://api.openai.com/v1/engines/davinci-codex/completions"; +// String apiKey = "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"; +// +// +// // 构建请求 +// HttpRequest request = HttpRequest.get("https://api.openai.com/v1/engines/davinci-codex/completions") +// .header("Authorization", "Bearer ".concat(apiKey)); +// +// // 发送请求并获取响应 +// HttpResponse response = request.execute(); +// +// // 处理响应结果 +// int statusCode = response.getStatus(); +// String body = response.body(); +// System.out.println("body = " + body); +// } + + +// @Test +// public void chatGPT() { +// String abc = "{\"finish_reason\":\"stop\",\"index\":0,\"message\":{\"role\":\"assistant\",\"content\":\"您好!有什么我能为您效劳的吗?\"}}"; +// final JSONObject jsonObject = JSONObject.parseObject(abc); +// final String message = jsonObject.getString("message"); +// System.out.println("message = " + message); +// final JSONObject jsonObject1 = JSONObject.parseObject(message); +// final String content = jsonObject1.getString("content"); +// System.out.println("content = " + content); +// } + + +// 自定义参数,这部分是Hutool工具封装的 +// @Test +// public void initQrConfig() { +// // 生成指定url对应的二维码到文件,宽和高都是300像素 +// QrCodeUtil.generate("https://hutool.cn/", 300, 300, FileUtil.file("/Users/gxwebsoft/Documents/uploads/qrcode.jpg")); +// } + + + @Test + public void allIdCard() { +// List users = userService.list(new QueryWrapper<>()); +// System.out.println(users.size()); +// List certificateList = new ArrayList<>(); +// for (User user : users) { +// Certificate certificate = new Certificate(); +// certificate.setFullName("xxx"); +// certificate.setCertificateCode("XXX"); +// certificate.setCertificateType("idCard"); +// certificate.setExpirationTime(LocalDateTime.now()); +// certificate.setAuthentication(1); +// certificate.setUserId(user.getUserId()); +// certificate.setTenantId(10053); +// certificateService.save(certificate); +// } + + } + + + public void setProfile(){ + } +} diff --git a/src/test/java/com/gxwebsoft/WebSoftApplicationTests.java b/src/test/java/com/gxwebsoft/WebSoftApplicationTests.java new file mode 100644 index 0000000..5a024f5 --- /dev/null +++ b/src/test/java/com/gxwebsoft/WebSoftApplicationTests.java @@ -0,0 +1,13 @@ +package com.gxwebsoft; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class WebSoftApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/AppsGenerator.java b/src/test/java/com/gxwebsoft/generator/AppsGenerator.java new file mode 100644 index 0000000..d120443 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/AppsGenerator.java @@ -0,0 +1,189 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class AppsGenerator { + // 输出位置 + 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"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在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_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 PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "apps"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "apps_equipment", +// "apps_equipment_fault", +// "apps_equipment_alarm", +// "apps_equipment_record" +// "apps_equipment_order" +// "apps_cashier", +// "apps_hualala_card", +// "apps_hualala_card_benefits", +// "apps_hualala_food", +// "apps_hualala_shop", +// "apps_hualala_cart_food", +// "apps_hualala_food_category", +// "apps_test_data", +// "apps_link", +// "apps_bc_agent", +// "apps_bc_temporary", +// "apps_link", +// "apps_bc_plan", +// "apps_bc_food", +// "apps_bc_equipment", +// "apps_bc_cookbook" + "apps_bc_export" +// "apps_equipment_order_goods" + + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "apps_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/CmsGenerator.java b/src/test/java/com/gxwebsoft/generator/CmsGenerator.java new file mode 100644 index 0000000..0aad1da --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/CmsGenerator.java @@ -0,0 +1,178 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class CmsGenerator { + // 输出位置 + 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"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在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_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 PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "cms"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "cms_article", +// "cms_article_category", +// "cms_article_like", + "cms_article_comment", +// "cms_docs", +// "cms_docs", +// "cms_docs", +// "cms_docs", +// "cms_docs", +// "cms_docs", +// "cms_docs", +// "cms_docs", +// "cms_docs", + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "cms_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/CodeGenerator.java b/src/test/java/com/gxwebsoft/generator/CodeGenerator.java new file mode 100644 index 0000000..c3cc75a --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/CodeGenerator.java @@ -0,0 +1,167 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class CodeGenerator { + // 输出位置 + 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"; + // 作者名称 + private static final String AUTHOR = "WebSoft"; + // 是否在xml中添加二级缓存配置 + private static final boolean ENABLE_CACHE = false; + // 数据库连接配置 + private static final String DB_URL = "jdbc:mysql://localhost:3306/websoft-api?useUnicode=true&useSSL=false&characterEncoding=utf8"; + private static final String DB_DRIVER = "com.mysql.cj.jdbc.Driver"; + private static final String DB_USERNAME = "root"; + private static final String DB_PASSWORD = "123456"; + // 包名 + private static final String PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "test"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ + "sys_user", + "sys_role" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "sys_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/HouseGenerator.java b/src/test/java/com/gxwebsoft/generator/HouseGenerator.java new file mode 100644 index 0000000..1c24888 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/HouseGenerator.java @@ -0,0 +1,167 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class HouseGenerator { + // 输出位置 + 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"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在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_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 PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "house"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ + "house_info", + "house_reservation" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "house_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/LoveGenerator.java b/src/test/java/com/gxwebsoft/generator/LoveGenerator.java new file mode 100644 index 0000000..a321d3f --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/LoveGenerator.java @@ -0,0 +1,173 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class LoveGenerator { + // 输出位置 + 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"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在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_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 PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "love"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "love_user_profile", +// "love_user_plan", +// "love_user_plan_price", +// "love_user_plan_log", +// "love_user_plan_icon", +// "love_user_plan_equity", +// "love_certificate", + "love_profit" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "love_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/OaGenerator.java b/src/test/java/com/gxwebsoft/generator/OaGenerator.java new file mode 100644 index 0000000..5eb7c05 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/OaGenerator.java @@ -0,0 +1,180 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class OaGenerator { + // 输出位置 + 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"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在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_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 PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "oa"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "oa_project", +// "oa_link", +// "oa_assets", +// "oa_customer", +// "oa_task", +// "oa_task_record", +// "oa_task_user", +// "sys_tenant", +// "oa_app", +// "oa_setting", +// "oa_assets", +// "oa_app_user", +// "oa_notice" + "oa_assets_user", + + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "oa_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/ShopGenerator.java b/src/test/java/com/gxwebsoft/generator/ShopGenerator.java new file mode 100644 index 0000000..594729f --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/ShopGenerator.java @@ -0,0 +1,209 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +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_DIR = "/src/main/java"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在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_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 PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "shop"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "shop_order", +// "shop_goods", +// "shop_store", +// "shop_cart", +// "shop_express", +// "shop_category", +// "shop_goods_image", +// "shop_comment", +// "shop_goods_service" +// "shop_member" +// "shop_user_balance_log", +// "shop_user_address", +// "shop_user_coupon", +// "shop_user_follow", +// "shop_user_oauth", +// "shop_user_points_log", +// "shop_cart" +// "shop_info" +// "shop_coupon" +// "shop_clerk" +// "shop_merchant", +// "shop_merchant_clerk" +// "shop_merchant_withdraw" +// "shop_order_address" +// "shop_payment", +// "shop_payment_template", +// "shop_payment_trade" +// "shop_order_goods" +// "shop_user_oauth" +// "shop_order_renew" +// "shop_recharge_order", +// "shop_recharge_order_plan", +// "shop_recharge_plan", +// "shop_user_balance_log" +// "shop_user_referee", +// "shop_order_refund", +// "shop_order_refund_address", +// "shop_user_grade", +// "shop_user_grade_log", +// "shop_user_comment", +// "shop_user_like", +// "shop_user_look" + "shop_user_feedback" + + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "shop_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/SysGenerator.java b/src/test/java/com/gxwebsoft/generator/SysGenerator.java new file mode 100644 index 0000000..d1c2ed2 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/SysGenerator.java @@ -0,0 +1,175 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class SysGenerator { + // 输出位置 + 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"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在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_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 PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "common.system"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ + +// "sys_user", + "sys_tenant", +// "sys_setting" +// "sys_access_key" +// "sys_company", +// "sys_industry" +// "sys_plug", +// "sys_company" + + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "sys_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/TowerGenerator.java b/src/test/java/com/gxwebsoft/generator/TowerGenerator.java new file mode 100644 index 0000000..94134f9 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/TowerGenerator.java @@ -0,0 +1,176 @@ +package com.gxwebsoft.generator; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.InjectionConfig; +import com.baomidou.mybatisplus.generator.config.*; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.gxwebsoft.generator.engine.BeetlTemplateEnginePlus; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成工具 + * + * @author WebSoft + * @since 2021-09-05 00:31:14 + */ +public class TowerGenerator { + // 输出位置 + 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"; + // 作者名称 + private static final String AUTHOR = "科技小王子"; + // 是否在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_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 PACKAGE_NAME = "com.gxwebsoft"; + // 模块名 + private static final String MODULE_NAME = "tower"; + // 需要生成的表 + private static final String[] TABLE_NAMES = new String[]{ +// "tower_equipment", +// "tower_warehouse", +// "tower_accessory" +// "tower_project", +// "tower_model", +// "tower_project_user", +// "tower_project_order", +// "tower_place", +// "tower_place_safety", +// "tower_place_standard", + "tower_project_place" + }; + // 需要去除的表前缀 + private static final String[] TABLE_PREFIX = new String[]{ + "sys_", + "tb_" + }; + // 不需要作为查询参数的字段 + private static final String[] PARAM_EXCLUDE_FIELDS = new String[]{ + "tenant_id", + "create_time", + "update_time" + }; + // 查询参数使用String的类型 + private static final String[] PARAM_TO_STRING_TYPE = new String[]{ + "Date", + "LocalDate", + "LocalTime", + "LocalDateTime" + }; + // 查询参数使用EQ的类型 + private static final String[] PARAM_EQ_TYPE = new String[]{ + "Integer", + "Boolean", + "BigDecimal" + }; + // 是否添加权限注解 + private static final boolean AUTH_ANNOTATION = true; + // 是否添加日志注解 + private static final boolean LOG_ANNOTATION = true; + // controller的mapping前缀 + private static final String CONTROLLER_MAPPING_PREFIX = "/api"; + // 模板所在位置 + private static final String TEMPLATES_DIR = "/src/test/java/com/gxwebsoft/generator/templates"; + + public static void main(String[] args) { + // 代码生成器 + AutoGenerator mpg = new AutoGenerator(); + + // 全局配置 + GlobalConfig gc = new GlobalConfig(); + gc.setOutputDir(OUTPUT_LOCATION + OUTPUT_DIR); + gc.setAuthor(AUTHOR); + gc.setOpen(false); + gc.setFileOverride(true); + gc.setEnableCache(ENABLE_CACHE); + gc.setSwagger2(true); + gc.setIdType(IdType.AUTO); + gc.setServiceName("%sService"); + mpg.setGlobalConfig(gc); + + // 数据源配置 + DataSourceConfig dsc = new DataSourceConfig(); + dsc.setUrl(DB_URL); + // dsc.setSchemaName("public"); + dsc.setDriverName(DB_DRIVER); + dsc.setUsername(DB_USERNAME); + dsc.setPassword(DB_PASSWORD); + mpg.setDataSource(dsc); + + // 包配置 + PackageConfig pc = new PackageConfig(); + pc.setModuleName(MODULE_NAME); + pc.setParent(PACKAGE_NAME); + mpg.setPackageInfo(pc); + + // 策略配置 + StrategyConfig strategy = new StrategyConfig(); + strategy.setNaming(NamingStrategy.underline_to_camel); + strategy.setColumnNaming(NamingStrategy.underline_to_camel); + strategy.setInclude(TABLE_NAMES); + strategy.setTablePrefix(TABLE_PREFIX); + strategy.setSuperControllerClass(PACKAGE_NAME + ".common.core.web.BaseController"); + strategy.setEntityLombokModel(true); + strategy.setRestControllerStyle(true); + strategy.setControllerMappingHyphenStyle(true); + strategy.setLogicDeleteFieldName("deleted"); + mpg.setStrategy(strategy); + + // 模板配置 + TemplateConfig templateConfig = new TemplateConfig(); + templateConfig.setController(TEMPLATES_DIR + "/controller.java"); + templateConfig.setEntity(TEMPLATES_DIR + "/entity.java"); + templateConfig.setMapper(TEMPLATES_DIR + "/mapper.java"); + templateConfig.setXml(TEMPLATES_DIR + "/mapper.xml"); + templateConfig.setService(TEMPLATES_DIR + "/service.java"); + templateConfig.setServiceImpl(TEMPLATES_DIR + "/serviceImpl.java"); + mpg.setTemplate(templateConfig); + mpg.setTemplateEngine(new BeetlTemplateEnginePlus()); + + // 自定义模板配置 + InjectionConfig cfg = new InjectionConfig() { + @Override + public void initMap() { + Map map = new HashMap<>(); + map.put("packageName", PACKAGE_NAME); + map.put("paramExcludeFields", PARAM_EXCLUDE_FIELDS); + map.put("paramToStringType", PARAM_TO_STRING_TYPE); + map.put("paramEqType", PARAM_EQ_TYPE); + map.put("authAnnotation", AUTH_ANNOTATION); + map.put("logAnnotation", LOG_ANNOTATION); + map.put("controllerMappingPrefix", CONTROLLER_MAPPING_PREFIX); + this.setMap(map); + } + }; + String templatePath = TEMPLATES_DIR + "/param.java.btl"; + List focList = new ArrayList<>(); + focList.add(new FileOutConfig(templatePath) { + @Override + public String outputFile(TableInfo tableInfo) { + return OUTPUT_LOCATION + OUTPUT_DIR + "/" + + PACKAGE_NAME.replace(".", "/") + + "/" + pc.getModuleName() + "/param/" + + tableInfo.getEntityName() + "Param" + StringPool.DOT_JAVA; + } + }); + cfg.setFileOutConfigList(focList); + mpg.setCfg(cfg); + + mpg.execute(); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/engine/BeetlTemplateEnginePlus.java b/src/test/java/com/gxwebsoft/generator/engine/BeetlTemplateEnginePlus.java new file mode 100644 index 0000000..1a73826 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/engine/BeetlTemplateEnginePlus.java @@ -0,0 +1,50 @@ +package com.gxwebsoft.generator.engine; + +import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder; +import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine; +import org.beetl.core.Configuration; +import org.beetl.core.GroupTemplate; +import org.beetl.core.Template; +import org.beetl.core.resource.FileResourceLoader; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Map; + +/** + * Beetl模板引擎实现文件输出 + * + * @author WebSoft + * @since 2021-09-05 00:30:28 + */ +public class BeetlTemplateEnginePlus extends AbstractTemplateEngine { + private GroupTemplate groupTemplate; + + @Override + public AbstractTemplateEngine init(ConfigBuilder configBuilder) { + super.init(configBuilder); + try { + Configuration cfg = Configuration.defaultConfiguration(); + groupTemplate = new GroupTemplate(new FileResourceLoader(), cfg); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + return this; + } + + @Override + public void writer(Map objectMap, String templatePath, String outputFile) throws Exception { + Template template = groupTemplate.getTemplate(templatePath); + try (FileOutputStream fileOutputStream = new FileOutputStream(outputFile)) { + template.binding(objectMap); + template.renderTo(fileOutputStream); + } + logger.debug("模板:" + templatePath + "; 文件:" + outputFile); + } + + @Override + public String templateFilePath(String filePath) { + return filePath + ".btl"; + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl b/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl new file mode 100644 index 0000000..eb3f274 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/controller.java.btl @@ -0,0 +1,283 @@ +<% +var serviceIns = strutil.toLowerCase(strutil.subStringTo(table.serviceName, 0, 1)) + strutil.subString(table.serviceName, 1); +var authPre = package.ModuleName + ':' + table.entityPath; +var idFieldName, idPropertyName; +for(field in table.fields) { + if(field.keyFlag) { + idFieldName = field.name; + idPropertyName = field.propertyName; + } +} +%> +package ${package.Controller}; + +<% if(isNotEmpty(superControllerClassPackage)) { %> +import ${superControllerClassPackage}; +<% } %> +import ${cfg.packageName!}.${package.ModuleName}.service.${entity}Service; +import ${cfg.packageName!}.${package.ModuleName}.entity.${entity}; +import ${cfg.packageName!}.${package.ModuleName}.param.${entity}Param; +import ${cfg.packageName!}.common.core.web.ApiResult; +import ${cfg.packageName!}.common.core.web.PageResult; +import ${cfg.packageName!}.common.core.web.PageParam; +import ${cfg.packageName!}.common.core.web.BatchParam; +import ${cfg.packageName!}.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.*; +<% if(!restControllerStyle) { %> +import org.springframework.stereotype.Controller; +<% } %> + +import javax.annotation.Resource; +import java.util.List; + +/** + * ${table.comment!}控制器 + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(swagger2) { %> +@Api(tags = "${table.comment!}管理") +<% } %> +<% if(restControllerStyle) { %> +@RestController +<% } else { %> +@Controller +<% } %> +@RequestMapping("${cfg.controllerMappingPrefix!}<% if(isNotEmpty(package.ModuleName)){ %>/${package.ModuleName}<% } %>/<% if(isNotEmpty(controllerMappingHyphenStyle)){ %>${controllerMappingHyphen}<% }else{ %>${table.entityPath}<% } %>") +<% if(kotlin) { %> +class ${table.controllerName}<% if(isNotEmpty(superControllerClass)) { %> : ${superControllerClass}()<% } %> +<% } else if(isNotEmpty(superControllerClass)) { %> +public class ${table.controllerName} extends ${superControllerClass} { +<% } else { %> +public class ${table.controllerName} { +<% } %> + @Resource + private ${table.serviceName} ${serviceIns}; + + <% if(!swagger2) { %> + /** + * 分页查询${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:list')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("分页查询${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @GetMapping("/page") + public ApiResult> page(${entity}Param param) { + PageParam<${entity}, ${entity}Param> page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(${serviceIns}.page(page, page.getWrapper())); + // 使用关联查询 + //return success(${serviceIns}.pageRel(param)); + } + + <% if(!swagger2) { %> + /** + * 查询全部${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:list')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("查询全部${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @GetMapping() + public ApiResult> list(${entity}Param param) { + PageParam<${entity}, ${entity}Param> page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(${serviceIns}.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(${serviceIns}.listRel(param)); + } + + <% if(!swagger2) { %> + /** + * 根据id查询${table.comment!} + */ + <% } %> + @PreAuthorize("hasAuthority('${authPre}:list')") + @OperationLog + @ApiOperation("根据id查询${table.comment!}") + @GetMapping("/{id}") + public ApiResult<${entity}> get(@PathVariable("id") Integer id) { + return success(${serviceIns}.getById(id)); + // 使用关联查询 + //return success(${serviceIns}.getByIdRel(id)); + } + + <% if(!swagger2) { %> + /** + * 添加${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:save')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("添加${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @PostMapping() + public ApiResult save(@RequestBody ${entity} ${table.entityPath}) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + ${table.entityPath}.setUserId(loginUser.getUserId()); + } + if (${serviceIns}.save(${table.entityPath})) { + return success("添加成功"); + } + return fail("添加失败"); + } + + <% if(!swagger2) { %> + /** + * 修改${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:update')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("修改${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @PutMapping() + public ApiResult update(@RequestBody ${entity} ${table.entityPath}) { + if (${serviceIns}.updateById(${table.entityPath})) { + return success("修改成功"); + } + return fail("修改失败"); + } + + <% if(!swagger2) { %> + /** + * 删除${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:remove')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("删除${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (${serviceIns}.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + <% if(!swagger2) { %> + /** + * 批量添加${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:save')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("批量添加${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List<${entity}> list) { + if (${serviceIns}.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + <% if(!swagger2) { %> + /** + * 批量修改${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:update')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("批量修改${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam<${entity}> batchParam) { + if (batchParam.update(${serviceIns}, "${idFieldName!}")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + <% if(!swagger2) { %> + /** + * 批量删除${table.comment!} + */ + <% } %> + <% if(cfg.authAnnotation) { %> + @PreAuthorize("hasAuthority('${authPre}:remove')") + <% } %> + <% if(cfg.logAnnotation) { %> + @OperationLog + <% } %> + <% if(swagger2) { %> + @ApiOperation("批量删除${table.comment!}") + <% } %> + <% if(!restControllerStyle) { %> + @ResponseBody + <% } %> + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (${serviceIns}.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/entity.java.btl b/src/test/java/com/gxwebsoft/generator/templates/entity.java.btl new file mode 100644 index 0000000..44015ad --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/entity.java.btl @@ -0,0 +1,158 @@ +package ${package.Entity}; + +<% for(pkg in table.importPackages) { %> +import ${pkg}; +<% } %> +<% if(swagger2) { %> +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +<% } %> +<% if(entityLombokModel) { %> +import lombok.Data; +import lombok.EqualsAndHashCode; + <% if(chainModel) { %> +import lombok.experimental.Accessors; + <% } %> +<% } %> + +/** + * ${table.comment!} + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(entityLombokModel) { %> +@Data + <% if(isNotEmpty(superEntityClass)) { %> +@EqualsAndHashCode(callSuper = true) + <% } else { %> +@EqualsAndHashCode(callSuper = false) + <% } %> + <% if(chainModel) { %> +@Accessors(chain = true) + <% } %> +<% } %> +<% if(swagger2) { %> +@ApiModel(value = "${entity}对象", description = "${table.comment!''}") +<% } %> +<% if(table.convert) { %> +@TableName("${table.name}") +<% } %> +<% if(isNotEmpty(superEntityClass)) { %> +public class ${entity} extends ${superEntityClass}<% if(activeRecord) { %><${entity}><% } %>{ +<% } else if(activeRecord) { %> +public class ${entity} extends Model<${entity}> { +<% } else { %> +public class ${entity} implements Serializable { +<% } %> +<% if(entitySerialVersionUID) { %> + private static final long serialVersionUID = 1L; +<% } %> +<% /** -----------BEGIN 字段循环遍历----------- **/ %> +<% for(field in table.fields) { %> + <% + var keyPropertyName; + if(field.keyFlag) { + keyPropertyName = field.propertyName; + } + %> + + <% if(isNotEmpty(field.comment)) { %> + <% if(swagger2) { %> + @ApiModelProperty(value = "${field.comment}") + <% }else{ %> + /** + * ${field.comment} + */ + <% } %> + <% } %> + <% /* 主键 */ %> + <% if(field.keyFlag) { %> + <% if(field.keyIdentityFlag) { %> + @TableId(value = "${field.annotationColumnName}", type = IdType.AUTO) + <% } else if(isNotEmpty(idType)) { %> + @TableId(value = "${field.annotationColumnName}", type = IdType.${idType}) + <% } else if(field.convert) { %> + @TableId("${field.annotationColumnName}") + <% } %> + <% /* 普通字段 */ %> + <% } else if(isNotEmpty(field.fill)) { %> + <% if(field.convert){ %> + @TableField(value = "${field.annotationColumnName}", fill = FieldFill.${field.fill}) + <% }else{ %> + @TableField(fill = FieldFill.${field.fill}) + <% } %> + <% } else if(field.convert) { %> + @TableField("${field.annotationColumnName}") + <% } %> + <% /* 乐观锁注解 */ %> + <% if(versionFieldName!'' == field.name) { %> + @Version + <% } %> + <% /* 逻辑删除注解 */ %> + <% if(logicDeleteFieldName!'' == field.name) { %> + @TableLogic + <% } %> + private ${field.propertyType} ${field.propertyName}; +<% } %> +<% /** -----------END 字段循环遍历----------- **/ %> + +<% if(!entityLombokModel) { %> + <% for(field in table.fields) { %> + <% + var getprefix = ''; + if(field.propertyType == 'boolean') { + getprefix = 'is'; + } else { + getprefix = 'get'; + } + %> + public ${field.propertyType} ${getprefix}${field.capitalName}() { + return ${field.propertyName}; + } + + <% if(chainModel) { %> + public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <% } else { %> + public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <% } %> + this.${field.propertyName} = ${field.propertyName}; + <% if(chainModel){ %> + return this; + <% } %> + } + + <% } %> +<% } %> +<% if(entityColumnConstant) { %> + <% for(field in table.fields) { %> + public static final String ${strutil.toUpperCase(field.name)} = "${field.name}"; + + <% } %> +<% } %> +<% if(activeRecord) { %> + @Override + protected Serializable pkVal() { + <% if(isNotEmpty(keyPropertyName)){ %> + return this.${keyPropertyName}; + <% }else{ %> + return null; + <% } %> + } + +<% } %> +<% if(!entityLombokModel){ %> + @Override + public String toString() { + return "${entity}{" + + <% for(field in table.fields){ %> + <% if(fieldLP.index==0){ %> + "${field.propertyName}=" + ${field.propertyName} + + <% }else{ %> + ", ${field.propertyName}=" + ${field.propertyName} + + <% } %> + <% } %> + "}"; + } +<% } %> +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/mapper.java.btl b/src/test/java/com/gxwebsoft/generator/templates/mapper.java.btl new file mode 100644 index 0000000..54e41a9 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/mapper.java.btl @@ -0,0 +1,41 @@ +package ${package.Mapper}; + +import ${superMapperClassPackage}; +import com.baomidou.mybatisplus.core.metadata.IPage; +import ${package.Entity}.${entity}; +import ${cfg.packageName!}.${package.ModuleName}.param.${entity}Param; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * ${table.comment!}Mapper + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(kotlin){ %> +interface ${table.mapperName} : ${superMapperClass}<${entity}> +<% }else{ %> +public interface ${table.mapperName} extends ${superMapperClass}<${entity}> { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List<${entity}> + */ + List<${entity}> selectPageRel(@Param("page") IPage<${entity}> page, + @Param("param") ${entity}Param param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List<${entity}> selectListRel(@Param("param") ${entity}Param param); + +} +<% } %> diff --git a/src/test/java/com/gxwebsoft/generator/templates/mapper.xml.btl b/src/test/java/com/gxwebsoft/generator/templates/mapper.xml.btl new file mode 100644 index 0000000..6786c0d --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/mapper.xml.btl @@ -0,0 +1,96 @@ + + + +<% if(enableCache) { %> + + + +<% } %> +<% if(baseResultMap) { %> + + + + <% /** 生成主键排在第一位 **/ %> + <% for(field in table.fields) { %> + <% if(field.keyFlag){ %> + + <% } %> + <% } %> + <% /** 生成公共字段 **/ %> + <% for(field in table.commonFields) { %> + + <% } %> + <% /** 生成普通字段 **/ %> + <% for(field in table.fields) { %> + <% if(!field.keyFlag) { %> + + <% } %> + <% } %> + +<% } %> +<% if(baseColumnList) { %> + + + + <% for(field in table.commonFields) { %> + ${field.columnName}, + <% } %> + ${table.fieldNames} + +<% } %> + + + + SELECT a.* + FROM ${table.name} a + +<% for(field in table.fields) { %> + <% if(field.keyFlag) { %> + <% /** 主键字段 **/ %> + + AND a.${field.name} = #{param.${field.propertyName}} + + <% } else if(field.name == logicDeleteFieldName) { %> + <% /** 逻辑删除字段 **/ %> + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + <% } else if(field.name == 'create_time') { %> + <% /** 创建时间字段 **/ %> + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + <% } else if(array.contain(cfg.paramExcludeFields, field.name)) { %> + <% /** 排除的字段 **/ %> + <% } else if(array.contain(cfg.paramEqType, field.propertyType)) { %> + <% /** 使用EQ的字段 **/ %> + + AND a.${field.name} = #{param.${field.propertyName}} + + <% } else { %> + <% /** 其它类型使用LIKE **/ %> + + AND a.${field.name} LIKE CONCAT('%', #{param.${field.propertyName}}, '%') + + <% } %> +<% } %> + + + + + + + + + + diff --git a/src/test/java/com/gxwebsoft/generator/templates/param.java.btl b/src/test/java/com/gxwebsoft/generator/templates/param.java.btl new file mode 100644 index 0000000..9c30504 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/param.java.btl @@ -0,0 +1,146 @@ +package ${cfg.packageName!}.${package.ModuleName}.param; + +import ${cfg.packageName!}.common.core.annotation.QueryField; +import ${cfg.packageName!}.common.core.annotation.QueryType; +import ${cfg.packageName!}.common.core.web.BaseParam; +import com.fasterxml.jackson.annotation.JsonInclude; +<% if(swagger2) { %> +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +<% } %> +<% if(entityLombokModel) { %> +import lombok.Data; +import lombok.EqualsAndHashCode; + <% if(chainModel) { %> +import lombok.experimental.Accessors; + <% } %> +<% } %> + +/** + * ${table.comment!}查询参数 + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(entityLombokModel) { %> +@Data + <% if(isNotEmpty(superEntityClass)) { %> +@EqualsAndHashCode(callSuper = true) + <% } else { %> +@EqualsAndHashCode(callSuper = false) + <% } %> + <% if(chainModel) { %> +@Accessors(chain = true) + <% } %> +<% } %> +@JsonInclude(JsonInclude.Include.NON_NULL) +<% if(swagger2) { %> +@ApiModel(value = "${entity}Param对象", description = "${table.comment!''}查询参数") +<% } %> +public class ${entity}Param extends BaseParam { +<% if(entitySerialVersionUID) { %> + private static final long serialVersionUID = 1L; +<% } %> +<% /** -----------BEGIN 字段循环遍历----------- **/ %> +<% for(field in table.fields) { %> + <% + var keyPropertyName; + if(field.keyFlag) { + keyPropertyName = field.propertyName; + } + // 排除的字段 + if(array.contain(cfg.paramExcludeFields, field.name)) { + continue; + } + %> + + <% if(isNotEmpty(field.comment)) { %> + <% if(swagger2) { %> + @ApiModelProperty(value = "${field.comment}") + <% }else{ %> + /** + * ${field.comment} + */ + <% } %> + <% } %> + <% /* 主键 */ %> + <% if(field.keyFlag) { %> + @QueryField(type = QueryType.EQ) + <% /* 使用EQ的字段 */ %> + <% } else if(array.contain(cfg.paramEqType, field.propertyType)) { %> + @QueryField(type = QueryType.EQ) + <% } %> + <% /* 使用String类型的字段 */ %> + <% if(array.contain(cfg.paramToStringType, field.propertyType)) { %> + private String ${field.propertyName}; + <% } else { %> + <% /* 普通字段 */ %> + private ${field.propertyType} ${field.propertyName}; + <% } %> +<% } %> +<% /** -----------END 字段循环遍历----------- **/ %> + +<% if(!entityLombokModel) { %> + <% for(field in table.fields) { %> + <% + var getprefix = ''; + if(field.propertyType == 'boolean') { + getprefix = 'is'; + } else { + getprefix = 'get'; + } + // 排除的字段 + if(array.contain(cfg.paramExcludeFields, field.name)) { + continue; + } + %> + <% if(array.contain(cfg.paramToStringType, field.propertyType)) { %> + public String ${getprefix}${field.capitalName}() { + <% } else { %> + public ${field.propertyType} ${getprefix}${field.capitalName}() { + <% } %> + return ${field.propertyName}; + } + + <% if(chainModel) { %> + <% if(array.contain(cfg.paramToStringType, field.propertyType)) { %> + public ${entity} set${field.capitalName}(String ${field.propertyName}) { + <% } else { %> + public ${entity} set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <% } %> + <% } else { %> + <% if(array.contain(cfg.paramToStringType, field.propertyType)) { %> + public void set${field.capitalName}(String ${field.propertyName}) { + <% } else { %> + public void set${field.capitalName}(${field.propertyType} ${field.propertyName}) { + <% } %> + <% } %> + this.${field.propertyName} = ${field.propertyName}; + <% if(chainModel){ %> + return this; + <% } %> + } + + <% } %> +<% } %> +<% if(!entityLombokModel) { %> + @Override + public String toString() { + return "${entity}{" + + <% for(field in table.fields) { %> + <% + // 排除的字段 + if(array.contain(cfg.paramExcludeFields, field.name)) { + continue; + } + %> + <% if(fieldLP.index == 0) { %> + "${field.propertyName}=" + ${field.propertyName} + + <% } else { %> + ", ${field.propertyName}=" + ${field.propertyName} + + <% } %> + <% } %> + "}"; + } +<% } %> +} diff --git a/src/test/java/com/gxwebsoft/generator/templates/service.java.btl b/src/test/java/com/gxwebsoft/generator/templates/service.java.btl new file mode 100644 index 0000000..67efe6a --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/service.java.btl @@ -0,0 +1,55 @@ +<% +var idPropertyName, idComment; +for(field in table.fields) { + if(field.keyFlag) { + idPropertyName = field.propertyName; + idComment = field.comment; + } +} +%> +package ${package.Service}; + +import ${superServiceClassPackage}; +import ${cfg.packageName!}.common.core.web.PageResult; +import ${package.Entity}.${entity}; +import ${cfg.packageName!}.${package.ModuleName}.param.${entity}Param; + +import java.util.List; + +/** + * ${table.comment!}Service + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +<% if(kotlin){ %> +interface ${table.serviceName} : ${superServiceClass}<${entity}> +<% }else{ %> +public interface ${table.serviceName} extends ${superServiceClass}<${entity}> { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult<${entity}> + */ + PageResult<${entity}> pageRel(${entity}Param param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List<${entity}> + */ + List<${entity}> listRel(${entity}Param param); + + /** + * 根据id查询 + * + * @param ${idPropertyName!} ${idComment!} + * @return ${entity} + */ + ${entity} getByIdRel(Integer ${idPropertyName!}); + +} +<% } %> diff --git a/src/test/java/com/gxwebsoft/generator/templates/serviceImpl.java.btl b/src/test/java/com/gxwebsoft/generator/templates/serviceImpl.java.btl new file mode 100644 index 0000000..e63a0b9 --- /dev/null +++ b/src/test/java/com/gxwebsoft/generator/templates/serviceImpl.java.btl @@ -0,0 +1,62 @@ +<% +var idPropertyName, idCapitalName; +for(field in table.fields) { + if(field.keyFlag) { + idPropertyName = field.propertyName; + idCapitalName = field.capitalName; + } +} +%> +package ${package.ServiceImpl}; + +import ${superServiceImplClassPackage}; +import ${package.Mapper}.${table.mapperName}; +import ${package.Service}.${table.serviceName}; +import ${package.Entity}.${entity}; +import ${cfg.packageName!}.${package.ModuleName}.param.${entity}Param; +import ${cfg.packageName!}.common.core.web.PageParam; +import ${cfg.packageName!}.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * ${table.comment!}Service实现 + * + * @author ${author} + * @since ${date(), 'yyyy-MM-dd HH:mm:ss'} + */ +@Service +<% if(kotlin){ %> +open class ${table.serviceImplName} : ${superServiceImplClass}<${table.mapperName}, ${entity}>(), ${table.serviceName} { + +} +<% }else{ %> +public class ${table.serviceImplName} extends ${superServiceImplClass}<${table.mapperName}, ${entity}> implements ${table.serviceName} { + + @Override + public PageResult<${entity}> pageRel(${entity}Param param) { + PageParam<${entity}, ${entity}Param> page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List<${entity}> list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List<${entity}> listRel(${entity}Param param) { + List<${entity}> list = baseMapper.selectListRel(param); + // 排序 + PageParam<${entity}, ${entity}Param> page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public ${entity} getByIdRel(Integer ${idPropertyName!}) { + ${entity}Param param = new ${entity}Param(); + param.set${idCapitalName!}(${idPropertyName!}); + return param.getOne(baseMapper.selectListRel(param)); + } + +} +<% } %>