ChinaMobileRestApiController.java 40.2 KB
Newer Older
liqin's avatar
liqin committed
1
package cn.chnmuseum.party.web.controller;
liqin's avatar
liqin committed
2

liqin's avatar
liqin committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16
import cn.chnmuseum.party.auth.SHA256PasswordEncryptionService;
import cn.chnmuseum.party.auth.util.AESUtils;
import cn.chnmuseum.party.auth.util.JwtTokenUtil;
import cn.chnmuseum.party.common.enums.AuditOperationEnum;
import cn.chnmuseum.party.common.enums.FileCatEnum;
import cn.chnmuseum.party.common.enums.FileTypeEnum;
import cn.chnmuseum.party.common.enums.LanguageEnum;
import cn.chnmuseum.party.common.util.TimeUtils;
import cn.chnmuseum.party.common.validator.groups.Add;
import cn.chnmuseum.party.common.vo.GenericPageParam;
import cn.chnmuseum.party.model.*;
import cn.chnmuseum.party.service.*;
import cn.chnmuseum.party.service.impl.*;
import cn.chnmuseum.party.web.controller.base.BaseController;
liqin's avatar
liqin committed
17
import com.alibaba.fastjson.JSONObject;
liqin's avatar
liqin committed
18
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
yangtianyou's avatar
yangtianyou committed
19
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
wzp's avatar
wzp committed
20
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
liqin's avatar
liqin committed
21
import com.baomidou.mybatisplus.core.metadata.IPage;
liqin's avatar
liqin committed
22
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
liqin's avatar
liqin committed
23
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
liqin's avatar
liqin committed
24
import io.swagger.annotations.Api;
liqin's avatar
liqin committed
25 26
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
liqin's avatar
liqin committed
27
import io.swagger.annotations.ApiOperation;
liqin's avatar
liqin committed
28
import lombok.extern.slf4j.Slf4j;
liqin's avatar
liqin committed
29
import org.apache.commons.lang3.StringUtils;
wzp's avatar
wzp committed
30
import org.apache.shiro.authc.DisabledAccountException;
liqin's avatar
liqin committed
31
import org.apache.shiro.authc.IncorrectCredentialsException;
wzp's avatar
wzp committed
32
import org.apache.shiro.authz.annotation.RequiresAuthentication;
liqin's avatar
liqin committed
33
import org.springframework.data.redis.core.StringRedisTemplate;
wzp's avatar
wzp committed
34
import org.springframework.scheduling.annotation.Scheduled;
yangtianyou's avatar
yangtianyou committed
35
import org.springframework.validation.annotation.Validated;
liqin's avatar
liqin committed
36 37 38
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
wzp's avatar
wzp committed
39
import java.time.LocalDate;
liqin's avatar
liqin committed
40
import java.time.LocalDateTime;
liqin's avatar
liqin committed
41
import java.util.*;
liqin's avatar
liqin committed
42
import java.util.concurrent.TimeUnit;
liqin's avatar
liqin committed
43
import java.util.stream.Collectors;
liqin's avatar
liqin committed
44

liqin's avatar
liqin committed
45
@Slf4j
liqin's avatar
liqin committed
46 47
@RestController()
@RequestMapping("/cmRestApi")
liqin's avatar
liqin committed
48
@Api(tags = {"中国移动API"})
liqin's avatar
liqin committed
49 50 51 52 53
public class ChinaMobileRestApiController extends BaseController {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

wzp's avatar
wzp committed
54 55 56
    @Resource
    private TUserServiceImpl userService;

wzp's avatar
wzp committed
57 58 59
    @Resource
    private TOrganServiceImpl organService;

wzp's avatar
wzp committed
60 61 62
    @Resource
    private RunLogServiceImpl runLogService;

wzp's avatar
wzp committed
63 64 65
    @Resource
    private AssetServiceImpl assetService;

liqin's avatar
liqin committed
66 67 68
    @Resource
    private VideoContentService videoContentService;

wzp's avatar
wzp committed
69 70 71
    @Resource
    private TBoxOperationServiceImpl boxOperationService;

liqin's avatar
liqin committed
72 73 74
    @Resource
    private ExhibitionBoardService exhibitionBoardService;

yangtianyou's avatar
yangtianyou committed
75 76 77
    @Resource
    private TBoardStatisticService tBoardStatisticService;

liqin's avatar
liqin committed
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
    @Resource
    private LearningProjectService learningProjectService;

    @Resource
    private LearningContentService learningContentService;

    @Resource
    private ExhibitionBoardCatService exhibitionBoardCatService;

    @Resource
    private CopyrightOwnerService copyrightOwnerService;

    @Resource
    private LearningContentBoardService learningContentBoardService;

yangtianyou's avatar
yangtianyou committed
93 94 95 96 97 98 99 100 101
    @Resource
    private TAppVersionService appVersionService;

    @Resource
    private TAppDirPicService appDirPicService;

