123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374 |
- package org.springblade.modules.api.controller;
- import cn.hutool.core.collection.CollectionUtil;
- import cn.hutool.core.util.DesensitizedUtil;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
- import io.swagger.annotations.Api;
- import io.swagger.annotations.ApiOperation;
- import io.swagger.annotations.ApiParam;
- import lombok.AllArgsConstructor;
- import org.springblade.common.base.BaseEntity;
- import org.springblade.common.constant.CommonConstant;
- import org.springblade.common.enums.AuditStatusEnum;
- import org.springblade.common.enums.FacilityStatusEnum;
- import org.springblade.core.mp.support.Condition;
- import org.springblade.core.mp.support.Query;
- import org.springblade.core.secure.utils.AuthUtil;
- import org.springblade.core.tool.api.R;
- import org.springblade.core.tool.utils.DigestUtil;
- import org.springblade.core.tool.utils.WebUtil;
- import org.springblade.modules.api.request.AddChildAccountRequest;
- import org.springblade.modules.api.request.AlertChildAccountRequest;
- import org.springblade.modules.api.request.TimeRangeReq;
- import org.springblade.modules.api.response.MerchantPieRes;
- import org.springblade.modules.api.response.TurnoverRes;
- import org.springblade.modules.api.utils.TimeRangeReqUtils;
- import org.springblade.modules.api.vo.ChildDealtVO;
- import org.springblade.modules.api.vo.MerchantIncomeVO;
- import org.springblade.modules.api.vo.PageMemberVO;
- import org.springblade.modules.auth.enums.UserEnum;
- import org.springblade.modules.auth.utils.TokenUtil;
- import org.springblade.modules.business.entity.Facility;
- import org.springblade.modules.business.entity.Shop;
- import org.springblade.modules.business.service.IFacilityService;
- import org.springblade.modules.business.service.IShopService;
- import org.springblade.modules.finance.entity.OrderGoods;
- import org.springblade.modules.finance.service.IOrderGoodsService;
- import org.springblade.modules.system.entity.User;
- import org.springblade.modules.system.entity.UserMerchant;
- import org.springblade.modules.system.service.IUserMerchantService;
- import org.springblade.modules.system.service.IUserService;
- import org.springblade.modules.system.vo.UserMerchantVO;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.Assert;
- import org.springframework.web.bind.annotation.*;
- import javax.validation.Valid;
- import java.util.*;
- import java.util.stream.Collectors;
- /**
- * Author pangqijun
- * Date 2024/7/16
- * Description
- */
- @RestController
- @AllArgsConstructor
- @RequestMapping(CommonConstant.API_URL)
- @Api(value = "商家端", tags = "商家端用户接口")
- public class ApiMerchantUserController extends BaseController {
- private final IUserMerchantService iUserMerchantService;
- private final IUserService iUserService;
- private final IOrderGoodsService orderGoodsService;
- private final IFacilityService facilityService;
- private final IShopService shopService;
- @GetMapping("/merchant/get")
- @ApiOperationSupport(order = 1)
- @ApiOperation(value = "获取商家用户信息")
- public R<UserMerchantVO> getMerchantUserInfo() {
- User user = iUserService.getById(AuthUtil.getUserId());
- Assert.notNull(user, "未查询到用户信息");
- UserMerchantVO vo = iUserMerchantService.getByUserId(user.getId());
- vo.setAvatar(user.getAvatar());
- vo.setName(user.getName());
- vo.setRealName(vo.getRealName());
- vo.setPhone(user.getPhone());
- return R.data(vo);
- }
- @PostMapping("/merchant/update")
- @ApiOperationSupport(order = 2)
- @ApiOperation(value = "更新用户信息")
- public R<Void> updateUserInfo(@RequestBody UserMerchantVO userMerchantVO) {
- User user = iUserService.getById(AuthUtil.getUserId());
- Assert.notNull(user, "未查询到用户信息");
- // UserMerchantVO vo = iUserMerchantService.getByUserId(AuthUtil.getUserId());
- // Assert.notNull(user, "未查询到商户信息");
- user.setAvatar(userMerchantVO.getAvatar());
- // if (!isMerchant()){//子账号可以更新身份证号码
- // UserMerchantVO userMerchantVO1 = iUserMerchantService.getByUserId(user.getId());
- // userMerchantVO1.setIdCard(userMerchantVO.getIdCard());
- // iUserMerchantService.updateById(userMerchantVO1);
- // }
- return R.status(iUserService.updateById(user));
- }
- @PostMapping("/childDealt")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "子账号详情", notes = "传入id")
- public R<ChildDealtVO> childDealt(@ApiParam(value = "主键集合", required = true) @RequestParam Long childAccountId) {
- UserMerchant userMerchant = iUserMerchantService.getById(childAccountId);
- Assert.notNull(userMerchant, "子账号数据异常");
- //查询用户信息
- User user = iUserService.getById(userMerchant.getUserId());
- Assert.notNull(user, "未查询到用户信息");
- ChildDealtVO childDealtVO = new ChildDealtVO();
- childDealtVO.setId(userMerchant.getId());
- childDealtVO.setPhone(user.getPhone());
- childDealtVO.setNickname(user.getName());
- childDealtVO.setRealName(user.getRealName());
- childDealtVO.setCover(user.getAvatar());
- //查询授权门店
- LambdaQueryWrapper<Shop> wrapper = Wrappers.lambdaQuery(Shop.class);
- wrapper.eq(Shop::getMerchantId, AuthUtil.getUserId());
- if (!isMerchant()) {
- wrapper.in(BaseEntity::getId, iUserMerchantService.getAuthShopId(AuthUtil.getUserId()));
- } else {
- wrapper.eq(Shop::getMerchantId, AuthUtil.getUserId());
- }
- List<Shop> list = shopService.list(wrapper);
- childDealtVO.setAuthShops(list);
- return R.data(childDealtVO);
- }
- @PostMapping("/addChildAccount")
- @ApiOperationSupport(order = 3)
- @ApiOperation(value = "添加子账号", notes = "传入userMerchant")
- public R<Void> addChildAccount(@Valid @RequestBody AddChildAccountRequest request) {
- if (!request.getPassword().equals(request.getRePassword())) {
- return R.fail("密码不一致");
- }
- List<User> query1 = iUserService.lambdaQuery().eq(User::getAccount, request.getPhone()).list();
- if (CollectionUtil.isNotEmpty(query1)) {
- return R.fail("手机号已注册,请更换其他手机号!");
- }
- if (!isMerchant()) {
- return R.fail("没有添加子账号权限!");
- }
- String tenantId = WebUtil.getRequest().getHeader(TokenUtil.TENANT_HEADER_KEY);
- User user = new User();
- user.setAccount(request.getPhone());
- user.setPhone(request.getPhone());
- user.setAvatar(request.getCover());
- user.setTenantId(tenantId);
- user.setUserType(UserEnum.MERCHANT.getCategory());
- user.setPassword(DigestUtil.encrypt(request.getPassword()));
- user.setName(request.getNickname() == null ? DesensitizedUtil.mobilePhone(request.getPhone()) : request.getNickname());
- user.setRealName(request.getRealName());
- iUserService.save(user);
- UserMerchant userMerchant = new UserMerchant();
- userMerchant.setUserId(user.getId());
- userMerchant.setParentId(AuthUtil.getUserId());
- userMerchant.setAuditStatus(AuditStatusEnum.PASS.getValue());
- userMerchant.setAuthShop(request.getAuthShopIds());
- //复制主账号信息
- UserMerchant myUserMerchant = iUserMerchantService.getByUserId(AuthUtil.getUserId());
- userMerchant.setAuthShop(request.getAuthShopIds());
- userMerchant.setMerchantName(myUserMerchant.getMerchantName());
- userMerchant.setBusinessLicence(myUserMerchant.getBusinessLicence());
- userMerchant.setAddress(myUserMerchant.getAddress());
- iUserMerchantService.save(userMerchant);
- return R.success("添加成功");
- }
- @Transactional
- @PostMapping("/updateChildAccount")
- @ApiOperationSupport(order = 4)
- @ApiOperation(value = "修改子账号", notes = "alertChildAccountRequest")
- public R<Void> deleteChildAccount(@Valid @RequestBody AlertChildAccountRequest request) {
- UserMerchant userMerchant = iUserMerchantService.getById(request.getId());
- if (Objects.isNull(userMerchant)) {
- return R.fail("子账号不存在");
- }
- if (!isMerchant()) {
- return R.fail("没有编辑子账号权限!");
- }
- //获取子账号用户信息
- User user = iUserService.getById(userMerchant.getUserId());
- user.setAvatar(request.getCover());
- user.setRealName(request.getRealName());
- user.setName(request.getNickname() == null ? DesensitizedUtil.mobilePhone(user.getAccount()) : request.getNickname());
- iUserService.updateById(user);
- userMerchant.setParentId(AuthUtil.getUserId());
- userMerchant.setAuditStatus(AuditStatusEnum.PASS.getValue());
- userMerchant.setAuthShop(request.getAuthShopIds());
- //复制主账号信息
- UserMerchant myUserMerchant = iUserMerchantService.getByUserId(AuthUtil.getUserId());
- userMerchant.setAuthShop(request.getAuthShopIds());
- userMerchant.setMerchantName(myUserMerchant.getMerchantName());
- userMerchant.setBusinessLicence(myUserMerchant.getBusinessLicence());
- userMerchant.setAddress(myUserMerchant.getAddress());
- iUserMerchantService.updateById(userMerchant);
- return R.success("修改成功");
- }
- @Transactional
- @PostMapping("/deleteChildAccount")
- @ApiOperationSupport(order = 5)
- @ApiOperation(value = "删除子账号", notes = "传入ids")
- public R<Void> deleteChildAccount(@ApiParam(value = "主键集合", required = true) @RequestParam Long childAccountId) {
- UserMerchant child = iUserMerchantService.getById(childAccountId);
- Assert.notNull(child, "未查询到子账号信息");
- iUserMerchantService.removeById(childAccountId);
- return R.status(iUserService.removeById(child.getUserId()));
- }
- /**
- * 自定义分页 商家用户表
- */
- @GetMapping("/childAccount/list")
- @ApiOperationSupport(order = 6)
- @ApiOperation(value = "子账号列表", notes = "传入userMerchant")
- public R<IPage<UserMerchantVO>> page(UserMerchantVO userMerchant, Query query) {
- userMerchant.setParentId(AuthUtil.getUserId());
- IPage<UserMerchantVO> pages = iUserMerchantService.selectUserMerchantPage(Condition.getPage(query), userMerchant);
- return R.data(pages);
- }
- /**
- * 可提现金额
- */
- @GetMapping("/getCash")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "可提现金额", notes = "可提现金额")
- public R cash() {
- return R.data(iUserMerchantService.getCash());
- }
- /**
- * 我的钱包收益记录
- */
- @GetMapping("/pageIncome")
- @ApiOperationSupport(order = 7)
- @ApiOperation(value = "我的钱包收益记录-分页", notes = "我的钱包收益记录-分页")
- public R<IPage<MerchantIncomeVO>> pageIncome(Query query) {
- IPage<MerchantIncomeVO> pages = iUserMerchantService.pageIncome(Condition.getPage(query), AuthUtil.getUserId());
- return R.data(pages);
- }
- /**
- * 商家端-首页
- */
- @PostMapping("/pie")
- @ApiOperationSupport(order = 8)
- @ApiOperation(value = "商家端-首页-饼图", notes = "商家端-首页-饼图")
- public R<List<MerchantPieRes>> pie(@Valid @RequestBody TimeRangeReq timeRangeReq) {
- TimeRangeReqUtils.setTimeRangeReq(timeRangeReq);
- /*
- * 数据格式
- [
- { value: 0, name: '展现', itemStyle: { color: '#1890ff' } },
- { value: 0, name: '点击', itemStyle: { color: '#91cb74' } },
- { value: 0, name: '订单', itemStyle: { color: '#fac858' } },
- { value: 0, name: '付款', itemStyle: { color: '#ee6666' } },
- ]
- * */
- List<MerchantPieRes> result = new ArrayList<>();
- MerchantPieRes reveal = new MerchantPieRes();//展现
- reveal.setValue("0");
- reveal.setName("展现");
- Map<String, String> revealColorMap = new HashMap<>();
- revealColorMap.put("color", "#1890ff");
- reveal.setItemStyle(revealColorMap);
- result.add(reveal);
- MerchantPieRes order = new MerchantPieRes();//订单
- order.setValue("0");
- order.setName("点击");
- Map<String, String> orderColorMap = new HashMap<>();
- orderColorMap.put("color", "#91cb74");
- order.setItemStyle(orderColorMap);
- result.add(order);
- MerchantPieRes click = new MerchantPieRes();//订单
- List<OrderGoods> merchantOrder = orderGoodsService.getMerchantOrder(AuthUtil.getUserId(), timeRangeReq.getStartTime(), timeRangeReq.getEndTime());
- click.setValue(merchantOrder.size() + "");
- click.setName("售出数量");
- Map<String, String> clickColorMap = new HashMap<>();
- clickColorMap.put("color", "#fac858");
- click.setItemStyle(clickColorMap);
- result.add(click);
- MerchantPieRes pay = new MerchantPieRes();//付款
- List<OrderGoods> collect = merchantOrder.stream().filter(orderGoods -> orderGoods.getIsAfterSales() == 0).collect(Collectors.toList());
- pay.setValue(collect.size() + "");
- pay.setName("付款");
- Map<String, String> payColorMap = new HashMap<>();
- payColorMap.put("color", "#ee6666");
- pay.setItemStyle(payColorMap);
- result.add(pay);
- return R.data(result);
- }
- /**
- * 商家端-首页-设备状态
- */
- @GetMapping("/survey")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "商家端-首页-设备状态", notes = "商家端-首页-设备状态")
- public R<Map<String, String>> survey() {
- Long userId = AuthUtil.getUserId();
- //key为名称,value为数量
- Map<String, String> result = new HashMap<>();
- result.put("门店数量", shopService.getShopNum(userId));
- List<Facility> facilityNum = facilityService.getFacilityNum(userId);
- if (CollectionUtil.isNotEmpty(facilityNum)) {
- result.put("设备数量", facilityNum.size() + "");
- //按状态分组
- Map<Integer, List<Facility>> collect = facilityNum.stream().collect(Collectors.groupingBy(Facility::getFacilityStatus));
- result.put("故障设备", CollectionUtil.isNotEmpty(collect.get(FacilityStatusEnum.FAULT.getValue())) ? collect.get(FacilityStatusEnum.FAULT.getValue()).size() + "" : "0");
- result.put("在线设备", CollectionUtil.isNotEmpty(collect.get(FacilityStatusEnum.ON_LINE.getValue())) ? collect.get(FacilityStatusEnum.ON_LINE.getValue()).size() + "" : "0");
- } else {
- result.put("设备数量", "0");
- result.put("故障设备", "0");
- result.put("在线设备", "0");
- }
- if (isMerchant()) {
- result.put("子账号", iUserMerchantService.getChildNum(userId));
- }
- result.put("订单量", orderGoodsService.getMerchantOrderNum(userId));
- return R.data(result);
- }
- /**
- * 商家端-首页-营业额和结算额
- */
- @PostMapping("/turnover")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "商家端-首页-营业额和结算额", notes = "商家端-首页-营业额和结算额")
- public R<TurnoverRes> turnover(@Valid @RequestBody TimeRangeReq timeRangeReq) {
- TimeRangeReqUtils.setTimeRangeReq(timeRangeReq);
- //key为名称,value为数量
- TurnoverRes result = new TurnoverRes();
- result.setTurnover("6000.00");
- result.setClearing("5873.16");
- return R.data(result);
- }
- /**
- * 商家端-会员列表
- */
- @GetMapping("/pageMember")
- @ApiOperationSupport(order = 9)
- @ApiOperation(value = "商家端-会员列表", notes = "商家端-会员列表")
- public R<IPage<PageMemberVO>> pageMember(Query query) {
- IPage<PageMemberVO> pages = iUserMerchantService.pageMember(Condition.getPage(query), AuthUtil.getUserId());
- return R.data(pages);
- }
- }
|