From 15b1da46c19fef9f7928e5ee96db54a0f9eac7b4 Mon Sep 17 00:00:00 2001 From: Kris <2893855659@qq.com> Date: Sun, 1 Dec 2024 01:28:16 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90feat=E3=80=91=20=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E4=BC=9A=E5=91=98=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 735cdc0c62f51d1d7ff42ad91c33e6ff5198066c) --- README.md | 2 - czsj-admin/pom.xml | 5 + .../main/java/com/czsj/CzsjApplication.java | 11 +- .../account/CzsjMemberCardController.java | 104 ++++++ .../account/CzsjMemberController.java | 104 ++++++ .../account/CzsjMemberLocusController.java | 104 ++++++ .../account/CzsjMemberRelationController.java | 104 ++++++ .../account/CzsjMemberSignController.java | 104 ++++++ .../account/CzsjMemberTagController.java | 104 ++++++ .../account/CzsjMemberTagGroupController.java | 104 ++++++ .../account/CzsjMemberWxFansController.java | 104 ++++++ .../account/CzsjMemberWxSourceController.java | 104 ++++++ czsj-common/pom.xml | 5 + .../com/czsj/account/domain/CzsjMember.java | 295 ++++++++++++++++++ .../czsj/account/domain/CzsjMemberCard.java | 122 ++++++++ .../czsj/account/domain/CzsjMemberLocus.java | 139 +++++++++ .../account/domain/CzsjMemberRelation.java | 136 ++++++++ .../czsj/account/domain/CzsjMemberSign.java | 111 +++++++ .../czsj/account/domain/CzsjMemberTag.java | 122 ++++++++ .../account/domain/CzsjMemberTagGroup.java | 108 +++++++ .../czsj/account/domain/CzsjMemberWxFans.java | 239 ++++++++++++++ .../account/domain/CzsjMemberWxSource.java | 234 ++++++++++++++ .../account/mapper/CzsjMemberCardMapper.java | 61 ++++ .../account/mapper/CzsjMemberLocusMapper.java | 61 ++++ .../czsj/account/mapper/CzsjMemberMapper.java | 61 ++++ .../mapper/CzsjMemberRelationMapper.java | 61 ++++ .../account/mapper/CzsjMemberSignMapper.java | 61 ++++ .../mapper/CzsjMemberTagGroupMapper.java | 61 ++++ .../account/mapper/CzsjMemberTagMapper.java | 61 ++++ .../mapper/CzsjMemberWxFansMapper.java | 61 ++++ .../mapper/CzsjMemberWxSourceMapper.java | 61 ++++ .../service/ICzsjMemberCardService.java | 61 ++++ .../service/ICzsjMemberLocusService.java | 61 ++++ .../service/ICzsjMemberRelationService.java | 61 ++++ .../account/service/ICzsjMemberService.java | 61 ++++ .../service/ICzsjMemberSignService.java | 61 ++++ .../service/ICzsjMemberTagGroupService.java | 61 ++++ .../service/ICzsjMemberTagService.java | 61 ++++ .../service/ICzsjMemberWxFansService.java | 61 ++++ .../service/ICzsjMemberWxSourceService.java | 61 ++++ .../impl/CzsjMemberCardServiceImpl.java | 96 ++++++ .../impl/CzsjMemberLocusServiceImpl.java | 96 ++++++ .../impl/CzsjMemberRelationServiceImpl.java | 96 ++++++ .../service/impl/CzsjMemberServiceImpl.java | 96 ++++++ .../impl/CzsjMemberSignServiceImpl.java | 96 ++++++ .../impl/CzsjMemberTagGroupServiceImpl.java | 96 ++++++ .../impl/CzsjMemberTagServiceImpl.java | 96 ++++++ .../impl/CzsjMemberWxFansServiceImpl.java | 96 ++++++ .../impl/CzsjMemberWxSourceServiceImpl.java | 96 ++++++ .../mapper/account/CzsjMemberCardMapper.xml | 90 ++++++ .../mapper/account/CzsjMemberLocusMapper.xml | 95 ++++++ .../mapper/account/CzsjMemberMapper.xml | 150 +++++++++ .../account/CzsjMemberRelationMapper.xml | 95 ++++++ .../mapper/account/CzsjMemberSignMapper.xml | 85 +++++ .../account/CzsjMemberTagGroupMapper.xml | 85 +++++ .../mapper/account/CzsjMemberTagMapper.xml | 90 ++++++ .../mapper/account/CzsjMemberWxFansMapper.xml | 130 ++++++++ .../account/CzsjMemberWxSourceMapper.xml | 130 ++++++++ pom.xml | 14 + ...图片_20240720121710_20241127161057A001.jpg | Bin 0 -> 74566 bytes 60 files changed, 5388 insertions(+), 3 deletions(-) delete mode 100644 README.md create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberCardController.java create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberController.java create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberLocusController.java create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberRelationController.java create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberSignController.java create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberTagController.java create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberTagGroupController.java create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberWxFansController.java create mode 100644 czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberWxSourceController.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMember.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberCard.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberLocus.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberRelation.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberSign.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberTag.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberTagGroup.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberWxFans.java create mode 100644 czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberWxSource.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberCardMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberLocusMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberRelationMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberSignMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberTagGroupMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberTagMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberWxFansMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberWxSourceMapper.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberCardService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberLocusService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberRelationService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberSignService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberTagGroupService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberTagService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberWxFansService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberWxSourceService.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberCardServiceImpl.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberLocusServiceImpl.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberRelationServiceImpl.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberServiceImpl.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberSignServiceImpl.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberTagGroupServiceImpl.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberTagServiceImpl.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberWxFansServiceImpl.java create mode 100644 czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberWxSourceServiceImpl.java create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberCardMapper.xml create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberLocusMapper.xml create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberMapper.xml create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberRelationMapper.xml create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberSignMapper.xml create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberTagGroupMapper.xml create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberTagMapper.xml create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberWxFansMapper.xml create mode 100644 czsj-system/src/main/resources/mapper/account/CzsjMemberWxSourceMapper.xml create mode 100644 uploadPath/avatar/2024/11/27/微信图片_20240720121710_20241127161057A001.jpg diff --git a/README.md b/README.md deleted file mode 100644 index fcc7796..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# czsj - diff --git a/czsj-admin/pom.xml b/czsj-admin/pom.xml index f1c8d6d..c222138 100644 --- a/czsj-admin/pom.xml +++ b/czsj-admin/pom.xml @@ -60,6 +60,11 @@ com.czsj czsj-generator + + org.projectlombok + lombok + provided + diff --git a/czsj-admin/src/main/java/com/czsj/CzsjApplication.java b/czsj-admin/src/main/java/com/czsj/CzsjApplication.java index e7e0429..5d52e59 100644 --- a/czsj-admin/src/main/java/com/czsj/CzsjApplication.java +++ b/czsj-admin/src/main/java/com/czsj/CzsjApplication.java @@ -1,15 +1,24 @@ package com.czsj; +import com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration; +import lombok.extern.slf4j.Slf4j; +import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; +import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.scheduling.annotation.EnableAsync; /** * 启动程序 * * @author czsj */ -@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) +@Slf4j +@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, PageHelperAutoConfiguration.class}, scanBasePackages = {"com.czsj","cn.hutool"}) +@MapperScan(basePackages = {"com.czsj.*.mapper"}) +@EnableAsync(proxyTargetClass = true) +@EnableAspectJAutoProxy(exposeProxy = true) public class CzsjApplication { public static void main(String[] args) diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberCardController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberCardController.java new file mode 100644 index 0000000..eddbd15 --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberCardController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMemberCard; +import com.czsj.account.service.ICzsjMemberCardService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员证件信息Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/card") +public class CzsjMemberCardController extends BaseController +{ + @Autowired + private ICzsjMemberCardService czsjMemberCardService; + + /** + * 查询会员证件信息列表 + */ + @PreAuthorize("@ss.hasPermi('account:card:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMemberCard czsjMemberCard) + { + startPage(); + List list = czsjMemberCardService.selectCzsjMemberCardList(czsjMemberCard); + return getDataTable(list); + } + + /** + * 导出会员证件信息列表 + */ + @PreAuthorize("@ss.hasPermi('account:card:export')") + @Log(title = "会员证件信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMemberCard czsjMemberCard) + { + List list = czsjMemberCardService.selectCzsjMemberCardList(czsjMemberCard); + ExcelUtil util = new ExcelUtil(CzsjMemberCard.class); + util.exportExcel(response, list, "会员证件信息数据"); + } + + /** + * 获取会员证件信息详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:card:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Integer uid) + { + return success(czsjMemberCardService.selectCzsjMemberCardByUid(uid)); + } + + /** + * 新增会员证件信息 + */ + @PreAuthorize("@ss.hasPermi('account:card:add')") + @Log(title = "会员证件信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMemberCard czsjMemberCard) + { + return toAjax(czsjMemberCardService.insertCzsjMemberCard(czsjMemberCard)); + } + + /** + * 修改会员证件信息 + */ + @PreAuthorize("@ss.hasPermi('account:card:edit')") + @Log(title = "会员证件信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMemberCard czsjMemberCard) + { + return toAjax(czsjMemberCardService.updateCzsjMemberCard(czsjMemberCard)); + } + + /** + * 删除会员证件信息 + */ + @PreAuthorize("@ss.hasPermi('account:card:remove')") + @Log(title = "会员证件信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Integer[] uids) + { + return toAjax(czsjMemberCardService.deleteCzsjMemberCardByUids(uids)); + } +} diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberController.java new file mode 100644 index 0000000..a98665b --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMember; +import com.czsj.account.service.ICzsjMemberService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员信息Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/member") +public class CzsjMemberController extends BaseController +{ + @Autowired + private ICzsjMemberService czsjMemberService; + + /** + * 查询会员信息列表 + */ + @PreAuthorize("@ss.hasPermi('account:member:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMember czsjMember) + { + startPage(); + List list = czsjMemberService.selectCzsjMemberList(czsjMember); + return getDataTable(list); + } + + /** + * 导出会员信息列表 + */ + @PreAuthorize("@ss.hasPermi('account:member:export')") + @Log(title = "会员信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMember czsjMember) + { + List list = czsjMemberService.selectCzsjMemberList(czsjMember); + ExcelUtil util = new ExcelUtil(CzsjMember.class); + util.exportExcel(response, list, "会员信息数据"); + } + + /** + * 获取会员信息详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:member:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Long uid) + { + return success(czsjMemberService.selectCzsjMemberByUid(uid)); + } + + /** + * 新增会员信息 + */ + @PreAuthorize("@ss.hasPermi('account:member:add')") + @Log(title = "会员信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMember czsjMember) + { + return toAjax(czsjMemberService.insertCzsjMember(czsjMember)); + } + + /** + * 修改会员信息 + */ + @PreAuthorize("@ss.hasPermi('account:member:edit')") + @Log(title = "会员信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMember czsjMember) + { + return toAjax(czsjMemberService.updateCzsjMember(czsjMember)); + } + + /** + * 删除会员信息 + */ + @PreAuthorize("@ss.hasPermi('account:member:remove')") + @Log(title = "会员信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Long[] uids) + { + return toAjax(czsjMemberService.deleteCzsjMemberByUids(uids)); + } +} diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberLocusController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberLocusController.java new file mode 100644 index 0000000..cf768ad --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberLocusController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMemberLocus; +import com.czsj.account.service.ICzsjMemberLocusService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员轨迹信息Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/locus") +public class CzsjMemberLocusController extends BaseController +{ + @Autowired + private ICzsjMemberLocusService czsjMemberLocusService; + + /** + * 查询会员轨迹信息列表 + */ + @PreAuthorize("@ss.hasPermi('account:locus:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMemberLocus czsjMemberLocus) + { + startPage(); + List list = czsjMemberLocusService.selectCzsjMemberLocusList(czsjMemberLocus); + return getDataTable(list); + } + + /** + * 导出会员轨迹信息列表 + */ + @PreAuthorize("@ss.hasPermi('account:locus:export')") + @Log(title = "会员轨迹信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMemberLocus czsjMemberLocus) + { + List list = czsjMemberLocusService.selectCzsjMemberLocusList(czsjMemberLocus); + ExcelUtil util = new ExcelUtil(CzsjMemberLocus.class); + util.exportExcel(response, list, "会员轨迹信息数据"); + } + + /** + * 获取会员轨迹信息详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:locus:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Long uid) + { + return success(czsjMemberLocusService.selectCzsjMemberLocusByUid(uid)); + } + + /** + * 新增会员轨迹信息 + */ + @PreAuthorize("@ss.hasPermi('account:locus:add')") + @Log(title = "会员轨迹信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMemberLocus czsjMemberLocus) + { + return toAjax(czsjMemberLocusService.insertCzsjMemberLocus(czsjMemberLocus)); + } + + /** + * 修改会员轨迹信息 + */ + @PreAuthorize("@ss.hasPermi('account:locus:edit')") + @Log(title = "会员轨迹信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMemberLocus czsjMemberLocus) + { + return toAjax(czsjMemberLocusService.updateCzsjMemberLocus(czsjMemberLocus)); + } + + /** + * 删除会员轨迹信息 + */ + @PreAuthorize("@ss.hasPermi('account:locus:remove')") + @Log(title = "会员轨迹信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Long[] uids) + { + return toAjax(czsjMemberLocusService.deleteCzsjMemberLocusByUids(uids)); + } +} diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberRelationController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberRelationController.java new file mode 100644 index 0000000..e2babcb --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberRelationController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMemberRelation; +import com.czsj.account.service.ICzsjMemberRelationService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员关系Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/relation") +public class CzsjMemberRelationController extends BaseController +{ + @Autowired + private ICzsjMemberRelationService czsjMemberRelationService; + + /** + * 查询会员关系列表 + */ + @PreAuthorize("@ss.hasPermi('account:relation:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMemberRelation czsjMemberRelation) + { + startPage(); + List list = czsjMemberRelationService.selectCzsjMemberRelationList(czsjMemberRelation); + return getDataTable(list); + } + + /** + * 导出会员关系列表 + */ + @PreAuthorize("@ss.hasPermi('account:relation:export')") + @Log(title = "会员关系", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMemberRelation czsjMemberRelation) + { + List list = czsjMemberRelationService.selectCzsjMemberRelationList(czsjMemberRelation); + ExcelUtil util = new ExcelUtil(CzsjMemberRelation.class); + util.exportExcel(response, list, "会员关系数据"); + } + + /** + * 获取会员关系详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:relation:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Long uid) + { + return success(czsjMemberRelationService.selectCzsjMemberRelationByUid(uid)); + } + + /** + * 新增会员关系 + */ + @PreAuthorize("@ss.hasPermi('account:relation:add')") + @Log(title = "会员关系", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMemberRelation czsjMemberRelation) + { + return toAjax(czsjMemberRelationService.insertCzsjMemberRelation(czsjMemberRelation)); + } + + /** + * 修改会员关系 + */ + @PreAuthorize("@ss.hasPermi('account:relation:edit')") + @Log(title = "会员关系", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMemberRelation czsjMemberRelation) + { + return toAjax(czsjMemberRelationService.updateCzsjMemberRelation(czsjMemberRelation)); + } + + /** + * 删除会员关系 + */ + @PreAuthorize("@ss.hasPermi('account:relation:remove')") + @Log(title = "会员关系", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Long[] uids) + { + return toAjax(czsjMemberRelationService.deleteCzsjMemberRelationByUids(uids)); + } +} diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberSignController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberSignController.java new file mode 100644 index 0000000..5752465 --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberSignController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMemberSign; +import com.czsj.account.service.ICzsjMemberSignService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员签到记录Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/sign") +public class CzsjMemberSignController extends BaseController +{ + @Autowired + private ICzsjMemberSignService czsjMemberSignService; + + /** + * 查询会员签到记录列表 + */ + @PreAuthorize("@ss.hasPermi('account:sign:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMemberSign czsjMemberSign) + { + startPage(); + List list = czsjMemberSignService.selectCzsjMemberSignList(czsjMemberSign); + return getDataTable(list); + } + + /** + * 导出会员签到记录列表 + */ + @PreAuthorize("@ss.hasPermi('account:sign:export')") + @Log(title = "会员签到记录", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMemberSign czsjMemberSign) + { + List list = czsjMemberSignService.selectCzsjMemberSignList(czsjMemberSign); + ExcelUtil util = new ExcelUtil(CzsjMemberSign.class); + util.exportExcel(response, list, "会员签到记录数据"); + } + + /** + * 获取会员签到记录详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:sign:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Long uid) + { + return success(czsjMemberSignService.selectCzsjMemberSignByUid(uid)); + } + + /** + * 新增会员签到记录 + */ + @PreAuthorize("@ss.hasPermi('account:sign:add')") + @Log(title = "会员签到记录", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMemberSign czsjMemberSign) + { + return toAjax(czsjMemberSignService.insertCzsjMemberSign(czsjMemberSign)); + } + + /** + * 修改会员签到记录 + */ + @PreAuthorize("@ss.hasPermi('account:sign:edit')") + @Log(title = "会员签到记录", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMemberSign czsjMemberSign) + { + return toAjax(czsjMemberSignService.updateCzsjMemberSign(czsjMemberSign)); + } + + /** + * 删除会员签到记录 + */ + @PreAuthorize("@ss.hasPermi('account:sign:remove')") + @Log(title = "会员签到记录", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Long[] uids) + { + return toAjax(czsjMemberSignService.deleteCzsjMemberSignByUids(uids)); + } +} diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberTagController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberTagController.java new file mode 100644 index 0000000..a9b910a --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberTagController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMemberTag; +import com.czsj.account.service.ICzsjMemberTagService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员标签Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/tag") +public class CzsjMemberTagController extends BaseController +{ + @Autowired + private ICzsjMemberTagService czsjMemberTagService; + + /** + * 查询会员标签列表 + */ + @PreAuthorize("@ss.hasPermi('account:tag:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMemberTag czsjMemberTag) + { + startPage(); + List list = czsjMemberTagService.selectCzsjMemberTagList(czsjMemberTag); + return getDataTable(list); + } + + /** + * 导出会员标签列表 + */ + @PreAuthorize("@ss.hasPermi('account:tag:export')") + @Log(title = "会员标签", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMemberTag czsjMemberTag) + { + List list = czsjMemberTagService.selectCzsjMemberTagList(czsjMemberTag); + ExcelUtil util = new ExcelUtil(CzsjMemberTag.class); + util.exportExcel(response, list, "会员标签数据"); + } + + /** + * 获取会员标签详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:tag:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Long uid) + { + return success(czsjMemberTagService.selectCzsjMemberTagByUid(uid)); + } + + /** + * 新增会员标签 + */ + @PreAuthorize("@ss.hasPermi('account:tag:add')") + @Log(title = "会员标签", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMemberTag czsjMemberTag) + { + return toAjax(czsjMemberTagService.insertCzsjMemberTag(czsjMemberTag)); + } + + /** + * 修改会员标签 + */ + @PreAuthorize("@ss.hasPermi('account:tag:edit')") + @Log(title = "会员标签", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMemberTag czsjMemberTag) + { + return toAjax(czsjMemberTagService.updateCzsjMemberTag(czsjMemberTag)); + } + + /** + * 删除会员标签 + */ + @PreAuthorize("@ss.hasPermi('account:tag:remove')") + @Log(title = "会员标签", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Long[] uids) + { + return toAjax(czsjMemberTagService.deleteCzsjMemberTagByUids(uids)); + } +} diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberTagGroupController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberTagGroupController.java new file mode 100644 index 0000000..2a8459d --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberTagGroupController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMemberTagGroup; +import com.czsj.account.service.ICzsjMemberTagGroupService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员标签组Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/group") +public class CzsjMemberTagGroupController extends BaseController +{ + @Autowired + private ICzsjMemberTagGroupService czsjMemberTagGroupService; + + /** + * 查询会员标签组列表 + */ + @PreAuthorize("@ss.hasPermi('account:group:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMemberTagGroup czsjMemberTagGroup) + { + startPage(); + List list = czsjMemberTagGroupService.selectCzsjMemberTagGroupList(czsjMemberTagGroup); + return getDataTable(list); + } + + /** + * 导出会员标签组列表 + */ + @PreAuthorize("@ss.hasPermi('account:group:export')") + @Log(title = "会员标签组", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMemberTagGroup czsjMemberTagGroup) + { + List list = czsjMemberTagGroupService.selectCzsjMemberTagGroupList(czsjMemberTagGroup); + ExcelUtil util = new ExcelUtil(CzsjMemberTagGroup.class); + util.exportExcel(response, list, "会员标签组数据"); + } + + /** + * 获取会员标签组详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:group:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Long uid) + { + return success(czsjMemberTagGroupService.selectCzsjMemberTagGroupByUid(uid)); + } + + /** + * 新增会员标签组 + */ + @PreAuthorize("@ss.hasPermi('account:group:add')") + @Log(title = "会员标签组", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMemberTagGroup czsjMemberTagGroup) + { + return toAjax(czsjMemberTagGroupService.insertCzsjMemberTagGroup(czsjMemberTagGroup)); + } + + /** + * 修改会员标签组 + */ + @PreAuthorize("@ss.hasPermi('account:group:edit')") + @Log(title = "会员标签组", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMemberTagGroup czsjMemberTagGroup) + { + return toAjax(czsjMemberTagGroupService.updateCzsjMemberTagGroup(czsjMemberTagGroup)); + } + + /** + * 删除会员标签组 + */ + @PreAuthorize("@ss.hasPermi('account:group:remove')") + @Log(title = "会员标签组", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Long[] uids) + { + return toAjax(czsjMemberTagGroupService.deleteCzsjMemberTagGroupByUids(uids)); + } +} diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberWxFansController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberWxFansController.java new file mode 100644 index 0000000..9ee2fd3 --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberWxFansController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMemberWxFans; +import com.czsj.account.service.ICzsjMemberWxFansService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员微信粉丝Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/fans") +public class CzsjMemberWxFansController extends BaseController +{ + @Autowired + private ICzsjMemberWxFansService czsjMemberWxFansService; + + /** + * 查询会员微信粉丝列表 + */ + @PreAuthorize("@ss.hasPermi('account:fans:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMemberWxFans czsjMemberWxFans) + { + startPage(); + List list = czsjMemberWxFansService.selectCzsjMemberWxFansList(czsjMemberWxFans); + return getDataTable(list); + } + + /** + * 导出会员微信粉丝列表 + */ + @PreAuthorize("@ss.hasPermi('account:fans:export')") + @Log(title = "会员微信粉丝", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMemberWxFans czsjMemberWxFans) + { + List list = czsjMemberWxFansService.selectCzsjMemberWxFansList(czsjMemberWxFans); + ExcelUtil util = new ExcelUtil(CzsjMemberWxFans.class); + util.exportExcel(response, list, "会员微信粉丝数据"); + } + + /** + * 获取会员微信粉丝详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:fans:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Long uid) + { + return success(czsjMemberWxFansService.selectCzsjMemberWxFansByUid(uid)); + } + + /** + * 新增会员微信粉丝 + */ + @PreAuthorize("@ss.hasPermi('account:fans:add')") + @Log(title = "会员微信粉丝", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMemberWxFans czsjMemberWxFans) + { + return toAjax(czsjMemberWxFansService.insertCzsjMemberWxFans(czsjMemberWxFans)); + } + + /** + * 修改会员微信粉丝 + */ + @PreAuthorize("@ss.hasPermi('account:fans:edit')") + @Log(title = "会员微信粉丝", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMemberWxFans czsjMemberWxFans) + { + return toAjax(czsjMemberWxFansService.updateCzsjMemberWxFans(czsjMemberWxFans)); + } + + /** + * 删除会员微信粉丝 + */ + @PreAuthorize("@ss.hasPermi('account:fans:remove')") + @Log(title = "会员微信粉丝", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Long[] uids) + { + return toAjax(czsjMemberWxFansService.deleteCzsjMemberWxFansByUids(uids)); + } +} diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberWxSourceController.java b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberWxSourceController.java new file mode 100644 index 0000000..7d11b00 --- /dev/null +++ b/czsj-admin/src/main/java/com/czsj/web/controller/account/CzsjMemberWxSourceController.java @@ -0,0 +1,104 @@ +package com.czsj.web.controller.account; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.czsj.common.annotation.Log; +import com.czsj.common.core.controller.BaseController; +import com.czsj.common.core.domain.AjaxResult; +import com.czsj.common.enums.BusinessType; +import com.czsj.account.domain.CzsjMemberWxSource; +import com.czsj.account.service.ICzsjMemberWxSourceService; +import com.czsj.common.utils.poi.ExcelUtil; +import com.czsj.common.core.page.TableDataInfo; + +/** + * 会员微信来源信息Controller + * + * @author czsj + * @date 2024-12-01 + */ +@RestController +@RequestMapping("/account/source") +public class CzsjMemberWxSourceController extends BaseController +{ + @Autowired + private ICzsjMemberWxSourceService czsjMemberWxSourceService; + + /** + * 查询会员微信来源信息列表 + */ + @PreAuthorize("@ss.hasPermi('account:source:list')") + @GetMapping("/list") + public TableDataInfo list(CzsjMemberWxSource czsjMemberWxSource) + { + startPage(); + List list = czsjMemberWxSourceService.selectCzsjMemberWxSourceList(czsjMemberWxSource); + return getDataTable(list); + } + + /** + * 导出会员微信来源信息列表 + */ + @PreAuthorize("@ss.hasPermi('account:source:export')") + @Log(title = "会员微信来源信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, CzsjMemberWxSource czsjMemberWxSource) + { + List list = czsjMemberWxSourceService.selectCzsjMemberWxSourceList(czsjMemberWxSource); + ExcelUtil util = new ExcelUtil(CzsjMemberWxSource.class); + util.exportExcel(response, list, "会员微信来源信息数据"); + } + + /** + * 获取会员微信来源信息详细信息 + */ + @PreAuthorize("@ss.hasPermi('account:source:query')") + @GetMapping(value = "/{uid}") + public AjaxResult getInfo(@PathVariable("uid") Long uid) + { + return success(czsjMemberWxSourceService.selectCzsjMemberWxSourceByUid(uid)); + } + + /** + * 新增会员微信来源信息 + */ + @PreAuthorize("@ss.hasPermi('account:source:add')") + @Log(title = "会员微信来源信息", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody CzsjMemberWxSource czsjMemberWxSource) + { + return toAjax(czsjMemberWxSourceService.insertCzsjMemberWxSource(czsjMemberWxSource)); + } + + /** + * 修改会员微信来源信息 + */ + @PreAuthorize("@ss.hasPermi('account:source:edit')") + @Log(title = "会员微信来源信息", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody CzsjMemberWxSource czsjMemberWxSource) + { + return toAjax(czsjMemberWxSourceService.updateCzsjMemberWxSource(czsjMemberWxSource)); + } + + /** + * 删除会员微信来源信息 + */ + @PreAuthorize("@ss.hasPermi('account:source:remove')") + @Log(title = "会员微信来源信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{uids}") + public AjaxResult remove(@PathVariable Long[] uids) + { + return toAjax(czsjMemberWxSourceService.deleteCzsjMemberWxSourceByUids(uids)); + } +} diff --git a/czsj-common/pom.xml b/czsj-common/pom.xml index 3cf204b..e366902 100644 --- a/czsj-common/pom.xml +++ b/czsj-common/pom.xml @@ -17,6 +17,11 @@ + + cn.hutool + hutool-all + + org.springframework diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMember.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMember.java new file mode 100644 index 0000000..0dcafcc --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMember.java @@ -0,0 +1,295 @@ +package com.czsj.account.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员信息对象 czsj_member + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMember extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 会员ID */ + private Long uid; + + /** 姓名 */ + @Excel(name = "姓名") + private String name; + + /** 生日 */ + @Excel(name = "生日") + private String birthday; + + /** 性别,0未知,1男,2女,3保密 */ + @Excel(name = "性别,0未知,1男,2女,3保密") + private Integer sex; + + /** 邮箱 */ + @Excel(name = "邮箱") + private String email; + + /** 地址 */ + @Excel(name = "地址") + private String address; + + /** 手机号码 */ + @Excel(name = "手机号码") + private String phone; + + /** 会员卡号 */ + @Excel(name = "会员卡号") + private Long memberId; + + /** 会员等级 */ + @Excel(name = "会员等级") + private Long memberLevel; + + /** 城市 */ + @Excel(name = "城市") + private String city; + + /** 地区 */ + @Excel(name = "地区") + private String area; + + /** 渠道来源 */ + @Excel(name = "渠道来源") + private String source; + + /** 会员状态,0注销,1正常,2冻结 */ + @Excel(name = "会员状态,0注销,1正常,2冻结") + private Integer status; + + /** 注销时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "注销时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date logoutTime; + + /** 冻结时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "冻结时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date freezeTime; + + /** 发卡时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "发卡时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date cardTime; + + /** 有效标识,0有效,1无效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setBirthday(String birthday) + { + this.birthday = birthday; + } + + public String getBirthday() + { + return birthday; + } + public void setSex(Integer sex) + { + this.sex = sex; + } + + public Integer getSex() + { + return sex; + } + public void setEmail(String email) + { + this.email = email; + } + + public String getEmail() + { + return email; + } + public void setAddress(String address) + { + this.address = address; + } + + public String getAddress() + { + return address; + } + public void setPhone(String phone) + { + this.phone = phone; + } + + public String getPhone() + { + return phone; + } + public void setMemberId(Long memberId) + { + this.memberId = memberId; + } + + public Long getMemberId() + { + return memberId; + } + public void setMemberLevel(Long memberLevel) + { + this.memberLevel = memberLevel; + } + + public Long getMemberLevel() + { + return memberLevel; + } + public void setCity(String city) + { + this.city = city; + } + + public String getCity() + { + return city; + } + public void setArea(String area) + { + this.area = area; + } + + public String getArea() + { + return area; + } + public void setSource(String source) + { + this.source = source; + } + + public String getSource() + { + return source; + } + public void setStatus(Integer status) + { + this.status = status; + } + + public Integer getStatus() + { + return status; + } + public void setLogoutTime(Date logoutTime) + { + this.logoutTime = logoutTime; + } + + public Date getLogoutTime() + { + return logoutTime; + } + public void setFreezeTime(Date freezeTime) + { + this.freezeTime = freezeTime; + } + + public Date getFreezeTime() + { + return freezeTime; + } + public void setCardTime(Date cardTime) + { + this.cardTime = cardTime; + } + + public Date getCardTime() + { + return cardTime; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("name", getName()) + .append("birthday", getBirthday()) + .append("sex", getSex()) + .append("email", getEmail()) + .append("address", getAddress()) + .append("phone", getPhone()) + .append("memberId", getMemberId()) + .append("memberLevel", getMemberLevel()) + .append("city", getCity()) + .append("area", getArea()) + .append("source", getSource()) + .append("status", getStatus()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("logoutTime", getLogoutTime()) + .append("freezeTime", getFreezeTime()) + .append("cardTime", getCardTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberCard.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberCard.java new file mode 100644 index 0000000..108cbbf --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberCard.java @@ -0,0 +1,122 @@ +package com.czsj.account.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员证件信息对象 czsj_member_card + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMemberCard extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 证件ID */ + private Integer uid; + + /** 会员ID */ + @Excel(name = "会员ID") + private Long memberUid; + + /** 证件类型 */ + @Excel(name = "证件类型") + private String cardType; + + /** 证件号码 */ + @Excel(name = "证件号码") + private String cardId; + + /** 有效标识,0有效,1失效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Integer uid) + { + this.uid = uid; + } + + public Integer getUid() + { + return uid; + } + public void setMemberUid(Long memberUid) + { + this.memberUid = memberUid; + } + + public Long getMemberUid() + { + return memberUid; + } + public void setCardType(String cardType) + { + this.cardType = cardType; + } + + public String getCardType() + { + return cardType; + } + public void setCardId(String cardId) + { + this.cardId = cardId; + } + + public String getCardId() + { + return cardId; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("memberUid", getMemberUid()) + .append("cardType", getCardType()) + .append("cardId", getCardId()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberLocus.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberLocus.java new file mode 100644 index 0000000..035a879 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberLocus.java @@ -0,0 +1,139 @@ +package com.czsj.account.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员轨迹信息对象 czsj_member_locus + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMemberLocus extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 会员轨迹ID */ + private Long uid; + + /** 会员ID */ + @Excel(name = "会员ID") + private Long memberUid; + + /** 轨迹类型(1:信息动态;2:社交动态;3:活动规则;4:待办动态) */ + @Excel(name = "轨迹类型(1:信息动态;2:社交动态;3:活动规则;4:待办动态)") + private Long trajectoryType; + + /** 文案内容 */ + @Excel(name = "文案内容") + private String content; + + /** 处理日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "处理日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date createDate; + + /** 有效标识,0有效,1无效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setMemberUid(Long memberUid) + { + this.memberUid = memberUid; + } + + public Long getMemberUid() + { + return memberUid; + } + public void setTrajectoryType(Long trajectoryType) + { + this.trajectoryType = trajectoryType; + } + + public Long getTrajectoryType() + { + return trajectoryType; + } + public void setContent(String content) + { + this.content = content; + } + + public String getContent() + { + return content; + } + public void setCreateDate(Date createDate) + { + this.createDate = createDate; + } + + public Date getCreateDate() + { + return createDate; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("memberUid", getMemberUid()) + .append("trajectoryType", getTrajectoryType()) + .append("content", getContent()) + .append("createDate", getCreateDate()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberRelation.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberRelation.java new file mode 100644 index 0000000..d49f338 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberRelation.java @@ -0,0 +1,136 @@ +package com.czsj.account.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员关系对象 czsj_member_relation + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMemberRelation extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 会员关系ID */ + private Long uid; + + /** 会员ID */ + @Excel(name = "会员ID") + private Long memberUid; + + /** 关系 */ + @Excel(name = "关系") + private String relation; + + /** 关系会员ID */ + @Excel(name = "关系会员ID") + private Long memberRelationUid; + + /** 备注 */ + @Excel(name = "备注") + private String mark; + + /** 有效标识,0有效,1无效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setMemberUid(Long memberUid) + { + this.memberUid = memberUid; + } + + public Long getMemberUid() + { + return memberUid; + } + public void setRelation(String relation) + { + this.relation = relation; + } + + public String getRelation() + { + return relation; + } + public void setMemberRelationUid(Long memberRelationUid) + { + this.memberRelationUid = memberRelationUid; + } + + public Long getMemberRelationUid() + { + return memberRelationUid; + } + public void setMark(String mark) + { + this.mark = mark; + } + + public String getMark() + { + return mark; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("memberUid", getMemberUid()) + .append("relation", getRelation()) + .append("memberRelationUid", getMemberRelationUid()) + .append("mark", getMark()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberSign.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberSign.java new file mode 100644 index 0000000..a09fb8f --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberSign.java @@ -0,0 +1,111 @@ +package com.czsj.account.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员签到记录对象 czsj_member_sign + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMemberSign extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 签到记录ID */ + private Long uid; + + /** 用户ID */ + @Excel(name = "用户ID") + private Long memberUid; + + /** 签到日期 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "签到日期", width = 30, dateFormat = "yyyy-MM-dd") + private Date createDay; + + /** 有效标识,0有效,1无效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setMemberUid(Long memberUid) + { + this.memberUid = memberUid; + } + + public Long getMemberUid() + { + return memberUid; + } + public void setCreateDay(Date createDay) + { + this.createDay = createDay; + } + + public Date getCreateDay() + { + return createDay; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("memberUid", getMemberUid()) + .append("createDay", getCreateDay()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberTag.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberTag.java new file mode 100644 index 0000000..0b65636 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberTag.java @@ -0,0 +1,122 @@ +package com.czsj.account.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员标签对象 czsj_member_tag + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMemberTag extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 标签ID */ + private Long uid; + + /** 标签名称 */ + @Excel(name = "标签名称") + private String name; + + /** 标签备注 */ + @Excel(name = "标签备注") + private String mark; + + /** 标签组ID */ + @Excel(name = "标签组ID") + private Long tagGroupUid; + + /** 有效标识,0有效,1无效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setMark(String mark) + { + this.mark = mark; + } + + public String getMark() + { + return mark; + } + public void setTagGroupUid(Long tagGroupUid) + { + this.tagGroupUid = tagGroupUid; + } + + public Long getTagGroupUid() + { + return tagGroupUid; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("name", getName()) + .append("mark", getMark()) + .append("tagGroupUid", getTagGroupUid()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberTagGroup.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberTagGroup.java new file mode 100644 index 0000000..598fd5c --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberTagGroup.java @@ -0,0 +1,108 @@ +package com.czsj.account.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员标签组对象 czsj_member_tag_group + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMemberTagGroup extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 标签组ID */ + private Long uid; + + /** 标签组名称 */ + @Excel(name = "标签组名称") + private String name; + + /** 标签组备注 */ + @Excel(name = "标签组备注") + private String mark; + + /** 有效标识,0有效,1无效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setMark(String mark) + { + this.mark = mark; + } + + public String getMark() + { + return mark; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("name", getName()) + .append("mark", getMark()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberWxFans.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberWxFans.java new file mode 100644 index 0000000..986bdd2 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberWxFans.java @@ -0,0 +1,239 @@ +package com.czsj.account.domain; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员微信粉丝对象 czsj_member_wx_fans + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMemberWxFans extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 会员微信粉丝ID */ + private Long uid; + + /** 会员ID */ + @Excel(name = "会员ID") + private Long memberUid; + + /** 公众号ID */ + @Excel(name = "公众号ID") + private String appId; + + /** 公众号名称 */ + @Excel(name = "公众号名称") + private String appName; + + /** 绑定时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "绑定时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date bindTime; + + /** 微信昵称 */ + @Excel(name = "微信昵称") + private String name; + + /** 微信头像URL */ + @Excel(name = "微信头像URL") + private String imageUrl; + + /** 微信unionID */ + @Excel(name = "微信unionID") + private String unionId; + + /** 微信openID */ + @Excel(name = "微信openID") + private String openId; + + /** 订阅状态,0订阅,1未订阅 */ + @Excel(name = "订阅状态,0订阅,1未订阅") + private Integer subscribeStatus; + + /** 订阅时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "订阅时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date subscribeTime; + + /** 取消订阅时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "取消订阅时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date unsubscribeTime; + + /** 有效标识,0有效,1无效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setMemberUid(Long memberUid) + { + this.memberUid = memberUid; + } + + public Long getMemberUid() + { + return memberUid; + } + public void setAppId(String appId) + { + this.appId = appId; + } + + public String getAppId() + { + return appId; + } + public void setAppName(String appName) + { + this.appName = appName; + } + + public String getAppName() + { + return appName; + } + public void setBindTime(Date bindTime) + { + this.bindTime = bindTime; + } + + public Date getBindTime() + { + return bindTime; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setImageUrl(String imageUrl) + { + this.imageUrl = imageUrl; + } + + public String getImageUrl() + { + return imageUrl; + } + public void setUnionId(String unionId) + { + this.unionId = unionId; + } + + public String getUnionId() + { + return unionId; + } + public void setOpenId(String openId) + { + this.openId = openId; + } + + public String getOpenId() + { + return openId; + } + public void setSubscribeStatus(Integer subscribeStatus) + { + this.subscribeStatus = subscribeStatus; + } + + public Integer getSubscribeStatus() + { + return subscribeStatus; + } + public void setSubscribeTime(Date subscribeTime) + { + this.subscribeTime = subscribeTime; + } + + public Date getSubscribeTime() + { + return subscribeTime; + } + public void setUnsubscribeTime(Date unsubscribeTime) + { + this.unsubscribeTime = unsubscribeTime; + } + + public Date getUnsubscribeTime() + { + return unsubscribeTime; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("memberUid", getMemberUid()) + .append("appId", getAppId()) + .append("appName", getAppName()) + .append("bindTime", getBindTime()) + .append("name", getName()) + .append("imageUrl", getImageUrl()) + .append("unionId", getUnionId()) + .append("openId", getOpenId()) + .append("subscribeStatus", getSubscribeStatus()) + .append("subscribeTime", getSubscribeTime()) + .append("unsubscribeTime", getUnsubscribeTime()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberWxSource.java b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberWxSource.java new file mode 100644 index 0000000..80e912b --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/domain/CzsjMemberWxSource.java @@ -0,0 +1,234 @@ +package com.czsj.account.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.czsj.common.annotation.Excel; +import com.czsj.common.core.domain.BaseEntity; + +/** + * 会员微信来源信息对象 czsj_member_wx_source + * + * @author czsj + * @date 2024-12-01 + */ +public class CzsjMemberWxSource extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 会员来源ID */ + private Long uid; + + /** 微信unionID */ + @Excel(name = "微信unionID") + private String unionId; + + /** 微信openID */ + @Excel(name = "微信openID") + private String openId; + + /** 姓名 */ + @Excel(name = "姓名") + private String name; + + /** 头像url */ + @Excel(name = "头像url") + private String imageUrl; + + /** 生日 */ + @Excel(name = "生日") + private String birthday; + + /** 性别,0未知,1男,2女,3保密 */ + @Excel(name = "性别,0未知,1男,2女,3保密") + private Integer sex; + + /** 邮箱 */ + @Excel(name = "邮箱") + private String email; + + /** 地址 */ + @Excel(name = "地址") + private String address; + + /** 手机号码 */ + @Excel(name = "手机号码") + private String phone; + + /** 城市 */ + @Excel(name = "城市") + private String city; + + /** 地区 */ + @Excel(name = "地区") + private String area; + + /** 有效标识,0有效,1无效 */ + private Integer delFlag; + + /** 创建人ID */ + @Excel(name = "创建人ID") + private Long createUserId; + + /** 修改人ID */ + @Excel(name = "修改人ID") + private Long updateUserId; + + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setUnionId(String unionId) + { + this.unionId = unionId; + } + + public String getUnionId() + { + return unionId; + } + public void setOpenId(String openId) + { + this.openId = openId; + } + + public String getOpenId() + { + return openId; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setImageUrl(String imageUrl) + { + this.imageUrl = imageUrl; + } + + public String getImageUrl() + { + return imageUrl; + } + public void setBirthday(String birthday) + { + this.birthday = birthday; + } + + public String getBirthday() + { + return birthday; + } + public void setSex(Integer sex) + { + this.sex = sex; + } + + public Integer getSex() + { + return sex; + } + public void setEmail(String email) + { + this.email = email; + } + + public String getEmail() + { + return email; + } + public void setAddress(String address) + { + this.address = address; + } + + public String getAddress() + { + return address; + } + public void setPhone(String phone) + { + this.phone = phone; + } + + public String getPhone() + { + return phone; + } + public void setCity(String city) + { + this.city = city; + } + + public String getCity() + { + return city; + } + public void setArea(String area) + { + this.area = area; + } + + public String getArea() + { + return area; + } + public void setDelFlag(Integer delFlag) + { + this.delFlag = delFlag; + } + + public Integer getDelFlag() + { + return delFlag; + } + public void setCreateUserId(Long createUserId) + { + this.createUserId = createUserId; + } + + public Long getCreateUserId() + { + return createUserId; + } + public void setUpdateUserId(Long updateUserId) + { + this.updateUserId = updateUserId; + } + + public Long getUpdateUserId() + { + return updateUserId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("uid", getUid()) + .append("unionId", getUnionId()) + .append("openId", getOpenId()) + .append("name", getName()) + .append("imageUrl", getImageUrl()) + .append("birthday", getBirthday()) + .append("sex", getSex()) + .append("email", getEmail()) + .append("address", getAddress()) + .append("phone", getPhone()) + .append("city", getCity()) + .append("area", getArea()) + .append("createTime", getCreateTime()) + .append("updateTime", getUpdateTime()) + .append("delFlag", getDelFlag()) + .append("createUserId", getCreateUserId()) + .append("updateUserId", getUpdateUserId()) + .toString(); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberCardMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberCardMapper.java new file mode 100644 index 0000000..69e3b32 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberCardMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberCard; + +/** + * 会员证件信息Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberCardMapper +{ + /** + * 查询会员证件信息 + * + * @param uid 会员证件信息主键 + * @return 会员证件信息 + */ + public CzsjMemberCard selectCzsjMemberCardByUid(Integer uid); + + /** + * 查询会员证件信息列表 + * + * @param czsjMemberCard 会员证件信息 + * @return 会员证件信息集合 + */ + public List selectCzsjMemberCardList(CzsjMemberCard czsjMemberCard); + + /** + * 新增会员证件信息 + * + * @param czsjMemberCard 会员证件信息 + * @return 结果 + */ + public int insertCzsjMemberCard(CzsjMemberCard czsjMemberCard); + + /** + * 修改会员证件信息 + * + * @param czsjMemberCard 会员证件信息 + * @return 结果 + */ + public int updateCzsjMemberCard(CzsjMemberCard czsjMemberCard); + + /** + * 删除会员证件信息 + * + * @param uid 会员证件信息主键 + * @return 结果 + */ + public int deleteCzsjMemberCardByUid(Integer uid); + + /** + * 批量删除会员证件信息 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberCardByUids(Integer[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberLocusMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberLocusMapper.java new file mode 100644 index 0000000..f1a366c --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberLocusMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberLocus; + +/** + * 会员轨迹信息Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberLocusMapper +{ + /** + * 查询会员轨迹信息 + * + * @param uid 会员轨迹信息主键 + * @return 会员轨迹信息 + */ + public CzsjMemberLocus selectCzsjMemberLocusByUid(Long uid); + + /** + * 查询会员轨迹信息列表 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 会员轨迹信息集合 + */ + public List selectCzsjMemberLocusList(CzsjMemberLocus czsjMemberLocus); + + /** + * 新增会员轨迹信息 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 结果 + */ + public int insertCzsjMemberLocus(CzsjMemberLocus czsjMemberLocus); + + /** + * 修改会员轨迹信息 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 结果 + */ + public int updateCzsjMemberLocus(CzsjMemberLocus czsjMemberLocus); + + /** + * 删除会员轨迹信息 + * + * @param uid 会员轨迹信息主键 + * @return 结果 + */ + public int deleteCzsjMemberLocusByUid(Long uid); + + /** + * 批量删除会员轨迹信息 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberLocusByUids(Long[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberMapper.java new file mode 100644 index 0000000..6fa791a --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMember; + +/** + * 会员信息Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberMapper +{ + /** + * 查询会员信息 + * + * @param uid 会员信息主键 + * @return 会员信息 + */ + public CzsjMember selectCzsjMemberByUid(Long uid); + + /** + * 查询会员信息列表 + * + * @param czsjMember 会员信息 + * @return 会员信息集合 + */ + public List selectCzsjMemberList(CzsjMember czsjMember); + + /** + * 新增会员信息 + * + * @param czsjMember 会员信息 + * @return 结果 + */ + public int insertCzsjMember(CzsjMember czsjMember); + + /** + * 修改会员信息 + * + * @param czsjMember 会员信息 + * @return 结果 + */ + public int updateCzsjMember(CzsjMember czsjMember); + + /** + * 删除会员信息 + * + * @param uid 会员信息主键 + * @return 结果 + */ + public int deleteCzsjMemberByUid(Long uid); + + /** + * 批量删除会员信息 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberByUids(Long[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberRelationMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberRelationMapper.java new file mode 100644 index 0000000..46fa0a3 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberRelationMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberRelation; + +/** + * 会员关系Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberRelationMapper +{ + /** + * 查询会员关系 + * + * @param uid 会员关系主键 + * @return 会员关系 + */ + public CzsjMemberRelation selectCzsjMemberRelationByUid(Long uid); + + /** + * 查询会员关系列表 + * + * @param czsjMemberRelation 会员关系 + * @return 会员关系集合 + */ + public List selectCzsjMemberRelationList(CzsjMemberRelation czsjMemberRelation); + + /** + * 新增会员关系 + * + * @param czsjMemberRelation 会员关系 + * @return 结果 + */ + public int insertCzsjMemberRelation(CzsjMemberRelation czsjMemberRelation); + + /** + * 修改会员关系 + * + * @param czsjMemberRelation 会员关系 + * @return 结果 + */ + public int updateCzsjMemberRelation(CzsjMemberRelation czsjMemberRelation); + + /** + * 删除会员关系 + * + * @param uid 会员关系主键 + * @return 结果 + */ + public int deleteCzsjMemberRelationByUid(Long uid); + + /** + * 批量删除会员关系 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberRelationByUids(Long[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberSignMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberSignMapper.java new file mode 100644 index 0000000..c1ac60c --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberSignMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberSign; + +/** + * 会员签到记录Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberSignMapper +{ + /** + * 查询会员签到记录 + * + * @param uid 会员签到记录主键 + * @return 会员签到记录 + */ + public CzsjMemberSign selectCzsjMemberSignByUid(Long uid); + + /** + * 查询会员签到记录列表 + * + * @param czsjMemberSign 会员签到记录 + * @return 会员签到记录集合 + */ + public List selectCzsjMemberSignList(CzsjMemberSign czsjMemberSign); + + /** + * 新增会员签到记录 + * + * @param czsjMemberSign 会员签到记录 + * @return 结果 + */ + public int insertCzsjMemberSign(CzsjMemberSign czsjMemberSign); + + /** + * 修改会员签到记录 + * + * @param czsjMemberSign 会员签到记录 + * @return 结果 + */ + public int updateCzsjMemberSign(CzsjMemberSign czsjMemberSign); + + /** + * 删除会员签到记录 + * + * @param uid 会员签到记录主键 + * @return 结果 + */ + public int deleteCzsjMemberSignByUid(Long uid); + + /** + * 批量删除会员签到记录 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberSignByUids(Long[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberTagGroupMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberTagGroupMapper.java new file mode 100644 index 0000000..05fec16 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberTagGroupMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberTagGroup; + +/** + * 会员标签组Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberTagGroupMapper +{ + /** + * 查询会员标签组 + * + * @param uid 会员标签组主键 + * @return 会员标签组 + */ + public CzsjMemberTagGroup selectCzsjMemberTagGroupByUid(Long uid); + + /** + * 查询会员标签组列表 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 会员标签组集合 + */ + public List selectCzsjMemberTagGroupList(CzsjMemberTagGroup czsjMemberTagGroup); + + /** + * 新增会员标签组 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 结果 + */ + public int insertCzsjMemberTagGroup(CzsjMemberTagGroup czsjMemberTagGroup); + + /** + * 修改会员标签组 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 结果 + */ + public int updateCzsjMemberTagGroup(CzsjMemberTagGroup czsjMemberTagGroup); + + /** + * 删除会员标签组 + * + * @param uid 会员标签组主键 + * @return 结果 + */ + public int deleteCzsjMemberTagGroupByUid(Long uid); + + /** + * 批量删除会员标签组 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberTagGroupByUids(Long[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberTagMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberTagMapper.java new file mode 100644 index 0000000..bab2159 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberTagMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberTag; + +/** + * 会员标签Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberTagMapper +{ + /** + * 查询会员标签 + * + * @param uid 会员标签主键 + * @return 会员标签 + */ + public CzsjMemberTag selectCzsjMemberTagByUid(Long uid); + + /** + * 查询会员标签列表 + * + * @param czsjMemberTag 会员标签 + * @return 会员标签集合 + */ + public List selectCzsjMemberTagList(CzsjMemberTag czsjMemberTag); + + /** + * 新增会员标签 + * + * @param czsjMemberTag 会员标签 + * @return 结果 + */ + public int insertCzsjMemberTag(CzsjMemberTag czsjMemberTag); + + /** + * 修改会员标签 + * + * @param czsjMemberTag 会员标签 + * @return 结果 + */ + public int updateCzsjMemberTag(CzsjMemberTag czsjMemberTag); + + /** + * 删除会员标签 + * + * @param uid 会员标签主键 + * @return 结果 + */ + public int deleteCzsjMemberTagByUid(Long uid); + + /** + * 批量删除会员标签 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberTagByUids(Long[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberWxFansMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberWxFansMapper.java new file mode 100644 index 0000000..73a59f7 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberWxFansMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberWxFans; + +/** + * 会员微信粉丝Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberWxFansMapper +{ + /** + * 查询会员微信粉丝 + * + * @param uid 会员微信粉丝主键 + * @return 会员微信粉丝 + */ + public CzsjMemberWxFans selectCzsjMemberWxFansByUid(Long uid); + + /** + * 查询会员微信粉丝列表 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 会员微信粉丝集合 + */ + public List selectCzsjMemberWxFansList(CzsjMemberWxFans czsjMemberWxFans); + + /** + * 新增会员微信粉丝 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 结果 + */ + public int insertCzsjMemberWxFans(CzsjMemberWxFans czsjMemberWxFans); + + /** + * 修改会员微信粉丝 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 结果 + */ + public int updateCzsjMemberWxFans(CzsjMemberWxFans czsjMemberWxFans); + + /** + * 删除会员微信粉丝 + * + * @param uid 会员微信粉丝主键 + * @return 结果 + */ + public int deleteCzsjMemberWxFansByUid(Long uid); + + /** + * 批量删除会员微信粉丝 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberWxFansByUids(Long[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberWxSourceMapper.java b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberWxSourceMapper.java new file mode 100644 index 0000000..018d5f1 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/mapper/CzsjMemberWxSourceMapper.java @@ -0,0 +1,61 @@ +package com.czsj.account.mapper; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberWxSource; + +/** + * 会员微信来源信息Mapper接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface CzsjMemberWxSourceMapper +{ + /** + * 查询会员微信来源信息 + * + * @param uid 会员微信来源信息主键 + * @return 会员微信来源信息 + */ + public CzsjMemberWxSource selectCzsjMemberWxSourceByUid(Long uid); + + /** + * 查询会员微信来源信息列表 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 会员微信来源信息集合 + */ + public List selectCzsjMemberWxSourceList(CzsjMemberWxSource czsjMemberWxSource); + + /** + * 新增会员微信来源信息 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 结果 + */ + public int insertCzsjMemberWxSource(CzsjMemberWxSource czsjMemberWxSource); + + /** + * 修改会员微信来源信息 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 结果 + */ + public int updateCzsjMemberWxSource(CzsjMemberWxSource czsjMemberWxSource); + + /** + * 删除会员微信来源信息 + * + * @param uid 会员微信来源信息主键 + * @return 结果 + */ + public int deleteCzsjMemberWxSourceByUid(Long uid); + + /** + * 批量删除会员微信来源信息 + * + * @param uids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteCzsjMemberWxSourceByUids(Long[] uids); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberCardService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberCardService.java new file mode 100644 index 0000000..8c04c48 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberCardService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberCard; + +/** + * 会员证件信息Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberCardService +{ + /** + * 查询会员证件信息 + * + * @param uid 会员证件信息主键 + * @return 会员证件信息 + */ + public CzsjMemberCard selectCzsjMemberCardByUid(Integer uid); + + /** + * 查询会员证件信息列表 + * + * @param czsjMemberCard 会员证件信息 + * @return 会员证件信息集合 + */ + public List selectCzsjMemberCardList(CzsjMemberCard czsjMemberCard); + + /** + * 新增会员证件信息 + * + * @param czsjMemberCard 会员证件信息 + * @return 结果 + */ + public int insertCzsjMemberCard(CzsjMemberCard czsjMemberCard); + + /** + * 修改会员证件信息 + * + * @param czsjMemberCard 会员证件信息 + * @return 结果 + */ + public int updateCzsjMemberCard(CzsjMemberCard czsjMemberCard); + + /** + * 批量删除会员证件信息 + * + * @param uids 需要删除的会员证件信息主键集合 + * @return 结果 + */ + public int deleteCzsjMemberCardByUids(Integer[] uids); + + /** + * 删除会员证件信息信息 + * + * @param uid 会员证件信息主键 + * @return 结果 + */ + public int deleteCzsjMemberCardByUid(Integer uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberLocusService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberLocusService.java new file mode 100644 index 0000000..d484fbe --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberLocusService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberLocus; + +/** + * 会员轨迹信息Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberLocusService +{ + /** + * 查询会员轨迹信息 + * + * @param uid 会员轨迹信息主键 + * @return 会员轨迹信息 + */ + public CzsjMemberLocus selectCzsjMemberLocusByUid(Long uid); + + /** + * 查询会员轨迹信息列表 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 会员轨迹信息集合 + */ + public List selectCzsjMemberLocusList(CzsjMemberLocus czsjMemberLocus); + + /** + * 新增会员轨迹信息 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 结果 + */ + public int insertCzsjMemberLocus(CzsjMemberLocus czsjMemberLocus); + + /** + * 修改会员轨迹信息 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 结果 + */ + public int updateCzsjMemberLocus(CzsjMemberLocus czsjMemberLocus); + + /** + * 批量删除会员轨迹信息 + * + * @param uids 需要删除的会员轨迹信息主键集合 + * @return 结果 + */ + public int deleteCzsjMemberLocusByUids(Long[] uids); + + /** + * 删除会员轨迹信息信息 + * + * @param uid 会员轨迹信息主键 + * @return 结果 + */ + public int deleteCzsjMemberLocusByUid(Long uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberRelationService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberRelationService.java new file mode 100644 index 0000000..018d7c4 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberRelationService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberRelation; + +/** + * 会员关系Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberRelationService +{ + /** + * 查询会员关系 + * + * @param uid 会员关系主键 + * @return 会员关系 + */ + public CzsjMemberRelation selectCzsjMemberRelationByUid(Long uid); + + /** + * 查询会员关系列表 + * + * @param czsjMemberRelation 会员关系 + * @return 会员关系集合 + */ + public List selectCzsjMemberRelationList(CzsjMemberRelation czsjMemberRelation); + + /** + * 新增会员关系 + * + * @param czsjMemberRelation 会员关系 + * @return 结果 + */ + public int insertCzsjMemberRelation(CzsjMemberRelation czsjMemberRelation); + + /** + * 修改会员关系 + * + * @param czsjMemberRelation 会员关系 + * @return 结果 + */ + public int updateCzsjMemberRelation(CzsjMemberRelation czsjMemberRelation); + + /** + * 批量删除会员关系 + * + * @param uids 需要删除的会员关系主键集合 + * @return 结果 + */ + public int deleteCzsjMemberRelationByUids(Long[] uids); + + /** + * 删除会员关系信息 + * + * @param uid 会员关系主键 + * @return 结果 + */ + public int deleteCzsjMemberRelationByUid(Long uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberService.java new file mode 100644 index 0000000..8512d3c --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMember; + +/** + * 会员信息Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberService +{ + /** + * 查询会员信息 + * + * @param uid 会员信息主键 + * @return 会员信息 + */ + public CzsjMember selectCzsjMemberByUid(Long uid); + + /** + * 查询会员信息列表 + * + * @param czsjMember 会员信息 + * @return 会员信息集合 + */ + public List selectCzsjMemberList(CzsjMember czsjMember); + + /** + * 新增会员信息 + * + * @param czsjMember 会员信息 + * @return 结果 + */ + public int insertCzsjMember(CzsjMember czsjMember); + + /** + * 修改会员信息 + * + * @param czsjMember 会员信息 + * @return 结果 + */ + public int updateCzsjMember(CzsjMember czsjMember); + + /** + * 批量删除会员信息 + * + * @param uids 需要删除的会员信息主键集合 + * @return 结果 + */ + public int deleteCzsjMemberByUids(Long[] uids); + + /** + * 删除会员信息信息 + * + * @param uid 会员信息主键 + * @return 结果 + */ + public int deleteCzsjMemberByUid(Long uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberSignService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberSignService.java new file mode 100644 index 0000000..000dced --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberSignService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberSign; + +/** + * 会员签到记录Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberSignService +{ + /** + * 查询会员签到记录 + * + * @param uid 会员签到记录主键 + * @return 会员签到记录 + */ + public CzsjMemberSign selectCzsjMemberSignByUid(Long uid); + + /** + * 查询会员签到记录列表 + * + * @param czsjMemberSign 会员签到记录 + * @return 会员签到记录集合 + */ + public List selectCzsjMemberSignList(CzsjMemberSign czsjMemberSign); + + /** + * 新增会员签到记录 + * + * @param czsjMemberSign 会员签到记录 + * @return 结果 + */ + public int insertCzsjMemberSign(CzsjMemberSign czsjMemberSign); + + /** + * 修改会员签到记录 + * + * @param czsjMemberSign 会员签到记录 + * @return 结果 + */ + public int updateCzsjMemberSign(CzsjMemberSign czsjMemberSign); + + /** + * 批量删除会员签到记录 + * + * @param uids 需要删除的会员签到记录主键集合 + * @return 结果 + */ + public int deleteCzsjMemberSignByUids(Long[] uids); + + /** + * 删除会员签到记录信息 + * + * @param uid 会员签到记录主键 + * @return 结果 + */ + public int deleteCzsjMemberSignByUid(Long uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberTagGroupService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberTagGroupService.java new file mode 100644 index 0000000..57c516d --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberTagGroupService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberTagGroup; + +/** + * 会员标签组Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberTagGroupService +{ + /** + * 查询会员标签组 + * + * @param uid 会员标签组主键 + * @return 会员标签组 + */ + public CzsjMemberTagGroup selectCzsjMemberTagGroupByUid(Long uid); + + /** + * 查询会员标签组列表 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 会员标签组集合 + */ + public List selectCzsjMemberTagGroupList(CzsjMemberTagGroup czsjMemberTagGroup); + + /** + * 新增会员标签组 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 结果 + */ + public int insertCzsjMemberTagGroup(CzsjMemberTagGroup czsjMemberTagGroup); + + /** + * 修改会员标签组 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 结果 + */ + public int updateCzsjMemberTagGroup(CzsjMemberTagGroup czsjMemberTagGroup); + + /** + * 批量删除会员标签组 + * + * @param uids 需要删除的会员标签组主键集合 + * @return 结果 + */ + public int deleteCzsjMemberTagGroupByUids(Long[] uids); + + /** + * 删除会员标签组信息 + * + * @param uid 会员标签组主键 + * @return 结果 + */ + public int deleteCzsjMemberTagGroupByUid(Long uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberTagService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberTagService.java new file mode 100644 index 0000000..2dc610b --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberTagService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberTag; + +/** + * 会员标签Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberTagService +{ + /** + * 查询会员标签 + * + * @param uid 会员标签主键 + * @return 会员标签 + */ + public CzsjMemberTag selectCzsjMemberTagByUid(Long uid); + + /** + * 查询会员标签列表 + * + * @param czsjMemberTag 会员标签 + * @return 会员标签集合 + */ + public List selectCzsjMemberTagList(CzsjMemberTag czsjMemberTag); + + /** + * 新增会员标签 + * + * @param czsjMemberTag 会员标签 + * @return 结果 + */ + public int insertCzsjMemberTag(CzsjMemberTag czsjMemberTag); + + /** + * 修改会员标签 + * + * @param czsjMemberTag 会员标签 + * @return 结果 + */ + public int updateCzsjMemberTag(CzsjMemberTag czsjMemberTag); + + /** + * 批量删除会员标签 + * + * @param uids 需要删除的会员标签主键集合 + * @return 结果 + */ + public int deleteCzsjMemberTagByUids(Long[] uids); + + /** + * 删除会员标签信息 + * + * @param uid 会员标签主键 + * @return 结果 + */ + public int deleteCzsjMemberTagByUid(Long uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberWxFansService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberWxFansService.java new file mode 100644 index 0000000..0ae32f6 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberWxFansService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberWxFans; + +/** + * 会员微信粉丝Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberWxFansService +{ + /** + * 查询会员微信粉丝 + * + * @param uid 会员微信粉丝主键 + * @return 会员微信粉丝 + */ + public CzsjMemberWxFans selectCzsjMemberWxFansByUid(Long uid); + + /** + * 查询会员微信粉丝列表 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 会员微信粉丝集合 + */ + public List selectCzsjMemberWxFansList(CzsjMemberWxFans czsjMemberWxFans); + + /** + * 新增会员微信粉丝 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 结果 + */ + public int insertCzsjMemberWxFans(CzsjMemberWxFans czsjMemberWxFans); + + /** + * 修改会员微信粉丝 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 结果 + */ + public int updateCzsjMemberWxFans(CzsjMemberWxFans czsjMemberWxFans); + + /** + * 批量删除会员微信粉丝 + * + * @param uids 需要删除的会员微信粉丝主键集合 + * @return 结果 + */ + public int deleteCzsjMemberWxFansByUids(Long[] uids); + + /** + * 删除会员微信粉丝信息 + * + * @param uid 会员微信粉丝主键 + * @return 结果 + */ + public int deleteCzsjMemberWxFansByUid(Long uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberWxSourceService.java b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberWxSourceService.java new file mode 100644 index 0000000..0405c62 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/ICzsjMemberWxSourceService.java @@ -0,0 +1,61 @@ +package com.czsj.account.service; + +import java.util.List; +import com.czsj.account.domain.CzsjMemberWxSource; + +/** + * 会员微信来源信息Service接口 + * + * @author czsj + * @date 2024-12-01 + */ +public interface ICzsjMemberWxSourceService +{ + /** + * 查询会员微信来源信息 + * + * @param uid 会员微信来源信息主键 + * @return 会员微信来源信息 + */ + public CzsjMemberWxSource selectCzsjMemberWxSourceByUid(Long uid); + + /** + * 查询会员微信来源信息列表 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 会员微信来源信息集合 + */ + public List selectCzsjMemberWxSourceList(CzsjMemberWxSource czsjMemberWxSource); + + /** + * 新增会员微信来源信息 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 结果 + */ + public int insertCzsjMemberWxSource(CzsjMemberWxSource czsjMemberWxSource); + + /** + * 修改会员微信来源信息 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 结果 + */ + public int updateCzsjMemberWxSource(CzsjMemberWxSource czsjMemberWxSource); + + /** + * 批量删除会员微信来源信息 + * + * @param uids 需要删除的会员微信来源信息主键集合 + * @return 结果 + */ + public int deleteCzsjMemberWxSourceByUids(Long[] uids); + + /** + * 删除会员微信来源信息信息 + * + * @param uid 会员微信来源信息主键 + * @return 结果 + */ + public int deleteCzsjMemberWxSourceByUid(Long uid); +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberCardServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberCardServiceImpl.java new file mode 100644 index 0000000..b05b6e8 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberCardServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberCardMapper; +import com.czsj.account.domain.CzsjMemberCard; +import com.czsj.account.service.ICzsjMemberCardService; + +/** + * 会员证件信息Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberCardServiceImpl implements ICzsjMemberCardService +{ + @Autowired + private CzsjMemberCardMapper czsjMemberCardMapper; + + /** + * 查询会员证件信息 + * + * @param uid 会员证件信息主键 + * @return 会员证件信息 + */ + @Override + public CzsjMemberCard selectCzsjMemberCardByUid(Integer uid) + { + return czsjMemberCardMapper.selectCzsjMemberCardByUid(uid); + } + + /** + * 查询会员证件信息列表 + * + * @param czsjMemberCard 会员证件信息 + * @return 会员证件信息 + */ + @Override + public List selectCzsjMemberCardList(CzsjMemberCard czsjMemberCard) + { + return czsjMemberCardMapper.selectCzsjMemberCardList(czsjMemberCard); + } + + /** + * 新增会员证件信息 + * + * @param czsjMemberCard 会员证件信息 + * @return 结果 + */ + @Override + public int insertCzsjMemberCard(CzsjMemberCard czsjMemberCard) + { + czsjMemberCard.setCreateTime(DateUtils.getNowDate()); + return czsjMemberCardMapper.insertCzsjMemberCard(czsjMemberCard); + } + + /** + * 修改会员证件信息 + * + * @param czsjMemberCard 会员证件信息 + * @return 结果 + */ + @Override + public int updateCzsjMemberCard(CzsjMemberCard czsjMemberCard) + { + czsjMemberCard.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberCardMapper.updateCzsjMemberCard(czsjMemberCard); + } + + /** + * 批量删除会员证件信息 + * + * @param uids 需要删除的会员证件信息主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberCardByUids(Integer[] uids) + { + return czsjMemberCardMapper.deleteCzsjMemberCardByUids(uids); + } + + /** + * 删除会员证件信息信息 + * + * @param uid 会员证件信息主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberCardByUid(Integer uid) + { + return czsjMemberCardMapper.deleteCzsjMemberCardByUid(uid); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberLocusServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberLocusServiceImpl.java new file mode 100644 index 0000000..48f9990 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberLocusServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberLocusMapper; +import com.czsj.account.domain.CzsjMemberLocus; +import com.czsj.account.service.ICzsjMemberLocusService; + +/** + * 会员轨迹信息Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberLocusServiceImpl implements ICzsjMemberLocusService +{ + @Autowired + private CzsjMemberLocusMapper czsjMemberLocusMapper; + + /** + * 查询会员轨迹信息 + * + * @param uid 会员轨迹信息主键 + * @return 会员轨迹信息 + */ + @Override + public CzsjMemberLocus selectCzsjMemberLocusByUid(Long uid) + { + return czsjMemberLocusMapper.selectCzsjMemberLocusByUid(uid); + } + + /** + * 查询会员轨迹信息列表 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 会员轨迹信息 + */ + @Override + public List selectCzsjMemberLocusList(CzsjMemberLocus czsjMemberLocus) + { + return czsjMemberLocusMapper.selectCzsjMemberLocusList(czsjMemberLocus); + } + + /** + * 新增会员轨迹信息 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 结果 + */ + @Override + public int insertCzsjMemberLocus(CzsjMemberLocus czsjMemberLocus) + { + czsjMemberLocus.setCreateTime(DateUtils.getNowDate()); + return czsjMemberLocusMapper.insertCzsjMemberLocus(czsjMemberLocus); + } + + /** + * 修改会员轨迹信息 + * + * @param czsjMemberLocus 会员轨迹信息 + * @return 结果 + */ + @Override + public int updateCzsjMemberLocus(CzsjMemberLocus czsjMemberLocus) + { + czsjMemberLocus.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberLocusMapper.updateCzsjMemberLocus(czsjMemberLocus); + } + + /** + * 批量删除会员轨迹信息 + * + * @param uids 需要删除的会员轨迹信息主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberLocusByUids(Long[] uids) + { + return czsjMemberLocusMapper.deleteCzsjMemberLocusByUids(uids); + } + + /** + * 删除会员轨迹信息信息 + * + * @param uid 会员轨迹信息主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberLocusByUid(Long uid) + { + return czsjMemberLocusMapper.deleteCzsjMemberLocusByUid(uid); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberRelationServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberRelationServiceImpl.java new file mode 100644 index 0000000..11dbf6a --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberRelationServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberRelationMapper; +import com.czsj.account.domain.CzsjMemberRelation; +import com.czsj.account.service.ICzsjMemberRelationService; + +/** + * 会员关系Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberRelationServiceImpl implements ICzsjMemberRelationService +{ + @Autowired + private CzsjMemberRelationMapper czsjMemberRelationMapper; + + /** + * 查询会员关系 + * + * @param uid 会员关系主键 + * @return 会员关系 + */ + @Override + public CzsjMemberRelation selectCzsjMemberRelationByUid(Long uid) + { + return czsjMemberRelationMapper.selectCzsjMemberRelationByUid(uid); + } + + /** + * 查询会员关系列表 + * + * @param czsjMemberRelation 会员关系 + * @return 会员关系 + */ + @Override + public List selectCzsjMemberRelationList(CzsjMemberRelation czsjMemberRelation) + { + return czsjMemberRelationMapper.selectCzsjMemberRelationList(czsjMemberRelation); + } + + /** + * 新增会员关系 + * + * @param czsjMemberRelation 会员关系 + * @return 结果 + */ + @Override + public int insertCzsjMemberRelation(CzsjMemberRelation czsjMemberRelation) + { + czsjMemberRelation.setCreateTime(DateUtils.getNowDate()); + return czsjMemberRelationMapper.insertCzsjMemberRelation(czsjMemberRelation); + } + + /** + * 修改会员关系 + * + * @param czsjMemberRelation 会员关系 + * @return 结果 + */ + @Override + public int updateCzsjMemberRelation(CzsjMemberRelation czsjMemberRelation) + { + czsjMemberRelation.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberRelationMapper.updateCzsjMemberRelation(czsjMemberRelation); + } + + /** + * 批量删除会员关系 + * + * @param uids 需要删除的会员关系主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberRelationByUids(Long[] uids) + { + return czsjMemberRelationMapper.deleteCzsjMemberRelationByUids(uids); + } + + /** + * 删除会员关系信息 + * + * @param uid 会员关系主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberRelationByUid(Long uid) + { + return czsjMemberRelationMapper.deleteCzsjMemberRelationByUid(uid); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberServiceImpl.java new file mode 100644 index 0000000..1c76fad --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberMapper; +import com.czsj.account.domain.CzsjMember; +import com.czsj.account.service.ICzsjMemberService; + +/** + * 会员信息Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberServiceImpl implements ICzsjMemberService +{ + @Autowired + private CzsjMemberMapper czsjMemberMapper; + + /** + * 查询会员信息 + * + * @param uid 会员信息主键 + * @return 会员信息 + */ + @Override + public CzsjMember selectCzsjMemberByUid(Long uid) + { + return czsjMemberMapper.selectCzsjMemberByUid(uid); + } + + /** + * 查询会员信息列表 + * + * @param czsjMember 会员信息 + * @return 会员信息 + */ + @Override + public List selectCzsjMemberList(CzsjMember czsjMember) + { + return czsjMemberMapper.selectCzsjMemberList(czsjMember); + } + + /** + * 新增会员信息 + * + * @param czsjMember 会员信息 + * @return 结果 + */ + @Override + public int insertCzsjMember(CzsjMember czsjMember) + { + czsjMember.setCreateTime(DateUtils.getNowDate()); + return czsjMemberMapper.insertCzsjMember(czsjMember); + } + + /** + * 修改会员信息 + * + * @param czsjMember 会员信息 + * @return 结果 + */ + @Override + public int updateCzsjMember(CzsjMember czsjMember) + { + czsjMember.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberMapper.updateCzsjMember(czsjMember); + } + + /** + * 批量删除会员信息 + * + * @param uids 需要删除的会员信息主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberByUids(Long[] uids) + { + return czsjMemberMapper.deleteCzsjMemberByUids(uids); + } + + /** + * 删除会员信息信息 + * + * @param uid 会员信息主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberByUid(Long uid) + { + return czsjMemberMapper.deleteCzsjMemberByUid(uid); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberSignServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberSignServiceImpl.java new file mode 100644 index 0000000..067b4cc --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberSignServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberSignMapper; +import com.czsj.account.domain.CzsjMemberSign; +import com.czsj.account.service.ICzsjMemberSignService; + +/** + * 会员签到记录Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberSignServiceImpl implements ICzsjMemberSignService +{ + @Autowired + private CzsjMemberSignMapper czsjMemberSignMapper; + + /** + * 查询会员签到记录 + * + * @param uid 会员签到记录主键 + * @return 会员签到记录 + */ + @Override + public CzsjMemberSign selectCzsjMemberSignByUid(Long uid) + { + return czsjMemberSignMapper.selectCzsjMemberSignByUid(uid); + } + + /** + * 查询会员签到记录列表 + * + * @param czsjMemberSign 会员签到记录 + * @return 会员签到记录 + */ + @Override + public List selectCzsjMemberSignList(CzsjMemberSign czsjMemberSign) + { + return czsjMemberSignMapper.selectCzsjMemberSignList(czsjMemberSign); + } + + /** + * 新增会员签到记录 + * + * @param czsjMemberSign 会员签到记录 + * @return 结果 + */ + @Override + public int insertCzsjMemberSign(CzsjMemberSign czsjMemberSign) + { + czsjMemberSign.setCreateTime(DateUtils.getNowDate()); + return czsjMemberSignMapper.insertCzsjMemberSign(czsjMemberSign); + } + + /** + * 修改会员签到记录 + * + * @param czsjMemberSign 会员签到记录 + * @return 结果 + */ + @Override + public int updateCzsjMemberSign(CzsjMemberSign czsjMemberSign) + { + czsjMemberSign.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberSignMapper.updateCzsjMemberSign(czsjMemberSign); + } + + /** + * 批量删除会员签到记录 + * + * @param uids 需要删除的会员签到记录主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberSignByUids(Long[] uids) + { + return czsjMemberSignMapper.deleteCzsjMemberSignByUids(uids); + } + + /** + * 删除会员签到记录信息 + * + * @param uid 会员签到记录主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberSignByUid(Long uid) + { + return czsjMemberSignMapper.deleteCzsjMemberSignByUid(uid); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberTagGroupServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberTagGroupServiceImpl.java new file mode 100644 index 0000000..20fba74 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberTagGroupServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberTagGroupMapper; +import com.czsj.account.domain.CzsjMemberTagGroup; +import com.czsj.account.service.ICzsjMemberTagGroupService; + +/** + * 会员标签组Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberTagGroupServiceImpl implements ICzsjMemberTagGroupService +{ + @Autowired + private CzsjMemberTagGroupMapper czsjMemberTagGroupMapper; + + /** + * 查询会员标签组 + * + * @param uid 会员标签组主键 + * @return 会员标签组 + */ + @Override + public CzsjMemberTagGroup selectCzsjMemberTagGroupByUid(Long uid) + { + return czsjMemberTagGroupMapper.selectCzsjMemberTagGroupByUid(uid); + } + + /** + * 查询会员标签组列表 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 会员标签组 + */ + @Override + public List selectCzsjMemberTagGroupList(CzsjMemberTagGroup czsjMemberTagGroup) + { + return czsjMemberTagGroupMapper.selectCzsjMemberTagGroupList(czsjMemberTagGroup); + } + + /** + * 新增会员标签组 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 结果 + */ + @Override + public int insertCzsjMemberTagGroup(CzsjMemberTagGroup czsjMemberTagGroup) + { + czsjMemberTagGroup.setCreateTime(DateUtils.getNowDate()); + return czsjMemberTagGroupMapper.insertCzsjMemberTagGroup(czsjMemberTagGroup); + } + + /** + * 修改会员标签组 + * + * @param czsjMemberTagGroup 会员标签组 + * @return 结果 + */ + @Override + public int updateCzsjMemberTagGroup(CzsjMemberTagGroup czsjMemberTagGroup) + { + czsjMemberTagGroup.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberTagGroupMapper.updateCzsjMemberTagGroup(czsjMemberTagGroup); + } + + /** + * 批量删除会员标签组 + * + * @param uids 需要删除的会员标签组主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberTagGroupByUids(Long[] uids) + { + return czsjMemberTagGroupMapper.deleteCzsjMemberTagGroupByUids(uids); + } + + /** + * 删除会员标签组信息 + * + * @param uid 会员标签组主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberTagGroupByUid(Long uid) + { + return czsjMemberTagGroupMapper.deleteCzsjMemberTagGroupByUid(uid); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberTagServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberTagServiceImpl.java new file mode 100644 index 0000000..b295e6d --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberTagServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberTagMapper; +import com.czsj.account.domain.CzsjMemberTag; +import com.czsj.account.service.ICzsjMemberTagService; + +/** + * 会员标签Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberTagServiceImpl implements ICzsjMemberTagService +{ + @Autowired + private CzsjMemberTagMapper czsjMemberTagMapper; + + /** + * 查询会员标签 + * + * @param uid 会员标签主键 + * @return 会员标签 + */ + @Override + public CzsjMemberTag selectCzsjMemberTagByUid(Long uid) + { + return czsjMemberTagMapper.selectCzsjMemberTagByUid(uid); + } + + /** + * 查询会员标签列表 + * + * @param czsjMemberTag 会员标签 + * @return 会员标签 + */ + @Override + public List selectCzsjMemberTagList(CzsjMemberTag czsjMemberTag) + { + return czsjMemberTagMapper.selectCzsjMemberTagList(czsjMemberTag); + } + + /** + * 新增会员标签 + * + * @param czsjMemberTag 会员标签 + * @return 结果 + */ + @Override + public int insertCzsjMemberTag(CzsjMemberTag czsjMemberTag) + { + czsjMemberTag.setCreateTime(DateUtils.getNowDate()); + return czsjMemberTagMapper.insertCzsjMemberTag(czsjMemberTag); + } + + /** + * 修改会员标签 + * + * @param czsjMemberTag 会员标签 + * @return 结果 + */ + @Override + public int updateCzsjMemberTag(CzsjMemberTag czsjMemberTag) + { + czsjMemberTag.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberTagMapper.updateCzsjMemberTag(czsjMemberTag); + } + + /** + * 批量删除会员标签 + * + * @param uids 需要删除的会员标签主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberTagByUids(Long[] uids) + { + return czsjMemberTagMapper.deleteCzsjMemberTagByUids(uids); + } + + /** + * 删除会员标签信息 + * + * @param uid 会员标签主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberTagByUid(Long uid) + { + return czsjMemberTagMapper.deleteCzsjMemberTagByUid(uid); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberWxFansServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberWxFansServiceImpl.java new file mode 100644 index 0000000..a272a2f --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberWxFansServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberWxFansMapper; +import com.czsj.account.domain.CzsjMemberWxFans; +import com.czsj.account.service.ICzsjMemberWxFansService; + +/** + * 会员微信粉丝Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberWxFansServiceImpl implements ICzsjMemberWxFansService +{ + @Autowired + private CzsjMemberWxFansMapper czsjMemberWxFansMapper; + + /** + * 查询会员微信粉丝 + * + * @param uid 会员微信粉丝主键 + * @return 会员微信粉丝 + */ + @Override + public CzsjMemberWxFans selectCzsjMemberWxFansByUid(Long uid) + { + return czsjMemberWxFansMapper.selectCzsjMemberWxFansByUid(uid); + } + + /** + * 查询会员微信粉丝列表 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 会员微信粉丝 + */ + @Override + public List selectCzsjMemberWxFansList(CzsjMemberWxFans czsjMemberWxFans) + { + return czsjMemberWxFansMapper.selectCzsjMemberWxFansList(czsjMemberWxFans); + } + + /** + * 新增会员微信粉丝 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 结果 + */ + @Override + public int insertCzsjMemberWxFans(CzsjMemberWxFans czsjMemberWxFans) + { + czsjMemberWxFans.setCreateTime(DateUtils.getNowDate()); + return czsjMemberWxFansMapper.insertCzsjMemberWxFans(czsjMemberWxFans); + } + + /** + * 修改会员微信粉丝 + * + * @param czsjMemberWxFans 会员微信粉丝 + * @return 结果 + */ + @Override + public int updateCzsjMemberWxFans(CzsjMemberWxFans czsjMemberWxFans) + { + czsjMemberWxFans.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberWxFansMapper.updateCzsjMemberWxFans(czsjMemberWxFans); + } + + /** + * 批量删除会员微信粉丝 + * + * @param uids 需要删除的会员微信粉丝主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberWxFansByUids(Long[] uids) + { + return czsjMemberWxFansMapper.deleteCzsjMemberWxFansByUids(uids); + } + + /** + * 删除会员微信粉丝信息 + * + * @param uid 会员微信粉丝主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberWxFansByUid(Long uid) + { + return czsjMemberWxFansMapper.deleteCzsjMemberWxFansByUid(uid); + } +} diff --git a/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberWxSourceServiceImpl.java b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberWxSourceServiceImpl.java new file mode 100644 index 0000000..297b155 --- /dev/null +++ b/czsj-system/src/main/java/com/czsj/account/service/impl/CzsjMemberWxSourceServiceImpl.java @@ -0,0 +1,96 @@ +package com.czsj.account.service.impl; + +import java.util.List; +import com.czsj.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.czsj.account.mapper.CzsjMemberWxSourceMapper; +import com.czsj.account.domain.CzsjMemberWxSource; +import com.czsj.account.service.ICzsjMemberWxSourceService; + +/** + * 会员微信来源信息Service业务层处理 + * + * @author czsj + * @date 2024-12-01 + */ +@Service +public class CzsjMemberWxSourceServiceImpl implements ICzsjMemberWxSourceService +{ + @Autowired + private CzsjMemberWxSourceMapper czsjMemberWxSourceMapper; + + /** + * 查询会员微信来源信息 + * + * @param uid 会员微信来源信息主键 + * @return 会员微信来源信息 + */ + @Override + public CzsjMemberWxSource selectCzsjMemberWxSourceByUid(Long uid) + { + return czsjMemberWxSourceMapper.selectCzsjMemberWxSourceByUid(uid); + } + + /** + * 查询会员微信来源信息列表 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 会员微信来源信息 + */ + @Override + public List selectCzsjMemberWxSourceList(CzsjMemberWxSource czsjMemberWxSource) + { + return czsjMemberWxSourceMapper.selectCzsjMemberWxSourceList(czsjMemberWxSource); + } + + /** + * 新增会员微信来源信息 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 结果 + */ + @Override + public int insertCzsjMemberWxSource(CzsjMemberWxSource czsjMemberWxSource) + { + czsjMemberWxSource.setCreateTime(DateUtils.getNowDate()); + return czsjMemberWxSourceMapper.insertCzsjMemberWxSource(czsjMemberWxSource); + } + + /** + * 修改会员微信来源信息 + * + * @param czsjMemberWxSource 会员微信来源信息 + * @return 结果 + */ + @Override + public int updateCzsjMemberWxSource(CzsjMemberWxSource czsjMemberWxSource) + { + czsjMemberWxSource.setUpdateTime(DateUtils.getNowDate()); + return czsjMemberWxSourceMapper.updateCzsjMemberWxSource(czsjMemberWxSource); + } + + /** + * 批量删除会员微信来源信息 + * + * @param uids 需要删除的会员微信来源信息主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberWxSourceByUids(Long[] uids) + { + return czsjMemberWxSourceMapper.deleteCzsjMemberWxSourceByUids(uids); + } + + /** + * 删除会员微信来源信息信息 + * + * @param uid 会员微信来源信息主键 + * @return 结果 + */ + @Override + public int deleteCzsjMemberWxSourceByUid(Long uid) + { + return czsjMemberWxSourceMapper.deleteCzsjMemberWxSourceByUid(uid); + } +} diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberCardMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberCardMapper.xml new file mode 100644 index 0000000..6be896f --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberCardMapper.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + select uid, member_uid, card_type, card_id, create_time, update_time, del_flag, create_user_id, update_user_id from czsj_member_card + + + + + + + + insert into czsj_member_card + + uid, + member_uid, + card_type, + card_id, + create_time, + update_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{memberUid}, + #{cardType}, + #{cardId}, + #{createTime}, + #{updateTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member_card + + member_uid = #{memberUid}, + card_type = #{cardType}, + card_id = #{cardId}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member_card where uid = #{uid} + + + + delete from czsj_member_card where uid in + + #{uid} + + + \ No newline at end of file diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberLocusMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberLocusMapper.xml new file mode 100644 index 0000000..7eeacdc --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberLocusMapper.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + select uid, member_uid, trajectory_type, content, create_date, create_time, update_time, del_flag, create_user_id, update_user_id from czsj_member_locus + + + + + + + + insert into czsj_member_locus + + uid, + member_uid, + trajectory_type, + content, + create_date, + create_time, + update_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{memberUid}, + #{trajectoryType}, + #{content}, + #{createDate}, + #{createTime}, + #{updateTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member_locus + + member_uid = #{memberUid}, + trajectory_type = #{trajectoryType}, + content = #{content}, + create_date = #{createDate}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member_locus where uid = #{uid} + + + + delete from czsj_member_locus where uid in + + #{uid} + + + \ No newline at end of file diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberMapper.xml new file mode 100644 index 0000000..10c1723 --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberMapper.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select uid, name, birthday, sex, email, address, phone, member_id, member_level, city, area, source, status, create_time, update_time, logout_time, freeze_time, card_time, del_flag, create_user_id, update_user_id from czsj_member + + + + + + + + insert into czsj_member + + uid, + name, + birthday, + sex, + email, + address, + phone, + member_id, + member_level, + city, + area, + source, + status, + create_time, + update_time, + logout_time, + freeze_time, + card_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{name}, + #{birthday}, + #{sex}, + #{email}, + #{address}, + #{phone}, + #{memberId}, + #{memberLevel}, + #{city}, + #{area}, + #{source}, + #{status}, + #{createTime}, + #{updateTime}, + #{logoutTime}, + #{freezeTime}, + #{cardTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member + + name = #{name}, + birthday = #{birthday}, + sex = #{sex}, + email = #{email}, + address = #{address}, + phone = #{phone}, + member_id = #{memberId}, + member_level = #{memberLevel}, + city = #{city}, + area = #{area}, + source = #{source}, + status = #{status}, + create_time = #{createTime}, + update_time = #{updateTime}, + logout_time = #{logoutTime}, + freeze_time = #{freezeTime}, + card_time = #{cardTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member where uid = #{uid} + + + + delete from czsj_member where uid in + + #{uid} + + + \ No newline at end of file diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberRelationMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberRelationMapper.xml new file mode 100644 index 0000000..6bf5ac1 --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberRelationMapper.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + select uid, member_uid, relation, member_relation_uid, mark, create_time, update_time, del_flag, create_user_id, update_user_id from czsj_member_relation + + + + + + + + insert into czsj_member_relation + + uid, + member_uid, + relation, + member_relation_uid, + mark, + create_time, + update_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{memberUid}, + #{relation}, + #{memberRelationUid}, + #{mark}, + #{createTime}, + #{updateTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member_relation + + member_uid = #{memberUid}, + relation = #{relation}, + member_relation_uid = #{memberRelationUid}, + mark = #{mark}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member_relation where uid = #{uid} + + + + delete from czsj_member_relation where uid in + + #{uid} + + + \ No newline at end of file diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberSignMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberSignMapper.xml new file mode 100644 index 0000000..40a42dd --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberSignMapper.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + select uid, member_uid, create_day, create_time, update_time, del_flag, create_user_id, update_user_id from czsj_member_sign + + + + + + + + insert into czsj_member_sign + + uid, + member_uid, + create_day, + create_time, + update_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{memberUid}, + #{createDay}, + #{createTime}, + #{updateTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member_sign + + member_uid = #{memberUid}, + create_day = #{createDay}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member_sign where uid = #{uid} + + + + delete from czsj_member_sign where uid in + + #{uid} + + + \ No newline at end of file diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberTagGroupMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberTagGroupMapper.xml new file mode 100644 index 0000000..480d908 --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberTagGroupMapper.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + select uid, name, mark, create_time, update_time, del_flag, create_user_id, update_user_id from czsj_member_tag_group + + + + + + + + insert into czsj_member_tag_group + + uid, + name, + mark, + create_time, + update_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{name}, + #{mark}, + #{createTime}, + #{updateTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member_tag_group + + name = #{name}, + mark = #{mark}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member_tag_group where uid = #{uid} + + + + delete from czsj_member_tag_group where uid in + + #{uid} + + + \ No newline at end of file diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberTagMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberTagMapper.xml new file mode 100644 index 0000000..1eaa3e4 --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberTagMapper.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + select uid, name, mark, tag_group_uid, create_time, update_time, del_flag, create_user_id, update_user_id from czsj_member_tag + + + + + + + + insert into czsj_member_tag + + uid, + name, + mark, + tag_group_uid, + create_time, + update_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{name}, + #{mark}, + #{tagGroupUid}, + #{createTime}, + #{updateTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member_tag + + name = #{name}, + mark = #{mark}, + tag_group_uid = #{tagGroupUid}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member_tag where uid = #{uid} + + + + delete from czsj_member_tag where uid in + + #{uid} + + + \ No newline at end of file diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberWxFansMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberWxFansMapper.xml new file mode 100644 index 0000000..4c814f3 --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberWxFansMapper.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select uid, member_uid, app_id, app_name, bind_time, name, image_url, union_id, open_id, subscribe_status, subscribe_time, unsubscribe_time, create_time, update_time, del_flag, create_user_id, update_user_id from czsj_member_wx_fans + + + + + + + + insert into czsj_member_wx_fans + + uid, + member_uid, + app_id, + app_name, + bind_time, + name, + image_url, + union_id, + open_id, + subscribe_status, + subscribe_time, + unsubscribe_time, + create_time, + update_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{memberUid}, + #{appId}, + #{appName}, + #{bindTime}, + #{name}, + #{imageUrl}, + #{unionId}, + #{openId}, + #{subscribeStatus}, + #{subscribeTime}, + #{unsubscribeTime}, + #{createTime}, + #{updateTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member_wx_fans + + member_uid = #{memberUid}, + app_id = #{appId}, + app_name = #{appName}, + bind_time = #{bindTime}, + name = #{name}, + image_url = #{imageUrl}, + union_id = #{unionId}, + open_id = #{openId}, + subscribe_status = #{subscribeStatus}, + subscribe_time = #{subscribeTime}, + unsubscribe_time = #{unsubscribeTime}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member_wx_fans where uid = #{uid} + + + + delete from czsj_member_wx_fans where uid in + + #{uid} + + + \ No newline at end of file diff --git a/czsj-system/src/main/resources/mapper/account/CzsjMemberWxSourceMapper.xml b/czsj-system/src/main/resources/mapper/account/CzsjMemberWxSourceMapper.xml new file mode 100644 index 0000000..110b97a --- /dev/null +++ b/czsj-system/src/main/resources/mapper/account/CzsjMemberWxSourceMapper.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + select uid, union_id, open_id, name, image_url, birthday, sex, email, address, phone, city, area, create_time, update_time, del_flag, create_user_id, update_user_id from czsj_member_wx_source + + + + + + + + insert into czsj_member_wx_source + + uid, + union_id, + open_id, + name, + image_url, + birthday, + sex, + email, + address, + phone, + city, + area, + create_time, + update_time, + del_flag, + create_user_id, + update_user_id, + + + #{uid}, + #{unionId}, + #{openId}, + #{name}, + #{imageUrl}, + #{birthday}, + #{sex}, + #{email}, + #{address}, + #{phone}, + #{city}, + #{area}, + #{createTime}, + #{updateTime}, + #{delFlag}, + #{createUserId}, + #{updateUserId}, + + + + + update czsj_member_wx_source + + union_id = #{unionId}, + open_id = #{openId}, + name = #{name}, + image_url = #{imageUrl}, + birthday = #{birthday}, + sex = #{sex}, + email = #{email}, + address = #{address}, + phone = #{phone}, + city = #{city}, + area = #{area}, + create_time = #{createTime}, + update_time = #{updateTime}, + del_flag = #{delFlag}, + create_user_id = #{createUserId}, + update_user_id = #{updateUserId}, + + where uid = #{uid} + + + + delete from czsj_member_wx_source where uid = #{uid} + + + + delete from czsj_member_wx_source where uid in + + #{uid} + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 37d8967..9efdcb1 100644 --- a/pom.xml +++ b/pom.xml @@ -27,6 +27,8 @@ 6.6.5 2.13.0 4.1.2 + 1.18.16 + 5.4.1 2.3 0.9.1 @@ -40,6 +42,18 @@ + + org.projectlombok + lombok + ${lombok.version} + + + + cn.hutool + hutool-all + ${hutool.version} + + org.springframework diff --git a/uploadPath/avatar/2024/11/27/微信图片_20240720121710_20241127161057A001.jpg b/uploadPath/avatar/2024/11/27/微信图片_20240720121710_20241127161057A001.jpg new file mode 100644 index 0000000000000000000000000000000000000000..114d756673f68b90f4361b87143ebce839ced139 GIT binary patch literal 74566 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%0DtVJ4Ln0zTx>cg#c8K!I?z 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 literal 0 HcmV?d00001