    @Resource
    private TAppRunPicService appRunPicService;

wzp's avatar
wzp committed
102
    private static final String SHIRO_JWT_TOKEN = "shiro:jwt:token:";
liqin's avatar
liqin committed
103 104 105 106 107
    //用户登录次数计数  redisKey 前缀
    private static final String SHIRO_LOGIN_COUNT = "shiro_login_count_";
    //用户登录是否被锁定    一小时 redisKey 前缀
    private static final String SHIRO_IS_LOCK = "shiro_is_lock_";

liqin's avatar
liqin committed
108 109
    @ApiOperation(value = "获取机顶盒密钥", notes = "获取机顶盒密钥")
    @GetMapping("/equitment/key")
wzp's avatar
wzp committed
110
    @RequiresAuthentication  //@RequiresPermissions("equitment:key")
liqin's avatar
liqin committed
111 112
    public Map<String, Object> getBoxPrivateKey(@RequestParam(value = "mac") String mac) {
        try {
liqin's avatar
liqin committed
113
            String macAddress = mac.trim().toUpperCase().replaceAll("-|_", ":");
liqin's avatar
liqin committed
114
            final LambdaQueryWrapper<TBoxOperation> queryWrapper = Wrappers.<TBoxOperation>lambdaQuery().eq(TBoxOperation::getMac, macAddress);
liqin's avatar
liqin committed
115 116 117
            final TBoxOperation tBoxOperation = this.boxOperationService.getOne(queryWrapper);
            if (tBoxOperation != null) {
                final String organId = tBoxOperation.getOrganId();
liqin's avatar
liqin committed
118 119
                final TUser tUser = getcurUser();
                if (tUser != null && organId.equals(tUser.getOrgId())) {
liqin's avatar
liqin committed
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
//                    final String countStr = this.stringRedisTemplate.opsForValue().get(macAddress + "_count");
//                    if (StringUtils.isNotBlank(countStr)) {
//                        final long count = Long.parseLong(countStr);
//                        if (count > 1) {
//                            JSONObject jsonObject = new JSONObject();
//                            jsonObject.put("key", "");
//                            return getFailResult("400", "已经获取过一次,无法再次获取", jsonObject);
//                        }
//                    } else if (tBoxOperation.getRequestCount() > 1) {
//                        JSONObject jsonObject = new JSONObject();
//                        jsonObject.put("key", "");
//                        return getFailResult("400", "已经获取过一次,无法再次获取", jsonObject);
//                    }
//                    this.stringRedisTemplate.opsForValue().increment(macAddress + "_count");
//                    tBoxOperation.setRequestCount(tBoxOperation.getRequestCount() + 1);
//                    this.boxOperationService.updateById(tBoxOperation);
liqin's avatar
liqin committed
136

liqin's avatar
liqin committed
137 138 139
                    JSONObject jsonObject = new JSONObject();
                    jsonObject.put("key", tBoxOperation.getPrivateKey());
                    return getResult(jsonObject);
liqin's avatar
liqin committed
140
                } else {
liqin's avatar
liqin committed
141
                    return getFailResult("1109", "账号认证失败");
liqin's avatar
liqin committed
142
                }
liqin's avatar
liqin committed
143
            }
liqin's avatar
liqin committed
144
            return getFailResult("400", "系统未查询到此机顶盒相关信息");
liqin's avatar
liqin committed
145 146 147 148 149 150
        } catch (Exception e) {
            e.printStackTrace();
        }
        return getFailResult();
    }

wzp's avatar
wzp committed
151 152
    @ApiOperation(value = "机顶盒激活状态查询", notes = "机顶盒激活状态查询")
    @GetMapping("/equitment/activity")
wzp's avatar
wzp committed
153
    //@RequiresAuthentication  //@RequiresPermissions("/equitment/activity/")
wzp's avatar
wzp committed
154 155 156
    public Map<String, Object> getActivity(@RequestParam(required = true) String mac) {
        try {
            UpdateWrapper<TBoxOperation> wrapper = new UpdateWrapper<>();
liqin's avatar
liqin committed
157
            wrapper.eq("mac", mac.toUpperCase());
wzp's avatar
wzp committed
158
            TBoxOperation one = boxOperationService.getOne(wrapper);
wzp's avatar
wzp committed
159 160
            HashMap<Object, Object> map = new HashMap<>();
            map.put("activityStatus", false);
wzp's avatar
wzp committed
161
            if (one != null) {
wzp's avatar
wzp committed
162 163 164 165 166 167 168 169
                map.put("activityStatus", true);
            }
            return getResult(map);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return getFailResult();
    }
wzp's avatar
wzp committed
170

liqin's avatar
liqin committed
171
    @RequestMapping(value = "/user/webLogin", method = RequestMethod.POST)
wzp's avatar
wzp committed
172
    public Map<String, Object> login(@RequestParam(value = "username") String username,
liqin's avatar
liqin committed
173 174
                                     @RequestParam(value = "password") String password,
                                     @RequestParam(value = "mac") String mac) {
liqin's avatar
liqin committed
175
        JSONObject resultMap = new JSONObject(true);
wzp's avatar
wzp committed
176
        TUser user;
liqin's avatar
liqin committed
177 178
        if (StringUtils.isNoneBlank(username)) {
            try {
wzp's avatar
wzp committed
179
                //访问一次,计数一次
wzp's avatar
wzp committed
180 181 182 183 184 185
//                ValueOperations<String, String> opsForValue = stringRedisTemplate.opsForValue();
//                if ("LOCK".equals(opsForValue.get(SHIRO_IS_LOCK + username))) {
//                    resultMap.put("resultCode", "400");
//                    resultMap.put("message", "由于密码输入错误次数大于5次,12小时内帐号已禁止登录!请您联系相关管理人员,联系电话:13924551212,邮箱:325346534@zh.com。");
//                    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(resultMap);
//                }
wzp's avatar
wzp committed
186 187
                user = userService.selectByUsername(username);
                if (user == null) {
wzp's avatar
wzp committed
188
                    resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
189
                    resultMap.put("message", "用户名或密码不正确!");
wzp's avatar
wzp committed
190
                    return resultMap;
wzp's avatar
wzp committed
191
                }
wzp's avatar
wzp committed
192
                TBoxOperation operation = boxOperationService.getOne(new UpdateWrapper<TBoxOperation>().eq("organ_id", user.getOrgId()));
liqin's avatar
liqin committed
193
                if (operation == null || "".equals(operation.getMac())) {
wzp's avatar
wzp committed
194
                    resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
195
                    resultMap.put("message", "用户未激活!");
wzp's avatar
wzp committed
196
                    return resultMap;
wzp's avatar
wzp committed
197
                }
wzp's avatar
wzp committed
198
                //解密
liqin's avatar
liqin committed
199 200
                mac = AESUtils.aesDecrypt(mac);
                password = AESUtils.aesDecrypt(password);
wzp's avatar
wzp committed
201

liqin's avatar
liqin committed
202
                if (!mac.toUpperCase().equals(operation.getMac().toUpperCase())) {
wzp's avatar
wzp committed
203
                    resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
204
                    resultMap.put("message", "mac地址不正确!");
wzp's avatar
wzp committed
205
                    return resultMap;
wzp's avatar
wzp committed
206
                }
wzp's avatar
wzp committed
207
                if (AuditOperationEnum.DISABLE.name().equals(user.getStatus())) {
wzp's avatar
wzp committed
208 209 210
                    resultMap.put("resultCode", "400");
                    resultMap.put("message", "此帐号已禁用,请联系管理员!");
                    return resultMap;
wzp's avatar
wzp committed
211 212 213 214
                }

                if (user.getPermanent() != null && !user.getPermanent()) {
                    if (user.getEffectiveDate().isAfter(LocalDate.now()) || user.getExiredDate().isBefore(LocalDate.now())) {
wzp's avatar
wzp committed
215 216 217
                        resultMap.put("resultCode", "400");
                        resultMap.put("message", "此帐号已失效,请联系管理员!");
                        return resultMap;
wzp's avatar
wzp committed
218 219 220 221 222
                    }
                }

                byte[] salt = user.getPasswordSalt();
                if (!new String(SHA256PasswordEncryptionService.createPasswordHash(password, salt)).equals(new String(user.getPasswordHash()))) {
wzp's avatar
wzp committed
223 224 225 226 227 228 229 230 231
//                    opsForValue.increment(SHIRO_LOGIN_COUNT + username, 1);
//                    //计数大于5时,设置用户被锁定一小时
//                    String s = opsForValue.get(SHIRO_LOGIN_COUNT + username);
//                    if (StringUtils.isNotBlank(s)) {
//                        if (Integer.parseInt(s) >= 5) {
//                            opsForValue.set(SHIRO_IS_LOCK + username, "LOCK");
//                            stringRedisTemplate.expire(SHIRO_IS_LOCK + username, 12, TimeUnit.HOURS);
//                        }
//                    }
wzp's avatar
wzp committed
232 233 234
                    resultMap.put("resultCode", "400");
                    resultMap.put("message", "用户名或密码不正确!");
                    return resultMap;
liqin's avatar
liqin committed
235
                }
wzp's avatar
wzp committed
236
                String token = JwtTokenUtil.sign(username, user.getId());
liqin's avatar
liqin committed
237
                // 将token信息存入Redis
wzp's avatar
wzp committed
238
                stringRedisTemplate.opsForValue().set(SHIRO_JWT_TOKEN + token, user.getId(), 240, TimeUnit.MINUTES);
liqin's avatar
liqin committed
239 240 241

                JSONObject jsonObject = new JSONObject(true);
                jsonObject.put("token", token);
wzp's avatar
wzp committed
242 243
                jsonObject.put("userId", user.getId());
                jsonObject.put("userName", user.getUserName());
liqin's avatar
liqin committed
244
                jsonObject.put("expire", TimeUtils.format(LocalDateTime.now().plusMinutes(240), TimeUtils.FORMAT_ONE));
wzp's avatar
wzp committed
245
                jsonObject.put("expireDate", user.getExiredDate());
liqin's avatar
liqin committed
246 247
                jsonObject.put("orgId", user.getOrgId());
                jsonObject.put("orgCode", user.getOrgCode());
wzp's avatar
wzp committed
248
                jsonObject.put("orgName", user.getOrgName());
liqin's avatar
liqin committed
249

wzp's avatar
wzp committed
250
                resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
251
                resultMap.put("message", "登录成功");
liqin's avatar
liqin committed
252
                resultMap.put("data", jsonObject);
wzp's avatar
wzp committed
253
                return resultMap;
liqin's avatar
liqin committed
254
            } catch (Exception e) {
wzp's avatar
wzp committed
255
                resultMap.put("resultCode", "500");
liqin's avatar
liqin committed
256 257 258
                resultMap.put("message", e.getMessage());
            }
        }
wzp's avatar
wzp committed
259
        return getFailResult(resultMap.get("message"));
liqin's avatar
liqin committed
260 261 262 263
    }

    @ApiOperation(value = "获取单个成员信息")
    @GetMapping(value = "/user/getUserInfo")
wzp's avatar
wzp committed
264
    @RequiresAuthentication
wzp's avatar
wzp committed
265
    public Map<String, Object> getById(String userId) {
wzp's avatar
wzp committed
266
        JSONObject resultMap = new JSONObject(true);
liqin's avatar
liqin committed
267
        try {
wzp's avatar
wzp committed
268
            TUser user = userService.getById(userId);
wzp's avatar
wzp committed
269
            TOrgan organ = organService.getById(user.getOrgId());
liqin's avatar
liqin committed
270

wzp's avatar
wzp committed
271
            if (null == user) {
wzp's avatar
wzp committed
272
                resultMap.put("resultCode", "400");
wzp's avatar
wzp committed
273 274
                resultMap.put("message", "用户不存在");
                resultMap.put("data", "");
wzp's avatar
wzp committed
275
                return resultMap;
liqin's avatar
liqin committed
276 277
            }

wzp's avatar
wzp committed
278 279 280
            HashMap<String, Object> map = new HashMap<>();
            map.put("userId", user.getId());
            map.put("userName", user.getUserName());
wzp's avatar
wzp committed
281
//            long expire = stringRedisTemplate.getExpire(SHIRO_JWT_TOKEN + token) == null ? 0L : stringRedisTemplate.getExpire(SHIRO_JWT_TOKEN + token);
wzp's avatar
wzp committed
282
            //jsonObject.put("expire", TimeUtils.format(LocalDateTime.now().plusMinutes(expire), TimeUtils.FORMAT_ONE));
wzp's avatar
wzp committed
283 284 285 286
            map.put("effectiveDate", user.getEffectiveDate());
            map.put("expireDate", user.getExiredDate());
            map.put("orgCode", user.getOrgId());
            map.put("orgName", organ.getName());
wzp's avatar
wzp committed
287

wzp's avatar
wzp committed
288
            resultMap.put("resultCode", "200");
liqin's avatar
liqin committed
289
            resultMap.put("message", "成功");
wzp's avatar
wzp committed
290
            resultMap.put("data", map);
wzp's avatar
wzp committed
291
            return resultMap;
liqin's avatar
liqin committed
292
        } catch (Exception e) {
wzp's avatar
wzp committed
293
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
294
            resultMap.put("message", "获取单个成员信息失败!");
liqin's avatar
liqin committed
295
        }
wzp's avatar
wzp committed
296
        return getFailResult();
liqin's avatar
liqin committed
297 298
    }

liqin's avatar
liqin committed
299
    @RequestMapping(value = "/user/logout", method = RequestMethod.GET)
wzp's avatar
wzp committed
300
    @RequiresAuthentication
wzp's avatar
wzp committed
301
    public Map<String, Object> logout() {
wzp's avatar
wzp committed
302
        String token = request.getHeader("Authorization");
wzp's avatar
wzp committed
303
        JSONObject resultMap = new JSONObject(true);
wzp's avatar
wzp committed
304 305 306
        if (token.startsWith("Bearer ")) {
            token = token.substring(7);
        }
liqin's avatar
liqin committed
307 308
        try {
            if (StringUtils.isNotBlank(token)) {
wzp's avatar
wzp committed
309
//                SecurityUtils.getSubject().logout();
wzp's avatar
wzp committed
310

liqin's avatar
liqin committed
311 312
                this.stringRedisTemplate.delete(SHIRO_JWT_TOKEN + token);
            }
wzp's avatar
wzp committed
313
            resultMap.put("resultCode", "200");
liqin's avatar
liqin committed
314 315
            resultMap.put("message", "成功");
            resultMap.put("data", "");
wzp's avatar
wzp committed
316
            return resultMap;
liqin's avatar
liqin committed
317
        } catch (Exception e) {
wzp's avatar
wzp committed
318
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
319 320
            resultMap.put("message", "注销错误!");
        }
wzp's avatar
wzp committed
321
        return getFailResult("注销错误!");
wzp's avatar
wzp committed
322 323 324 325 326 327
    }

    /**
     * 插入机顶盒日志表
     */
    @ApiOperation(value = "插入机顶盒日志表", notes = "插入机顶盒日志表")
wzp's avatar
wzp committed
328
    @PostMapping(value = "/equitment/runLog")
wzp's avatar
wzp committed
329
    @RequiresAuthentication
wzp's avatar
wzp committed
330
    public Map<String, Object> insertRunLog(RunLog runLog) {
wzp's avatar
wzp committed
331 332 333 334
        JSONObject resultMap = new JSONObject();

        try {
            boolean b = runLogService.insertRunLog(runLog);
wzp's avatar
wzp committed
335
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
336 337
            resultMap.put("message", "成功");
            resultMap.put("data", "");
wzp's avatar
wzp committed
338
            return resultMap;
wzp's avatar
wzp committed
339
        } catch (Exception e) {
wzp's avatar
wzp committed
340
            resultMap.put("resultCode", "500");
wzp's avatar
wzp committed
341 342
            resultMap.put("message", "失败");
            resultMap.put("data", "");
liqin's avatar
liqin committed
343
        }
wzp's avatar
wzp committed
344
        return getFailResult();
liqin's avatar
liqin committed
345 346
    }

liqin's avatar
liqin committed
347
    @ApiImplicitParams(value = {
liqin's avatar
liqin committed
348
            @ApiImplicitParam(name = "boardId", value = "展板内容ID", paramType = "query", dataType = "String", required = true)
liqin's avatar
liqin committed
349
    })
liqin's avatar
liqin committed
350
    @ApiOperation(value = "查询展板视频/语音导览语言列表", notes = "查询展板视频/语音导览语言列表")
liqin's avatar
liqin committed
351
    @GetMapping(value = "/exhibitionBoard/language")
wzp's avatar
wzp committed
352
    @RequiresAuthentication
liqin's avatar
liqin committed
353
    public Map<String, Object> getExhibitionBoardVideoLanguageList(@RequestParam(value = "boardId") String boardId) {
wzp's avatar
wzp committed
354
        JSONObject resultMap = new JSONObject();
liqin's avatar
liqin committed
355
        Map<String, List<Map<String, String>>> langMap = new LinkedHashMap<>(2);
wzp's avatar
wzp committed
356
        try {
liqin's avatar
liqin committed
357
            List<Map<String, String>> videoList = new ArrayList<>();
liqin's avatar
liqin committed
358 359
            final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(boardId);
            final String videoContentId = exhibitionBoard.getVideoContentId();
liqin's avatar
liqin committed
360
            LambdaQueryWrapper<Asset> assetLambdaQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId).eq(Asset::getPublished, true);
liqin's avatar
liqin committed
361 362 363 364
            List<Asset> assetList = this.assetService.list(assetLambdaQueryWrapper);
            List<String> languageList = assetList.stream().map(Asset::getLanguage).collect(Collectors.toList());
            for (LanguageEnum languageEnum : LanguageEnum.values()) {
                if (languageList.contains(languageEnum.name())) {
liqin's avatar
liqin committed
365
                    Map<String, String> map = new LinkedHashMap<>(2);
liqin's avatar
liqin committed
366 367 368 369 370 371 372 373 374 375
                    map.put("code", languageEnum.name());
                    map.put("name", languageEnum.getName());
                    videoList.add(map);
                }
            }
            langMap.put("video", videoList);

            assetLambdaQueryWrapper.clear();
            List<Map<String, String>> audioList = new ArrayList<>();
            assetLambdaQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, boardId);
liqin's avatar
liqin committed
376
            assetLambdaQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
377 378 379
            assetLambdaQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO);
            assetList = this.assetService.list(assetLambdaQueryWrapper);
            languageList = assetList.stream().map(Asset::getLanguage).collect(Collectors.toList());
liqin's avatar
liqin committed
380 381
            for (LanguageEnum languageEnum : LanguageEnum.values()) {
                if (languageList.contains(languageEnum.name())) {
liqin's avatar
liqin committed
382
                    Map<String, String> map = new LinkedHashMap<>(2);
liqin's avatar
liqin committed
383 384
                    map.put("code", languageEnum.name());
                    map.put("name", languageEnum.getName());
liqin's avatar
liqin committed
385
                    audioList.add(map);
liqin's avatar
liqin committed
386
                }
liqin's avatar
liqin committed
387
            }
liqin's avatar
liqin committed
388 389
            langMap.put("audio", audioList);

wzp's avatar
wzp committed
390
            resultMap.put("resultCode", "200");
wzp's avatar
wzp committed
391
            resultMap.put("message", "成功");
liqin's avatar
liqin committed
392
            resultMap.put("data", langMap);
wzp's avatar
wzp committed
393
            return resultMap;
wzp's avatar
wzp committed
394
        } catch (Exception e) {
liqin's avatar
liqin committed
395
            resultMap.put("resultCode", "400");
liqin's avatar
liqin committed
396
            resultMap.put("message", "该展板已下架");
wzp's avatar
wzp committed
397 398
            resultMap.put("data", "");
        }
