完善站长一键登录+修改中台出现的bug

This commit is contained in:
wangh 2023-12-27 09:11:43 +08:00
parent 22d78d8b5f
commit 0f7c14444d
30 changed files with 291 additions and 94 deletions

View File

@ -8,6 +8,17 @@ export function listMerchant() {
})
}
// 查询商户列表
export function listMerchant2(query) {
return request({
url: '/api/merchantConfig/list2',
method: 'get',
params: query,
})
}
// 修改商户使用状态
export function editMerchant(data) {
return request({

View File

@ -79,3 +79,25 @@ export function singleSignOnApi(data) {
data: data
})
}
// 查询会员人数
export function getUserNumApi(query) {
return request({
url: '/business/userManager/user/userNum',
method: 'get',
params: query
})
}
// 查询支付订单
export function getOrderNumApi(query) {
return request({
url: '/business/allOrderInfo/getOrderNum',
method: 'get',
params: query
})
}

View File

@ -11,10 +11,10 @@
<el-tab-pane label="支付配置" name="second">
<!-- <peizhi></peizhi>
-->
<payment></payment>
<payment :id="id"></payment>
</el-tab-pane>
<el-tab-pane label="员工管理" name="staff">
<staff></staff>
<staff :id="id"></staff>
</el-tab-pane>
</el-tabs>

View File

@ -62,44 +62,45 @@
</div>
<div class="box-wrap">
<div class="zong-box" v-for="(items,index) in item.storeList" :key="index" >
<div class="pur-box" @click="godetails(items.id)">
<el-tag type="success">{{items.status=='qy'?'启用':'禁用'}}</el-tag>
<div class="disper-box">
<div class="box-img">
<img :src="imagePath + items.logo" style="width: 96px;height: 96px">
</div>
<div >
<div class="title">{{items.name || ''}}</div>
<div class="box-hui">
<div>注册时间</div>
<div>{{ items.createTime.substring(0,10) || ''}}</div>
<div class="pur-box" @click="godetails(items.id)">
<el-tag type="success">{{items.status=='qy'?'启用':'禁用'}}</el-tag>
<div class="disper-box">
<div class="box-img">
<img :src="imagePath + items.logo" style="width: 96px;height: 96px">
</div>
<div class="box-hui">
<div>联系人</div>
<div>{{items.contact || '暂无'}}</div>
</div>
<div class="box-hui">
<div>联系电话</div>
<div>{{items.phone || '暂无'}}</div>
<div >
<div class="title">{{items.name || ''}}</div>
<div class="box-hui">
<div>注册时间</div>
<div>{{ items.createTime.substring(0,10) || ''}}</div>
</div>
<div class="box-hui">
<div>联系人</div>
<div>{{items.contact || '暂无'}}</div>
</div>
<div class="box-hui">
<div>联系电话</div>
<div>{{items.phone || '暂无'}}</div>
</div>
</div>
</div>
</div>
</div>
<div class="hui-bottom">
</div>
<div class="hui-bottom">
<div>
<div class="shang-biao">{{item.storeList.length || 0}}</div>
<div class="xia-biao">创建门店数</div>
</div>
<div>
<div class="shang-biao">{{item.storeList.length || 0}}</div>
<div class="xia-biao">创建门店数</div>
<!-- <div class="shang-biao">{{ items.userNum}}</div> -->
<div class="shang-biao">{{ items.userNum}}</div>
<div class="xia-biao">会员数</div>
</div>
<div>
<div class="shang-biao">{{ items.orderNum}}</div>
<div class="xia-biao">支付订单</div>
</div>
<div>
<div class="shang-biao">12</div>
<div class="xia-biao">会员数</div>
</div>
<div>
<div class="shang-biao">0</div>
<div class="xia-biao">支付订单</div>
</div>
</div>
</div>
</div>
@ -108,7 +109,8 @@
</template>
<script>
import { Storelist, } from "@/api/service/service";
import { Storelist,getUserNumApi,
getOrderNumApi } from "@/api/service/service";
export default {
name: 'service',
dicts: ['zhzt'],
@ -137,16 +139,17 @@
},
}
},
mounted() {
this.getlist()
async mounted() {
await this.getlist()
},
methods:{
getlist(){
Storelist(this.queryParams).then(res=>{
async getlist(){
await Storelist(this.queryParams).then(res=>{
console.log(res)
this.arrlist = res.data.records
})
},
res() {
this.queryParams= {
storeName: '',

View File

@ -201,7 +201,6 @@
:action="uploadAction"
list-type="picture-card"
:class="{hide:hideUpload}"
:file-list="uploadImages"
:headers="uploadHeader"
:auto-upload="true"
@ -333,7 +332,7 @@
desc: ''
},
formLabelWidth: '120px',
rules: {
name: [
@ -354,10 +353,10 @@
},
computed: {
fullImagePath() {
return this.imagePath + this.from.logo;
}
},
fullImagePath() {
return this.imagePath + this.from.logo;
}
},
mounted() {
},
created() {
@ -395,21 +394,37 @@
getindex(){
if(this.id){
Storedetails(this.id).then(res=>{
// console.log("hello1",res.data)
if (res.code == 200) {
this.from = res.data
this.seeFrom = res.data
this.uploadImages = []
if (res.data.doorstepPhoto) {
this.from.doorstepPhoto = JSON.parse(res.data.doorstepPhoto);
this.from.doorstepPhoto.forEach(res=> {
let newImage = {
url: this.baseUrl+res,
fileName: res
// this.from = {}
// this.seeFrom = {}
// this.from = res.data
if(!res.data.doorstepPhoto){
res.data.doorstepPhoto=[]
}
console.log("this.from",this.from)
console.log("this.from",res.data.doorstepPhoto)
this.from = res.data
this.seeFrom = res.data
this.uploadImages = []
if (res.data.doorstepPhoto) {
if (res.data.doorstepPhoto.length>0) {
this.from.doorstepPhoto = JSON.parse(res.data.doorstepPhoto);
this.from.doorstepPhoto.forEach(res=> {
let newImage = {
url: this.baseUrl+res,
fileName: res
}
this.uploadImages.push(newImage);
})
}
this.uploadImages.push(newImage);
})
}
this.$forceUpdate();
}
this.$forceUpdate();
}
@ -421,14 +436,8 @@
enterThePetrolStation() {
let number = new BigNumber(this.id)
number = number.plus(1.4)
number = number.times(2.1);
// let id = (this.id + 1.4) * 2.1
singleSignOnApi(number.toString()).then(res=>{
window.open('http://localhost:82/index?entrance='+number.toString())
singleSignOnApi(this.id).then(res=>{
window.open('http://localhost:82/index?entrance='+this.id)
// '_blank');
})

View File

@ -149,7 +149,7 @@
</template>
<script>
import {editMerchant, listMerchant} from "@/api/payConfig/merchantconfig";
import {editMerchant, listMerchant2} from "@/api/payConfig/merchantconfig";
import {
addOilConfig,
delOilConfig,
@ -162,6 +162,8 @@ import {addUser, getUserMobile, updateUser} from "@/api/staff/user/user";
export default {
name: 'peizhi',
props: ["id"],
data(){
return{
//
@ -342,7 +344,7 @@ export default {
},
//
getList(){
listMerchant().then( response => {
listMerchant2({storeId : this.id}).then( response => {
this.merchantList = response.data;
this.merchantList.forEach(item => {
if (item.isOpenRule == "1"){

View File

@ -537,6 +537,8 @@
name: "StaffList",
dicts: ['ywqx','write_off','display','zhzt','transaction','time_frame','handover','handover_quit',
'jbjl','official','notice','special_prem','role'],
props: ["id"],
data() {
return {
drawer: false,
@ -678,6 +680,7 @@
//
getList() {
this.loading = true;
this.queryParams.storeId = this.id
listStaff(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
this.list = response.data.records;
this.total = response.data.total;

View File

@ -29,6 +29,12 @@ public class MerchantConfigController extends BaseController {
return getSuccessResult(list);
}
@GetMapping("/list2")
public ResponseObject list(Integer storeId){
List<MerchantConfig> list = merchantConfigService.selectMerchList(storeId);
return getSuccessResult(list);
}
/**
* 修改商户使用状态
* @param merchantConfig

View File

@ -35,6 +35,8 @@ public interface MerchantConfigService extends IService<MerchantConfig> {
*/
public List<MerchantConfig> selectMerchList();
public List<MerchantConfig> selectMerchList(Integer storeId);
/**
* 根据id查询商户信息
* @param id

View File

@ -51,6 +51,14 @@ public class MerchantConfigServiceImpl extends ServiceImpl<MerchantConfigMapper,
return list;
}
@Override
public List<MerchantConfig> selectMerchList(Integer storeId) {
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("store_id",storeId);
List list = baseMapper.selectList(queryWrapper);
return list;
}
@Override
public MerchantConfig selectMerchById(int id) {
MerchantConfig merchantConfig = baseMapper.selectById(id);

View File

@ -1,5 +1,6 @@
package com.fuint.business.member.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -41,6 +42,9 @@ public class LJStaffServiceImpl extends ServiceImpl<LJStaffMapper, LJStaff> impl
public IPage<LJStaff> selectStaffList(Page page, LJStaff staff) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
Integer storeId = nowAccountInfo.getStoreId();
if (ObjectUtil.isNotEmpty(staff.getStoreId())) {
storeId = staff.getStoreId();
}
staff.setStoreId(storeId);
return baseMapper.selectLJStaffList(page,staff);
}

View File

@ -4,10 +4,7 @@ import com.fuint.business.order.service.AllOrderInfoService;
import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@ -28,4 +25,10 @@ public class AllOrderInfoController extends BaseController {
String status = map.get("status");
return getSuccessResult(allOrderInfoService.updateAllOrderInfoByOrderNo(orderNo,status));
}
@GetMapping("/getOrderNum")
public ResponseObject getOrderNum(Integer storeId) {
return getSuccessResult(allOrderInfoService.getOrderNum(storeId));
}
}

View File

@ -220,13 +220,13 @@
<select id="salesByOilProduct" resultType="java.util.Map">
SELECT
<if test="type == 'week'">
CONCAT(YEAR(oo.create_time), '年第', WEEK(oo.create_time),'周') AS year_week,
CONCAT(YEAR(oo.create_time), '年第', WEEK(oo.create_time),'周') AS year_week
</if>
<if test="type == 'month'">
CONCAT(YEAR(oo.create_time), '年', MONTH(oo.create_time),'月') AS year_week,
CONCAT(YEAR(oo.create_time), '年', MONTH(oo.create_time),'月') AS year_week
</if>
<if test="type == 'year'">
CONCAT(YEAR(oo.create_time), '年') AS year_week,
CONCAT(YEAR(oo.create_time), '年') AS year_week
</if>
<foreach collection="list" item="list" separator=",">
@ -237,17 +237,17 @@
oil_order oo
left join oil_name onn on onn.id = oo.oils
WHERE
store_id = #{storeId}
<if test="type == 'week'">
oo.create_time >= CURDATE() - INTERVAL 6 WEEK
and oo.create_time >= CURDATE() - INTERVAL 6 WEEK
</if>
<if test="type == 'month'">
oo.create_time >= CURDATE() - INTERVAL 6 MONTH
and oo.create_time >= CURDATE() - INTERVAL 6 MONTH
</if>
<if test="type == 'year'">
oo.create_time >= CURDATE() - INTERVAL 6 YEAR
and oo.create_time >= CURDATE() - INTERVAL 6 YEAR
</if>
and store_id = #{storeId}
GROUP BY
YEAR(oo.create_time)
<if test="type == 'week'">

View File

@ -30,4 +30,9 @@ public interface AllOrderInfoService {
* @return
*/
public int updateAllOrderInfoByOrderNo(String orderNo,String status);
public int getOrderNum(Integer StoreId);
}

View File

@ -44,4 +44,15 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
}
return 0;
}
@Override
public int getOrderNum(Integer StoreId) {
// 构建查询条件
QueryWrapper queryWrapper = new QueryWrapper<>();
// 添加其他条件
queryWrapper.eq("store_id", StoreId);
// 调用统计方法
return baseMapper.selectCount(queryWrapper);
}
}

View File

@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 定时任务调度测试
* 定时任务调度
*
* @author ruoyi
*/

View File

@ -1,6 +1,7 @@
package com.fuint.business.store.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
@ -86,4 +87,8 @@ public class MtStore extends BaseEntity implements Serializable {
@ApiModelProperty("服务到期时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date expirationTime;
@TableField(exist = false)
private Integer orderNum;
@TableField(exist = false)
private Integer userNum;
}

View File

@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.fuint.business.store.mapper.ChainStoreInfoMapper">
<select id="listVo" resultType="com.fuint.business.store.entity.ChainStoreInfo">
<select id="listVo" resultType="com.fuint.business.store.entity.ChainStoreInfo">
SELECT
csi.*,sd.leader_name,sd.leader_phone
FROM

View File

@ -2,14 +2,19 @@ package com.fuint.business.store.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fuint.business.order.entity.AllOrderInfo;
import com.fuint.business.order.mapper.AllOrderInfoMapper;
import com.fuint.business.store.entity.MtStore;
import com.fuint.business.store.mapper.ChainStoreInfoMapper;
import com.fuint.business.store.entity.ChainStoreInfo;
import com.fuint.business.store.service.ChainStoreInfoService;
import com.fuint.business.store.service.StoreService;
import com.fuint.business.userManager.entity.LJUser;
import com.fuint.business.userManager.mapper.LJUserMapper;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.util.TokenUtil;
import com.fuint.repository.model.base.BaseEntity;
@ -19,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
@ -35,6 +41,10 @@ public class ChainStoreInfoServiceImpl extends ServiceImpl<ChainStoreInfoMapper,
private ISysDeptService deptService;
@Autowired
private StoreService storeService;
@Resource
AllOrderInfoMapper allOrderInfoMapper;
@Resource
LJUserMapper ljUserMapper;
@Override
public IPage<ChainStoreInfo> listVo(Page page, ChainStoreInfo chainStoreInfo) {
@ -48,6 +58,18 @@ public class ChainStoreInfoServiceImpl extends ServiceImpl<ChainStoreInfoMapper,
}
queryWrapper.eq(MtStore::getChainStoreId,it.getId()).orderByDesc(BaseEntity::getCreateTime);
List<MtStore> list = storeService.list(queryWrapper);
for (MtStore mtStore : list) {
QueryWrapper<AllOrderInfo> queryWrapper1 = new QueryWrapper<>();
queryWrapper1.eq("store_id", mtStore.getId());
QueryWrapper<LJUser> queryWrapper2 = new QueryWrapper<>();
queryWrapper2.eq("store_id", mtStore.getId());
Integer orderNum = allOrderInfoMapper.selectCount(queryWrapper1);
Integer userNum = ljUserMapper.selectCount(queryWrapper2);
mtStore.setOrderNum(orderNum);
mtStore.setUserNum(userNum);
}
it.setStoreList(list);
});
return res;

View File

@ -23,6 +23,8 @@ import com.fuint.repository.mapper.TAccountMapper;
import com.fuint.repository.model.MtMerchant;
import com.fuint.business.store.entity.MtStore;
import com.fuint.repository.model.TAccount;
import com.fuint.system.role.entity.TDuty;
import com.fuint.system.role.mapper.TDutyMapper;
import com.fuint.utils.StringUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
@ -355,6 +357,9 @@ public class StoreServiceImpl extends ServiceImpl<MtStoreMapper, MtStore> implem
public RedisTemplate redisTemplate;
@Autowired
TAccountMapper tAccountMapper;
@Resource
TDutyMapper tDutyMapper;
@Override
public Map<String,Object> loginVerification(String flag) {
Map<String,Object> res = new HashMap<>();
@ -364,17 +369,23 @@ public class StoreServiceImpl extends ServiceImpl<MtStoreMapper, MtStore> implem
}
// if (redisTemplate.hasKey(flag)) {
if (true) {
// BigDecimal bigDecimal = new BigDecimal(flag);
// BigDecimal multiply = bigDecimal.divide(new BigDecimal("2.1")).multiply(new BigDecimal("1.4"));
// 使用 intValue() BigDecimal 转换为整数
// int i = multiply.intValue();
// 找到站长的
Map<String, Object> param = new HashMap();
param.put("role_ids", 12);
List<TAccount> accountList = tAccountMapper.selectByMap(param);
// 根据storeId查出店铺信息
MtStore mtStore = mtStoreMapper.selectById(Integer.parseInt(flag));
// 找到对应的站长deptId
LambdaQueryWrapper<TDuty> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(TDuty::getCode,"z001");
TDuty tDuty = tDutyMapper.selectOne(lambdaQueryWrapper);
// 查找对应的用户信息
TAccount tAccount = new TAccount();
tAccount.setDeptId(mtStore.getContractDeptId());
tAccount.setRoleIds(tDuty.getDutyId().toString());
List<TAccount> accountList = tAccountMapper.getStationmasterByStoreId(tAccount);
if (accountList != null && accountList.size() > 0) {
AccountInfo accountByName = getAccountByName(accountList.get(0));

View File

@ -46,6 +46,15 @@ public class LJUserController extends BaseController {
return getSuccessResult(list);
}
/**
* 根据storeId查询会员人数
*/
@GetMapping("/userNum")
public ResponseObject userNum(Integer storeId){
return getSuccessResult(userService.userNum(storeId));
}
/**
* 查询所有会员信息
* @return

View File

@ -72,4 +72,10 @@ public interface LJUserMapper extends BaseMapper<LJUser> {
LJUserVo selectAllInfoById4Chain(@Param("userId") Integer userId, @Param("chainStoreId") Integer chainStoreId);
/**
* 查询公司人数
*/
Integer userNum(Integer storeId);
}

View File

@ -134,4 +134,12 @@
mi.storeId = #{storeId}
</where>
</select>
<select id="userNum" resultType="java.lang.Integer">
select count(*)
from
mt_user
<where>
mi.storeId = #{storeId}
</where>
</select>
</mapper>

View File

@ -20,6 +20,8 @@ public interface LJUserService extends IService<LJUser> {
*/
public IPage<LJUserVo> selectUserList(Page page, LJUserVo user);
Integer userNum(Integer storeId);
/**
* 查询所有会员信息
* @return

View File

@ -52,6 +52,17 @@ public class LJUserServiceImpl extends ServiceImpl<LJUserMapper, LJUser> impleme
return ljUserIPage;
}
@Override
public Integer userNum(Integer storeId) {
// 构建查询条件
QueryWrapper queryWrapper = new QueryWrapper<>();
// 添加其他条件
queryWrapper.eq("store_id", storeId);
// 调用统计方法
return baseMapper.selectCount(queryWrapper);
}
/**
* 查询所有会员信息
* @return

View File

@ -200,13 +200,12 @@ public class AccountServiceImpl extends ServiceImpl<TAccountMapper, TAccount> im
account.setAccountStatus(1);
account.setRealName(tAccount.getRealName());
account.setRoleIds(tAccount.getRoleIds());
account.setStaffId(tAccount.getStaffId());
account.setMerchantId(tAccount.getMerchantId());
account.setStoreId(tAccount.getStoreId());
account.setCreateTime(new Date());
account.setUpdateTime(new Date());
account.setStoreId(tAccount.getStoreId());
account.setStaffId(tAccount.getStaffId());
account.setDeptId(tAccount.getDeptId());
account.setPassword(tAccount.getPassword());
this.entryptPassword(account);
int id = tAccountMapper.insert(account);

View File

@ -3,6 +3,7 @@ package com.fuint.system.user.controller;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fuint.business.store.mapper.MtStoreMapper;
import com.fuint.common.dto.AccountDto;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.dto.RoleDto;
@ -174,6 +175,9 @@ public class BackendAccountController extends BaseController {
@Resource
TAccountDutyMapper tAccountDutyMapper;
@Resource
MtStoreMapper mtStoreMapper;
/**
* 新增账户
*
@ -212,6 +216,12 @@ public class BackendAccountController extends BaseController {
if (!"3".equals(deptType) && "z001".equals(code) ) {
return getFailureResult(201, "用户角色与组织架构不匹配");
}
MtStore mtStore = new MtStore();
if ("3".equals(deptType)) {
// 查出storeId
mtStore = mtStoreMapper.selectById(Integer.parseInt(deptId));
}
AccountInfo accountInfo = tAccountService.getAccountByName(accountName);
@ -254,9 +264,11 @@ public class BackendAccountController extends BaseController {
tAccount.setPassword(password);
tAccount.setIsActive(1);
tAccount.setLocked(0);
tAccount.setStoreId(Integer.parseInt(storeId));
tAccount.setStoreId(mtStore.getId());
tAccount.setMerchantId(Integer.parseInt(merchantId));
tAccount.setStaffId(Integer.parseInt(staffId));
tAccount.setDeptId(Long.parseLong(deptId));
tAccount.setRoleIds(roleId);
tAccountService.createAccountInfo(tAccount, duties);

View File

@ -1,7 +1,8 @@
# \u57FA\u672C\u914D\u7F6E
server.port=8080
server.port=8008
env.profile=dev
env.properties.path=D:/workspaces/oilSystem/fuintBackend/configure/
#env.properties.path=D:/workspaces/oilSystem/fuintBackend/configure/
env.properties.path=D:/code/oilSystem/fuintBackend/configure/
# \u6570\u636E\u5E93\u914D\u7F6E

View File

@ -6,6 +6,8 @@ import com.fuint.repository.model.TAccount;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 后台账号 Mapper 接口
*
@ -14,4 +16,11 @@ import org.apache.ibatis.annotations.Param;
*/
public interface TAccountMapper extends BaseMapper<TAccount> {
IPage<TAccount> listAccount(Page page, @Param("accountInfo") TAccount accountInfo,@Param("ancestors") String ancestors);
// 根据storeId查询对应的站长
List<TAccount> getStationmasterByStoreId(TAccount tAccount);
}

View File

@ -24,4 +24,17 @@
order by create_time desc
</select>
<select id="getStationmasterByStoreId" resultType="com.fuint.repository.model.TAccount">
select
ta.*
from
`t_account` ta
left join t_account_duty td on ta.acct_id = td.acct_id
where
ta.dept_id = #{deptId}
and td.duty_id = #{roleIds}
</select>
</mapper>