liqin's avatar
liqin committed
399
        return getFailResult("400", "该展板已下架");
wzp's avatar
wzp committed
400 401
    }

liqin's avatar
liqin committed
402 403 404
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
liqin's avatar
liqin committed
405
            @ApiImplicitParam(name = "learningContentId", value = "学习内容ID", paramType = "query", dataType = "String")
liqin's avatar
liqin committed
406
    })
liqin's avatar
liqin committed
407
    @PostMapping("/exhibitionBoard/getPage")
wzp's avatar
wzp committed
408
    @RequiresAuthentication  //@RequiresPermissions("exhibition:board:page")
liqin's avatar
liqin committed
409
    @ApiOperation(value = "展板列表查询", notes = "展板列表查询")
liqin's avatar
liqin committed
410
    public Map<String, Object> getExhibitionBoardPageList(@RequestParam(value = "learningContentId", required = false) String learningContentId) {
liqin's avatar
liqin committed
411
        final IPage<ExhibitionBoard> page = this.learningContentBoardService.getBoardPageByLearningContentId(getPage(), learningContentId, null);
liqin's avatar
liqin committed
412
        for (ExhibitionBoard exhibitionBoard : page.getRecords()) {
liqin's avatar
liqin committed
413 414 415
            exhibitionBoard.setLearningContentId(learningContentId);
            if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
                String name = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId()).getName();
liqin's avatar
liqin committed
416 417 418 419 420 421
                exhibitionBoard.setBoardCopyrightOwnerName(name);
            }
            if (exhibitionBoard.getExhibitionBoardCatId() != null) {
                String name = this.exhibitionBoardCatService.getById(exhibitionBoard.getExhibitionBoardCatId()).getName();
                exhibitionBoard.setExhibitionBoardCatName(name);
            }
liqin's avatar
liqin committed
422
            if (exhibitionBoard.getVideoContentId() != null) {
liqin's avatar
liqin committed
423
                final VideoContent videoContent = this.videoContentService.getById(exhibitionBoard.getVideoContentId());
liqin's avatar
liqin committed
424
                if (videoContent != null) {
liqin's avatar
liqin committed
425 426
                    exhibitionBoard.setBoardVideoContentThumbnail(videoContent.getThumbnail());
                }
liqin's avatar
liqin committed
427
            }
liqin's avatar
liqin committed
428
            LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getVideoContentId());
liqin's avatar
liqin committed
429
            assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
430
            assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name());
liqin's avatar
liqin committed
431
            List<Asset> videoList = this.assetService.list(assetQueryWrapper);
wzp's avatar
wzp committed
432 433 434 435
            for (Asset asset : videoList) {
                asset.setExhibitionBoardName(exhibitionBoard.getName());
                asset.setExhibitionBoardId(exhibitionBoard.getId());
            }
liqin's avatar
liqin committed
436 437 438

            assetQueryWrapper.clear();
            assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getId());
liqin's avatar
liqin committed
439
            assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
440 441
            assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
            List<Asset> datumList = this.assetService.list(assetQueryWrapper);
wzp's avatar
wzp committed
442 443
            for (Asset asset : datumList) {
                asset.setExhibitionBoardName(exhibitionBoard.getName());
wzp's avatar
wzp committed
444
                asset.setExhibitionBoardId(exhibitionBoard.getId());
wzp's avatar
wzp committed
445
            }
liqin's avatar
liqin committed
446 447 448
            exhibitionBoard.setDatumList(datumList);

            videoList.addAll(datumList.stream().filter(x -> FileTypeEnum.VIDEO.name().equalsIgnoreCase(x.getFileType())).collect(Collectors.toList()));
liqin's avatar
liqin committed
449
            exhibitionBoard.setVideoList(videoList);
liqin's avatar
liqin committed
450
        }
liqin's avatar
liqin committed
451
        return getResult(page);
liqin's avatar
liqin committed
452 453
    }

liqin's avatar
liqin committed
454
    @ApiOperation(value = "展板详情查询", notes = "展板详情查询")
liqin's avatar
liqin committed
455
    @ApiImplicitParams({
liqin's avatar
liqin committed
456
            @ApiImplicitParam(name = "boardId", value = "展板ID", dataType = "String", paramType = "query"),
liqin's avatar
liqin committed
457 458
            @ApiImplicitParam(name = "videoLanguage", value = "语言", dataType = "String", paramType = "query"),
            @ApiImplicitParam(name = "audioLanguage", value = "语言", dataType = "String", paramType = "query")
liqin's avatar
liqin committed
459
    })
liqin's avatar
liqin committed
460
    @GetMapping("/exhibitionBoard/getBoardInfo")
wzp's avatar
wzp committed
461
    @RequiresAuthentication
liqin's avatar
liqin committed
462 463 464
    public Map<String, Object> getById(@RequestParam(value = "boardId") String id,
                                       @RequestParam(value = "videoLanguage", required = false) LanguageEnum videoLanguage,
                                       @RequestParam(value = "audioLanguage", required = false) LanguageEnum audioLanguage) {
liqin's avatar
liqin committed
465
        ExhibitionBoard exhibitionBoard = exhibitionBoardService.getById(id);
liqin's avatar
liqin committed
466 467 468 469 470 471 472 473
        String exhibitionBoardCatId = exhibitionBoard.getExhibitionBoardCatId();
        if (exhibitionBoardCatId != null) {
            exhibitionBoard.setExhibitionBoardCatName(this.exhibitionBoardCatService.getById(exhibitionBoardCatId).getName());
        }
        String boardCopyrightOwnerId = exhibitionBoard.getBoardCopyrightOwnerId();
        if (boardCopyrightOwnerId != null) {
            exhibitionBoard.setBoardCopyrightOwnerName(this.copyrightOwnerService.getById(boardCopyrightOwnerId).getName());
        }
liqin's avatar
liqin committed
474 475 476 477
        if (exhibitionBoard.getVideoContentCopyrightOwnerId() != null) {
            String name = this.copyrightOwnerService.getById(exhibitionBoard.getVideoContentCopyrightOwnerId()).getName();
            exhibitionBoard.setVideoContentCopyrightOwnerName(name);
        }
liqin's avatar
liqin committed
478 479 480 481
        if (exhibitionBoard.getVideoContentId() != null) {
            String thumbnail = this.videoContentService.getById(exhibitionBoard.getVideoContentId()).getThumbnail();
            exhibitionBoard.setBoardVideoContentThumbnail(thumbnail);
        }
liqin's avatar
liqin committed
482

liqin's avatar
liqin committed
483
        LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, id);
liqin's avatar
liqin committed
484
        assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
485
        assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_AUDIO.name());
liqin's avatar
liqin committed
486 487
        if (audioLanguage != null) {
            assetQueryWrapper.eq(Asset::getLanguage, audioLanguage.name());
liqin's avatar
liqin committed
488
        }
liqin's avatar
liqin committed
489
        final List<Asset> audioList = this.assetService.list(assetQueryWrapper);
liqin's avatar
liqin committed
490 491 492 493 494 495 496 497 498 499
        List<String> languageList = audioList.stream().map(Asset::getLanguage).collect(Collectors.toList());
        List<Map<String, String>> audioLanguageList = new ArrayList<>();
        for (LanguageEnum languageEnum : LanguageEnum.values()) {
            if (languageList.contains(languageEnum.name())) {
                Map<String, String> map = new LinkedHashMap<>(2);
                map.put("code", languageEnum.name());
                map.put("name", languageEnum.getName());
                audioLanguageList.add(map);
            }
        }
liqin's avatar
liqin committed
500
        exhibitionBoard.setAudioList(audioList);
liqin's avatar
liqin committed
501
        exhibitionBoard.setAudioLanguageList(audioLanguageList);
liqin's avatar
liqin committed
502 503

        assetQueryWrapper.clear();
liqin's avatar
liqin committed
504
        assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, id);
liqin's avatar
liqin committed
505
        assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
506 507 508 509 510 511 512 513 514 515 516
        assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
        final List<Asset> datumList = this.assetService.list(assetQueryWrapper);
        exhibitionBoard.setDatumList(datumList);

        final String videoContentId = exhibitionBoard.getVideoContentId();
        if (videoContentId != null) {
            final VideoContent videoContent = this.videoContentService.getById(videoContentId);
            exhibitionBoard.setVideoContentName(videoContent.getName());

            assetQueryWrapper.clear();
            assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, videoContentId);
liqin's avatar
liqin committed
517
            assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
518
            assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.VIDEO_CONTENT.name());
liqin's avatar
liqin committed
519 520
            if (videoLanguage != null) {
                assetQueryWrapper.eq(Asset::getLanguage, videoLanguage.name());
liqin's avatar
liqin committed
521
            }
liqin's avatar
liqin committed
522
            final List<Asset> videoList = this.assetService.list(assetQueryWrapper);
liqin's avatar
liqin committed
523 524 525 526 527 528 529 530 531 532 533
            languageList.clear();
            languageList = videoList.stream().map(Asset::getLanguage).collect(Collectors.toList());
            List<Map<String, String>> videoLanguageList = new ArrayList<>();
            for (LanguageEnum languageEnum : LanguageEnum.values()) {
                if (languageList.contains(languageEnum.name())) {
                    Map<String, String> map = new LinkedHashMap<>(2);
                    map.put("code", languageEnum.name());
                    map.put("name", languageEnum.getName());
                    videoLanguageList.add(map);
                }
            }
liqin's avatar
liqin committed
534
            exhibitionBoard.setVideoList(videoList);
liqin's avatar
liqin committed
535
            exhibitionBoard.setVideoLanguageList(videoLanguageList);
liqin's avatar
liqin committed
536
        }
liqin's avatar
liqin committed
537
        return getResult(exhibitionBoard);
liqin's avatar
liqin committed
538 539
    }

yangtianyou's avatar
yangtianyou committed
540
    @PostMapping("/equitment/playLog")
wzp's avatar
wzp committed
541
    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:statisticBoardInfo")
yangtianyou's avatar
yangtianyou committed
542 543 544
    @ApiOperation(value = "播放记录信息反馈", notes = "播放记录信息反馈")
    public Map<String, Object> boardStatisticInfo(@Validated(value = {Add.class}) TBoardStatistic tBoardStatistic) {
        // 展板信息统计
liqin's avatar
liqin committed
545 546
        try {
            Object result = tBoardStatisticService.boardStatisticInfo(tBoardStatistic, false);
yangtianyou's avatar
yangtianyou committed
547
            // 返回操作结果
liqin's avatar
liqin committed
548
            if (result != null && (boolean) result) {
yangtianyou's avatar
yangtianyou committed
549 550
                return getSuccessResult();
            }
liqin's avatar
liqin committed
551
        } catch (Exception e) {
yangtianyou's avatar
yangtianyou committed
552 553 554 555 556 557
            e.printStackTrace();
        }
        // 保存失败
        return getFailResult();
    }

wzp's avatar
wzp committed
558
    @Scheduled(cron = "0 0/5 * * * *")
liqin's avatar
liqin committed
559
    public void boardStatistic() {
wzp's avatar
wzp committed
560 561 562 563 564 565 566 567 568
        try {
            System.out.println("定时汇总播放记录开始...");
            tBoardStatisticService.boardStatisticInfo(null, true);
            System.out.println("定时汇总播放记录成功...");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

liqin's avatar
liqin committed
569 570 571 572 573 574 575
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String")
    })
liqin's avatar
liqin committed
576
    @PostMapping("/learningProject/getPage")
wzp's avatar
wzp committed
577
    @RequiresAuthentication  //@RequiresPermissions("learning:project:page")
liqin's avatar
liqin committed
578
    @ApiOperation(value = "查询学习项目", notes = "查询学习项目")
liqin's avatar
liqin committed
579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602
    public Map<String, Object> getLearningProjectPageList(GenericPageParam genericPageParam) {
        LambdaQueryWrapper<LearningProject> queryWrapper = new LambdaQueryWrapper<>();
        // 对名称或编码模糊查询
        if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
            queryWrapper.like(LearningProject::getName, genericPageParam.getNameOrCode());
        }
        // 根据创建时间区间检索
        if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
            queryWrapper.ge(LearningProject::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
                    .le(LearningProject::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
        }
        // 设置排序规则
        queryWrapper.orderByDesc(LearningProject::getCreateTime);
        // 设置查询内容
        queryWrapper.select(
                LearningProject::getId,
                LearningProject::getName,
                LearningProject::getRemarks,
                LearningProject::getCreateTime,
                LearningProject::getUpdateTime);
        Page<LearningProject> page = this.learningProjectService.page(getPage(), queryWrapper);
        for (LearningProject learningProject : page.getRecords()) {
            LambdaQueryWrapper<LearningContent> lambdaQueryWrapper = Wrappers.<LearningContent>lambdaQuery()
                    .eq(LearningContent::getLearningProjectId, learningProject.getId())
liqin's avatar
liqin committed
603 604
                    .eq(LearningContent::getPublished, true).orderByDesc(LearningContent::getSortorder);
            lambdaQueryWrapper.select(LearningContent::getName, LearningContent::getCover);
liqin's avatar
liqin committed
605
            List<LearningContent> learningContentList = this.learningContentService.list(lambdaQueryWrapper);
liqin's avatar
liqin committed
606 607 608 609 610
            if (!learningContentList.isEmpty()) {
                String learningContentNames = learningContentList.stream().map(LearningContent::getName).collect(Collectors.joining("、"));
                learningProject.setThumbnail(learningContentList.get(0).getCover());
                learningProject.setLearningContentNames(learningContentNames);
            }
liqin's avatar
liqin committed
611 612 613 614
        }
        return getResult(page);
    }

liqin's avatar
liqin committed
615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "learningProjectId", value = "学习项目ID", paramType = "query", dataType = "String"),
            @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String")
    })
    @PostMapping("/learningContent/getPage")
    @RequiresAuthentication  //@RequiresPermissions("learning:content:page")
    @ApiOperation(value = "查询学习内容", notes = "查询学习内容")
    public Map<String, Object> getLearningContentPageList(GenericPageParam genericPageParam,
                                                          @RequestParam(value = "learningProjectId", required = false) String learningProjectId) {
        LambdaQueryWrapper<LearningContent> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(LearningContent::getPublished, true);
        // 对名称或编码模糊查询
        if (StringUtils.isNotBlank(learningProjectId)) {
            queryWrapper.eq(LearningContent::getLearningProjectId, learningProjectId);
        }
        // 对名称或编码模糊查询
        if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
            queryWrapper.like(LearningContent::getName, genericPageParam.getNameOrCode());
        }
        // 根据创建时间区间检索
        if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
            queryWrapper.ge(LearningContent::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
                    .le(LearningContent::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
        }
        // 设置排序规则
        queryWrapper.orderByDesc(LearningContent::getSortorder);
        // 设置查询内容
        queryWrapper.select(
                LearningContent::getId,
                LearningContent::getName,
                LearningContent::getCover,
                LearningContent::getSortorder,
                LearningContent::getCreateTime,
                LearningContent::getUpdateTime);
        Page<LearningContent> page = this.learningContentService.page(getPage(), queryWrapper);
        for (LearningContent learningContent : page.getRecords()) {
            LambdaQueryWrapper<LearningContentBoard> lambdaQueryWrapper = Wrappers.<LearningContentBoard>lambdaQuery().eq(LearningContentBoard::getLearningContentId, learningContent.getId());
            int exhibitionBoardCount = this.learningContentBoardService.count(lambdaQueryWrapper);
            learningContent.setExhibitionBoardCount(exhibitionBoardCount);
        }
        return getResult(page);
    }

liqin's avatar
liqin committed
660
    @ApiImplicitParams(value = {
liqin's avatar
liqin committed
661 662
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
liqin's avatar
liqin committed
663
            @ApiImplicitParam(name = "boardId", value = "展板内容ID", paramType = "path", dataType = "String", required = true)
liqin's avatar
liqin committed
664
    })
liqin's avatar
liqin committed
665
    @GetMapping("/exhibitionBoard/getRefMaterial/{boardId}")
wzp's avatar
wzp committed
666
    @RequiresAuthentication  //@RequiresPermissions("learning:project:page")
liqin's avatar
liqin committed
667
    @ApiOperation(value = "展板参考资料分页查询", notes = "展板参考资料分页查询")
liqin's avatar
liqin committed
668
    public Map<String, Object> getBoardRefMaterial(@PathVariable(value = "boardId") String boardId) {
liqin's avatar
liqin committed
669
        final ExhibitionBoard exhibitionBoard = this.exhibitionBoardService.getById(boardId);
liqin's avatar
liqin committed
670
        final LambdaQueryWrapper<Asset> assetQueryWrapper = Wrappers.<Asset>lambdaQuery().eq(Asset::getRefItemId, exhibitionBoard.getId());
liqin's avatar
liqin committed
671
        assetQueryWrapper.eq(Asset::getPublished, true);
liqin's avatar
liqin committed
672
        assetQueryWrapper.eq(Asset::getFileCat, FileCatEnum.EXHIBITION_BOARD_DATUM.name());
liqin's avatar
liqin committed
673
        final Page<Asset> datumList = this.assetService.page(this.getPage(), assetQueryWrapper);
liqin's avatar
liqin committed
674
        return getResult(datumList);
liqin's avatar
liqin committed
675 676 677 678 679
    }

    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
liqin's avatar
liqin committed
680
            @ApiImplicitParam(name = "learningContentId", value = "学习内容ID", paramType = "query", dataType = "String"),
liqin's avatar
liqin committed
681 682 683
            @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String")
    })
    @PostMapping("/exhibitionBoard/search")
wzp's avatar
wzp committed
684
    @RequiresAuthentication  //@RequiresPermissions("learning:content:board:page")
liqin's avatar
liqin committed
685
    @ApiOperation(value = "模糊搜索查询", notes = "模糊搜索查询")
liqin's avatar
liqin committed
686 687
    public Map<String, Object> getLearningContentBoardPageList(GenericPageParam genericPageParam,
                                                               @RequestParam(value = "learningContentId", required = false) String learningContentId) {
liqin's avatar
liqin committed
688
        IPage<ExhibitionBoard> page = this.learningContentBoardService.getBoardPageByLearningContentId(getPage(), learningContentId, genericPageParam.getNameOrCode());
liqin's avatar
liqin committed
689 690 691
        return getResult(page);
    }

liqin's avatar
liqin committed
692 693 694 695 696
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
    })
    @PostMapping("/asset/search")
wzp's avatar
wzp committed
697
    @RequiresAuthentication  //@RequiresPermissions("learning:content:board:page")
liqin's avatar
liqin committed
698 699 700
    @ApiOperation(value = "获取当前用户可查看的视频信息", notes = "获取当前用户可查看的视频信息")
    public Map<String, Object> getAssetPageByOrganId() {
        final TUser tUser = getcurUser();
liqin's avatar
liqin committed
701 702 703 704 705
        if (tUser != null && tUser.getOrgCode() != null) {
            final String orgCode = tUser.getOrgCode();
            IPage<Asset> page = this.learningContentBoardService.getAssetPageByOrganCode(getPage(), orgCode);
            return getResult(page);
        }
liqin's avatar
liqin committed
706
        return getFailResult("1109", "账号认证失败");
liqin's avatar
liqin committed
707 708
    }

yangtianyou's avatar
yangtianyou committed
709 710 711 712 713
    @ApiOperation(value = "app最新版本查询")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "versionNo", value = "app版本号", dataType = "String", paramType = "query")
    })
    @GetMapping(value = "/version/check")
wzp's avatar
wzp committed
714
    @RequiresAuthentication  //@RequiresPermissions("app:version:check")
liqin's avatar
liqin committed
715
    public Map<String, Object> versionCheck(String versionNo) {
yangtianyou's avatar
yangtianyou committed
716 717 718
        TAppVersion current = new TAppVersion();//当前版本
        // 查询最新版本号信息
        QueryWrapper<TAppVersion> qw = new QueryWrapper<>();
liqin's avatar
liqin committed
719
        qw.eq("is_current", 1);
yangtianyou's avatar
yangtianyou committed
720 721
        qw.select().orderByDesc("update_time");
        List<TAppVersion> currentList = appVersionService.list(qw);
liqin's avatar
liqin committed
722
        if (currentList == null || currentList.size() == 0) {
yangtianyou's avatar
yangtianyou committed
723
            return getFailResult("未设置当前版本信息");
liqin's avatar
liqin committed
724
        } else {
yangtianyou's avatar
yangtianyou committed
725 726 727
            current = currentList.get(0);
        }
        Map map = new HashMap();
liqin's avatar
liqin committed
728 729

        if (StringUtils.isNotBlank(versionNo)) {
liqin's avatar
liqin committed
730 731 732 733 734 735 736 737 738 739 740 741
            final String[] versionNoArray = StringUtils.split(versionNo, ".");
            final String[] currentVersionNoArray = StringUtils.split(current.getAppVersion(), ".");
            if (Integer.parseInt(versionNoArray[0]) >= Integer.parseInt(currentVersionNoArray[0])) {
                if (Integer.parseInt(versionNoArray[1]) >= Integer.parseInt(currentVersionNoArray[1])) {
                    if (Integer.parseInt(versionNoArray[2]) >= Integer.parseInt(currentVersionNoArray[2])) {
                        map.put("isLatest", true);
                    } else {
                        map.put("isLatest", false);
                    }
                } else {
                    map.put("isLatest", false);
                }
liqin's avatar
liqin committed
742 743
            } else {
                map.put("isLatest", false);
liqin's avatar
liqin committed
744
            }
liqin's avatar
liqin committed
745
        } else {
liqin's avatar
liqin committed
746
            map.put("isLatest", false);
liqin's avatar
liqin committed
747
        }
wzp's avatar
wzp committed
748 749 750
        map.put("versionNo", current.getAppVersion());
        map.put("versionUrl", current.getApkUrl());
        map.put("updateLog", current.getUpdateLog());
751
        map.put("updateTime", current.getUpdateTime());
yangtianyou's avatar
yangtianyou committed
752 753
        return getResult(map);
    }
liqin's avatar
liqin committed
754

yangtianyou's avatar
yangtianyou committed
755 756
    @ApiOperation(value = "app界面图片查询")
    @GetMapping(value = "/app/picSelect")
wzp's avatar
wzp committed
757
    //@RequiresAuthentication  //@RequiresPermissions("app:pic:select")
liqin's avatar
liqin committed
758
    public Map<String, Object> appPicSelect() {
yangtianyou's avatar
yangtianyou committed
759 760 761 762
        TAppDirPic currentDir = null;// 当前目录页面
        TAppRunPic currentRun = null;// 当前运行画面
        // 查询当前目录界面信息
        QueryWrapper<TAppDirPic> qw = new QueryWrapper<>();
liqin's avatar
liqin committed
763
        qw.eq("is_current", 1);
yangtianyou's avatar
yangtianyou committed
764 765
        qw.select().orderByDesc("create_time");
        List<TAppDirPic> currentDirList = appDirPicService.list(qw);
liqin's avatar
liqin committed
766
        if (currentDirList != null && currentDirList.size() > 0) {
yangtianyou's avatar
yangtianyou committed
767 768 769
            currentDir = currentDirList.get(0);
        }
        QueryWrapper<TAppRunPic> qw1 = new QueryWrapper<>();
liqin's avatar
liqin committed
770
        qw1.eq("is_current", 1);
yangtianyou's avatar
yangtianyou committed
771 772
        qw1.select().orderByDesc("create_time");
        List<TAppRunPic> currentRunList = appRunPicService.list(qw1);
liqin's avatar
liqin committed
773
        if (currentRunList != null && currentRunList.size() > 0) {
yangtianyou's avatar
yangtianyou committed
774 775
            currentRun = currentRunList.get(0);
        }
liqin's avatar
liqin committed
776

yangtianyou's avatar
yangtianyou committed
777
        Map map = new HashMap();
wzp's avatar
wzp committed
778 779
        map.put("dirImgUrl", currentDir != null ? currentDir.getAppDirPic() : "未设置目录图片");
        map.put("runImgUrl", currentRun != null ? currentRun.getAppRunPic() : "未设置运行图片");
yangtianyou's avatar
yangtianyou committed
780 781
        return getResult(map);
    }
liqin's avatar
liqin committed
782
}